【问题标题】:Java - Add/Remove JPanel classesJava - 添加/删除 JPanel 类
【发布时间】:2014-10-05 10:18:36
【问题描述】:

我正在尝试让 JPanel 从一个交换到另一个。听起来很简单,但由于我的面板都在不同的类中,我很挣扎。

我有 4 个课程: - GUI(主类) - BankingAppMainFrame(JFrame 类) - BankingAppStartPanel(JPanel 类)

这是我的相关 JFrame 代码:

//This is the only way i didn't get errors xD
public void panelSwap(JFrame z, JPanel x, JPanel y) {
    z.remove(x);
    z.add(y);
}

这是我的相关 BankingAppStartPanel 代码:

LoginButton.addActionListener(new ActionListener() {

    @Override
    public void actionPerformed(ActionEvent event) {

        //I thought I'd need to instance all my classes

        BankingAppMainFrame mainFrame = new BankingAppMainFrame();
        BankingAppStartPanel startPanel = new BankingAppStartPanel();
        BankingAppLoginPanel loginPanel = new BankingAppLoginPanel();

        //This is calling the panelSwap method from the main Class

        mainFrame.panelSwap(mainFrame, startPanel, loginPanel);
    }
});

BankingAppLoginPanel 目前只是一个空白面板,直到我可以让它工作为止。

我要做的是删除当前面板(在本例中为“BankingAppStartPanel”并将其替换为“BankingAppLoginPanel”。

【问题讨论】:

  • 你不知道重新考虑你的方法吗?为什么你想做那样的事情?

标签: java swing jframe jpanel


【解决方案1】:
//This is the only way i didn't get errors xD
public void panelSwap(JFrame z, JPanel x, JPanel y) {
    z.remove(x);
    z.add(y);
}
  • LayoutManager 没有在 API 中实现任何通知程序来通知可见 Swing GUI 的变化,您必须通过调用 z.revalidate()z.repaint() 以编程方式通知

  • 在您也需要更改JFrames 边界的情况下,调用JFrame.pack() 有快捷方式


  • 在需要更改JFrames 边界的情况下使用CardLayoutJFrame.pack()

【讨论】:

  • 谢谢,我想我会尝试使用 CardLayout
【解决方案2】:

如果您打算继续使用这种“交换”面板方法,您最好尝试使用Card Layout

【讨论】:

  • 干杯!我去看看。
猜你喜欢
  • 2012-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-05
相关资源
最近更新 更多