如何刷新或重新加载JFrame?

我正在使用Java做项目,因为我需要在点击该JFrame上的特定按钮后重新加载整个JFrame 。 这个怎么做?

尝试

 SwingUtilities.updateComponentTreeUI(frame); 

如果它仍然不起作用,那么在完成上述步骤后尝试

 frame.invalidate(); frame.validate(); frame.repaint(); 

只需使用frame.setVisible(false); frame.setVisible(真); 我用JLabels和图像有这个问题,这解决了它

您应该使用此代码

 this.setVisible(false); //this will close frame ie NewJFrame new NewJFrame().setVisible(true); // Now this will open NewJFrame for you again and will also get refreshed 

试试这个代码。 我也面临同样的问题,但有些我如何解决它。

 public class KitchenUserInterface { private JFrame frame; private JPanel main_panel, northpanel , southpanel; private JLabel label; private JButton nextOrder; private JList list; private static KitchenUserInterface kitchenRunner ; public void setList(String[] order){ kitchenRunner.frame.dispose(); kitchenRunner.frame.setVisible(false); kitchenRunner= new KitchenUserInterface(order); } public KitchenUserInterface getInstance() { if(kitchenRunner == null) { synchronized(KitchenUserInterface.class) { if(kitchenRunner == null) { kitchenRunner = new KitchenUserInterface(); } } } return this.kitchenRunner; } private KitchenUserInterface() { frame = new JFrame("Lullaby's Kitchen"); main_panel = new JPanel(); main_panel.setLayout(new BorderLayout()); frame.setContentPane(main_panel); northpanel = new JPanel(); northpanel.setLayout(new FlowLayout()); label = new JLabel("Kitchen"); northpanel.add(label); main_panel.add(northpanel , BorderLayout.NORTH); frame.setSize(500 , 500 ); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } private KitchenUserInterface (String[] order){ this(); list = new JList(order); main_panel.add(list , BorderLayout.CENTER); southpanel = new JPanel(); southpanel.setLayout(new FlowLayout()); nextOrder = new JButton("Next Order Set"); nextOrder.addActionListener(new OrderUpListener(list)); southpanel.add(nextOrder); main_panel.add(southpanel, BorderLayout.SOUTH); } public static void main(String[] args) { KitchenUserInterface dat = kitchenRunner.getInstance(); try{ Thread.sleep(1500); System.out.println("Ready"); dat.setList(OrderArray.getInstance().getOrders()); } catch(Exception event) { System.out.println("Error sleep"); System.out.println(event); } } }