【问题标题】:Switching between JPanel Forms in Java Frame在 Java Frame 中切换 JPanel 窗体
【发布时间】:2016-04-22 15:42:38
【问题描述】:

我在 JPanel 上苦苦挣扎。我想有 1 个框架,我在其中放置 1 个 MainJPanel,然后添加一些 JPanel 表单,将其设置为我的 MainJPanel 的源。 然后在 JPanel Forms 之间切换

我的 Main.java 框架中有这个:

public class Main extends javax.swing.JFrame {
    PanelForm1 p1 = new PanelForm1();
    PanelForm2 p2 = new PanelForm2();
    GridBagLayout layout = new GridBagLayout();
    GridBagConstraints c = new GridBagConstraints();

    public Main() {
        initComponents();
        MainJPanel.setLayout(layout);
        c.gridx = 0;
        c.gridy = 0;
        MainJPanel.add(p1,c);
        c.gridx = 0;
        c.gridy = 0;
        MainJPanel.add(p2,c);
        m.p1.setVisible(true);
        m.p2.setVisible(false);
    }
}

在 PanelForm1.java 中,我的 ButtonClick 试图显示 Panel2Form。

public class Panel1 extends javax.swing.JPanel {

    public Panel1() {
        initComponents();    
    }

    private void ButtonGoToPanel2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        Main m = new Main();
        m.p1.setVisible(false);
        m.p2.setVisible(true);
    }  
}

Panel2Form.java 很可能是一样的。

我能做到的唯一方法是在 Main.java 中设置按钮,但我不想拥有始终可见的按钮。

我知道,当我创建一个类对象 Main m = new Main(); 时,我创建了一个 p1p2 等的新副本,所以我什么都不做。

有人可以帮忙吗?还是有另一种更好的方法来做到这一点? 我不想把所有东西都放在一个文件里,因为它不会很清楚,而且像 CardLayout 这样的每一种方法都不会去,因为我不想总是有按钮来切换 JPanel 表单。

【问题讨论】:

    标签: java swing jframe jpanel layout-manager


    【解决方案1】:

    然后在JPanel Forms之间切换

    所以你应该使用CardLayout。有关工作示例,请参阅 How to Use CardLayout 上的 Swing 教程部分。

    我能做到的唯一方法是在 Main.java 中设置按钮,但我不想拥有始终可见的按钮

    好吧,面板不会自行切换,因此您需要处理某种事件来启动面板交换:

    1. 用户点击菜单项
    2. 用户点击按钮
    3. 用户输入击键
    4. 应用程序切换面板

    然后,您将子面板中的参数传递到主面板,指示您要显示哪个面板。

    我不想将所有内容都放在一个文件中,因为它不会一目了然

    没有必要将所有内容都放在一个文件中。子面板需要能够访问父面板。

    一种方法是传递参数:

    JPanel main = new JPanel();
    JPanel child1 = new ChildPanel(main);
    main.add(child1);
    JPanel child2 = new ChildPanel(main);
    main.add(child2);
    

    而且像 CardLayout 这样的每个方法都不会去,因为我不想总是有按钮来切换 JPanel 表单

    是的,您可以使用CardLayout。不,你不需要按钮。您所需要的只是要显示的“面板名称”。然后你用 CardLayout 通知面板。

    【讨论】:

    • 还有 JTabbedPane,它允许用户切换面板。
    猜你喜欢
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 2016-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-22
    • 2012-12-09
    相关资源
    最近更新 更多