我的程序有設計問題。JFrame顯示不正確
首先顯示帶有組合框的Jframe。組合框中填充您選擇的城鎮名稱並點擊搜索。
程序然後顯示一個jtable與表中的值。它會生成Jtable和信息,但是jframe本身顯示爲沒有設置大小參數,直到您通過將其拖動到右下角手動增加大小,纔會顯示任何內容。
這裏是什麼我做錯了JTable中
public class Display_All extends JFrame
{
public Display_All(Object town)
{
Vector columnNames = new Vector();
Vector data = new Vector();
try
{
// Connect to an Access Database
String driver = "com.mysql.jdbc.Driver";
String url ="jdbc:mysql://localhost:3306/ire";
String userid = "root";
String password = "password";
Class.forName(driver);
Connection connection = DriverManager.getConnection(url, userid, password);
// Read data from a table
String sql = "(SELECT Activities_Name, Activities_Email,Activities_Address_1, Town, Activities_Phone ,Activities_Mobile, Activities_Web_Address, Activities_Owner FROM activities WHERE Town ='"+town+"')"
+ "UNION ALL (SELECT Attraction_Name, Attraction_Email, Attraction_Address_1, Town, Attraction_Phone, Attraction_Mobile, Attraction_Web_Address, Attraction_Owner FROM attractions WHERE Town = '"+town+"')"
+ "UNION ALL (SELECT BB_Name, BB_Email, BB_Address_1 ,Town, BB_Phone, BB_Mobile, BB_Web_Address, BB_Owner FROM bb WHERE Town = '"+town+"')"
+ "UNION ALL (SELECT Hotel_Name ,Hotel_Email ,Hotel_Address_1, Town, Hotel_Phone, Hotel_Mobile, Hotel_Web_Address, Hotel_Owner FROM hotels WHERE Town = '"+town+"')"
+ "UNION ALL (SELECT Pub_Name, Pub_Email ,Pub_Address_1, Town, Pub_Phone ,Pub_Mobile, Pub_Web_Address, Pub_Owner FROM pubs WHERE Town = '"+town+"')"
+ "UNION ALL (SELECT Restaurant_Name, Restaurant_Email, Restaurant_Address_1, Town, Restaurant_Phone, Restaurant_Mobile, Restaurant_Web_Address, Restaurant_Owner FROM restaurant WHERE Town = '"+town+"')"
+ "UNION ALL (SELECT Self_Catering_Name, Self_Catering_Email, Self_Catering_Address_1, Town, Self_Catering_Phone, Self_Catering_Mobile, Self_Catering_Web_Address, Self_Catering_Owner FROM self_catering WHERE Town = '"+town+"')";
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(sql);
ResultSetMetaData md = rs.getMetaData();
int columns = md.getColumnCount();
// Get column names
columnNames.addElement("Business Name");
columnNames.addElement("Email");
columnNames.addElement("Address 1");
columnNames.addElement("Town");
columnNames.addElement("Phone");
columnNames.addElement("Mobile");
columnNames.addElement("Web Address");
columnNames.addElement("Owner");
// Get row data
while (rs.next())
{
Vector row = new Vector(columns);
for (int i = 1; i <= columns; i++)
{
row.addElement(rs.getObject(i));
}
data.addElement(row);
}
rs.close();
stmt.close();
connection.close();
}
catch(Exception e)
{
System.out.println(e);
}
// Create table with database data
JTable table = new JTable(data, columnNames)
{
public Class getColumnClass(int column)
{
for (int row = 0; row < getRowCount(); row++)
{
Object o = getValueAt(row, column);
if (o != null)
{
return o.getClass();
}
}
return Object.class;
}
};
JScrollPane scrollPane = new JScrollPane(table);
getContentPane().add(scrollPane);
// JPanel buttonPanel = new JPanel();
// getContentPane().add(buttonPanel, BorderLayout.SOUTH);
}
public static void main(String[] args)
{
Display_All frame = new Display_All("town");
frame.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
frame.setPreferredSize(new Dimension(400, 300));
frame.setVisible(true);
}
public void run() {
new Display_All("town").setVisible(true);
}
}
任何人都可以闡明的代碼?
我已經嘗試了很多不同的事情,試圖達到這個底部,但該程序似乎沒有迴應我放入它的任何東西?
它很難解釋我會顯示圖片,但我的名聲太低。
感謝
也許'包()'可以幫助您 - > [JDoc](http://docs.oracle.com/javase/6/docs/api/java/awt/Window.html#pack%28 %29)。 – Eich 2013-04-23 13:34:34
不要爲此使用JFrame。一個應用程序應該只有一個主JFrame。其他子窗口應該是指定爲主框架的主框架的JDialog。 – camickr 2013-04-23 15:14:56