gpt4 book ai didi

java - 多个 JFrame

转载 作者:行者123 更新时间:2023-11-29 02:59:12 24 4
gpt4 key购买 nike

我正在制作一个处理客户订单的应用程序(在 Java 中)。我的程序有 3 个 JFrame 窗口(是的,我知道使用多个框架不是一个好主意,但它们并没有真正相互连接)。

  1. 主要的:在这里你选择你是什么(客户或运算符(operator))
  2. 客户 JFrame
  3. 运算符JFrame

客户下订单后(主框架>客户框架>完成订单(按钮)。我正在做这样的事情:

customerframe.dispose();
customerframe.revalidate();
customerframe.repaint();
reloadframe(); ///a method which reinitializes the frame (Note: I am doing a frame=new JFrame() here)
mainframe.setVisible(true);

我再次选择 customer 它打开了 customerframe 但问题是监听器不再工作了,我猜他们以某种方式仍然连接到旧框架或其他东西。

我已经尝试让它工作几个小时了......

最佳答案

您不应该使用多个 JFrames 请参阅 this链接以获取更多信息。

相反,我建议您使用 CardLayout如此处所示:

import javax.swing.*;
import java.awt.*;

public class MainFrame
{
static JPanel homeContainer;
static CardLayout cl;

JPanel homePanel;
JPanel otherPanel;


public MainFrame()
{
JFrame mFrame = new JFrame("CardLayout Example");
JButton showOtherPanelBtn = new JButton("Show Other Panel");
JButton backToHomeBtn = new JButton("Show Home Panel");

cl = new CardLayout(5, 5);
homeContainer = new JPanel(cl);
homeContainer.setBackground(Color.black);

homePanel = new JPanel();
homePanel.setBackground(Color.blue);
homePanel.add(showOtherPanelBtn);

homeContainer.add(homePanel, "Home");

otherPanel = new JPanel();
otherPanel.setBackground(Color.green);
otherPanel.add(backToHomeBtn);

homeContainer.add(otherPanel, "Other Panel");

showOtherPanelBtn.addActionListener(e -> cl.show(homeContainer, "Other Panel"));
backToHomeBtn.addActionListener(e -> cl.show(homeContainer, "Home"));

mFrame.add(homeContainer);
cl.show(homeContainer, "Home");
mFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
mFrame.setLocationRelativeTo(null);
mFrame.setExtendedState(JFrame.MAXIMIZED_BOTH);
mFrame.pack();
mFrame.setVisible(true);
}

public static void main(String[] args)
{
SwingUtilities.invokeLater(MainFrame::new);
}
}

使用 Cardlayout,您可以在 JPanel 之间切换。这样,您不必创建新的 JFrame,只需显示新内容即可。基本上,您有某种容器(可能是 JFrame 或可能是 JPanel),然后,当您添加您创建的其他面板时,您给它们一个名字。然后,您可以使用 cardLayout.show(container, "Name");

在面板之间切换

关于java - 多个 JFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36105898/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com