0
我想在Swing中做一個動態表單。當我首先調用dataShow
方法時,它會創建GUI。但是當我再次調用它時,它會保留舊面板並在後臺顯示新的面板。如何刷新JPanel?
而當我嘗試刪除當前面板,然後添加新的。 GUI變空了
A Thread
監聽事件(在這種情況下是int id)。
這裏是我的代碼以顯示動態表單:
public void showData(int id) throws DAOException, ClassNotFoundException{
FormDAOImpl form = new FormDAOImpl();
String b = form.importTagPoint(id);
//if(compteur%2 == 0) {System.out.println("Compteur : " +compteur); scrollPane.remove(panel);
//frame.getContentPane().remove(scrollPane);
//}
panel = new JPanel(new MigLayout());
if(b == null) b = "";
String[] bits = b.split("\\,");
String delims = "[=]";
while(i<bits.length){
textField = new JTextField();
String[] bitsS = bits[i].split(delims);
textField.setText(bitsS[1]);
JLabel label = new JLabel(bitsS[0]+ " : ");
panel.add(label);
panel.add(textField, "span, grow, alignx center, flowx");
i++;
}
JButton annuler = new JButton("Annuler");
JButton enregistrer = new JButton("Enregistrer");
panel.add(annuler);
panel.add(enregistrer);
panel.revalidate();
panel.repaint();
scrollPane = new JScrollPane(panel);
scrollPane.revalidate();
scrollPane.repaint();
frame.getContentPane().add(scrollPane);
//frame.repaint();
frame.invalidate();
frame.validate();
frame.repaint();
frame.pack();
frame.setMaximumSize(new Dimension(300, 800));
compteur++;
}
+1「CardLayout或JTabbedPane中」我認爲這將是更好的選擇 –
正如我所說的,在添加任何新東西之前,我嘗試了frame.getContentPane()。removeAll(),但在第二次調用之後,gui變空了。 – willyRG
好吧,我會嘗試CardLayout和JTabbedPane。謝謝 – willyRG