清除JFrame组件并添加新组件

清除JFrame组件并添加新组件,第1张

清除JFrame组件并添加新组件

解决方案很简单:使用CardLayout并让此布局管理器为您完成所有繁重的工作。有关如何执行此 *** 作的更多详细信息,请参见教程:如何使用CardLayout。

至于您的代码,请注意,实际上它在启动时实际上创建了两个Jframe,如果按下JButton,则另外创建了两个:

Guiframe类本身扩展了Jframe,但它似乎是您从未使用过的Jframe,因此被浪费了,但是无论如何,它是在程序启动时以及每当创建Guiframe实例(例如按下按钮)时创建的。然后在该类内部创建另一个Jframe
f,一个在程序启动时,再一次在按下按钮时,我认为这不是您想要的。

因此,请更改代码,以使该类不扩展Jframe,并且不要在按钮的ActionListener中创建该类的新实例。而是使用CardLayout交换视图。

例如:

import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.*;public class Guiframe {   private static final String FIRST_PANEL = "First Panel";   private static final String SECOND_PANEL = "Second Panel";   final Jframe f = new Jframe("Test");   private CardLayout cardLayout = new CardLayout();   private JPanel content;   public void Starter() {      f.setSize(400, 100);      f.setLocationRelativeTo(null);      JButton OptionOk = new JButton("OK");      Label option = new Label("Choose a Option");      content = (JPanel) f.getContentPane();      content.setLayout(cardLayout);      JPanel firstPanel = new JPanel();      firstPanel.setBackground(Color.white);      firstPanel.setLayout(new FlowLayout());      firstPanel.add(option);      firstPanel.add(OptionOk);      content.add(firstPanel, FIRST_PANEL);      content.add(createSecondPanel(), SECOND_PANEL);      f.setVisible(true);      f.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);      OptionOk.addActionListener(new ActionListener() {         public void actionPerformed(ActionEvent e) { cardLayout.show(content, SECOND_PANEL);         }      });   }   private JPanel createSecondPanel() {      JPanel secondPanel = new JPanel();      secondPanel.add(new JButton(new AbstractAction("Go Back") {         public void actionPerformed(ActionEvent e) { cardLayout.show(content, FIRST_PANEL);         }      }));      return secondPanel;   }   public static void main(String[] args) {      Guiframe gf = new Guiframe();      gf.Starter();   }}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5478648.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存