【问题标题】:Change Jframe content without opening a new frame在不打开新框架的情况下更改 Jframe 内容
【发布时间】:2015-02-26 10:03:13
【问题描述】:

我有一个打开 Jframe 的程序。在这个 Jframe 中,我有一个按钮,可以打开另一个也有 Jframe 的类。有什么办法可以获取新的类,新的gui在与第一个相同的帧中打开,并删除第一帧中的现有内容?

这是第一堂课:

public class FirstFrame {

public FirstFrame() {

JFrame frame = new JFrame();
    frame.setTitle("Title");
    frame.setLayout(new BorderLayout());
    frame.setSize(500,350);
    frame.setResizable(false);
    frame.setLocationRelativeTo(null);

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    // Code for a button, that has an actionlistener wich opens the next
    //class

    frame.setVisible(true);
    frame.setResizable(false);
     }



    public static void main(String[] args){


    new FirstFrame();

  }
}

第二节课差不多就是这个。这两个框架之间的区别在于它们具有不同的内容。 当我运行我的程序时,一切正常,但我得到了两个窗口。此外,它在任务管理器中表示这两个框架作为两个不同的程序运行。

有没有办法让框架的内容甚至名称发生变化,而不必处理两个不同的框架?

【问题讨论】:

  • 使用CardLayout,如this answer 所示。当然,该建议假定内容被放入一组 JComponent 对象(通常是 JPanel)中。

标签: java swing jframe window


【解决方案1】:

您可以更改JFrame 的内容窗格。假设您有两个JComponents,分别称为ab。你初始化你的框架:

JFrame frame = new JFrame();
frame.setContentPane(a);

然后你就可以打电话了

frame.setContentPane(b);

改变内容。您可能还需要调用revalidaterepaint 来刷新框架。

在下面的示例中,按下按钮会将JFrame 的内容从单个JButton a 更改为JLabel b。您可以使用任何JComponent 代替,例如包含多个JComponents 的JPanel

public static void main(String[] args) {
    final JFrame frame = new JFrame();
    frame.setTitle("Title");
    frame.setSize(500, 350);
    frame.setResizable(false);
    frame.setLocationRelativeTo(null);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JButton a = new JButton("button A");
    frame.setContentPane(a);

    frame.setVisible(true); // calling setVisible after content pane has been set to refresh a frame

    a.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            JComponent b = new JLabel("label B");
            frame.setContentPane(b);
            frame.revalidate();
        }
    });
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多