当我执行try和Catch功能时,我无法在我的Jframe中添加JPanels我已经尝试在每次尝试或捕获时添加我的面板但是它不好请帮助我! PS。它仅在我在try函数
之前执行frame.add(new Product("lol"));
时才有效
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
frame.setVisible(true);
frame.setSize (new Dimension (704, 454));
GridLayout layout = new GridLayout(3, 3, 41, 10);
String shit = null;
frame.setLayout (layout);
try{
//STEP 2: Register JDBC driver
Class.forName("com.mysql.jdbc.Driver");
//STEP 3: Open a connection
System.out.println("Connecting to a selected database...");
conn = DriverManager.getConnection(DB_URL, USER, PASS);
System.out.println("Connected database successfully...");
stmt= conn.createStatement();
ResultSet rs;
rs = stmt.executeQuery("select productName from product");
rs.next();
String name = rs.getString("productName");
System.out.println(name);
shit = name;
}catch(SQLException se){
//Handle errors for JDBC
se.printStackTrace();
}catch(Exception e){
//Handle errors for Class.forName
e.printStackTrace();
}finally{
//finally block used to close resources
try{
if(stmt!=null)
conn.close();
}catch(SQLException se){
}// do nothing
try{
if(conn!=null)
conn.close();
}catch(SQLException se){
se.printStackTrace();
}//end finally try
}//end try
System.out.println("Goodbye!");
frame.revalidate();
frame.repaint();
frame.add(new Product("lol"));
}
}
产品类
public Product(String name){
JLabel label1 = new JLabel(name);
add(label1);
setBorder(blackline);
}
答案 0 :(得分:1)
您需要在添加组件后致电repaint()
和revalidate()
,以便更改此代码
frame.revalidate();
frame.repaint();
frame.add(new Product("lol"));
到这个
frame.add(new Product("lol"));
frame.revalidate();
frame.repaint();