如何刷新或重新加载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); } } }