gpt4 book ai didi

java - 显示 JFrame 作为 JButton 单击的结果?

转载 作者:行者123 更新时间:2023-11-30 03:40:17 24 4
gpt4 key购买 nike

我正在尝试创建一个JPanel,以便在用户单击主JFrame 中的按钮时显示。在 Netbeans 中,我首先使用向导将新的 JPanel 添加到我的项目中,然后使用 GUI 创建器填写所有内容。我不尝试使用以下代码显示 JPanel

private void m_jbShowSelAccResultsActionPerformed(java.awt.event.ActionEvent evt)
{
Account selAcc = getSelectedAccount();
if(selAcc != null)
{
AccountView accPanel = new AccountView(Account.getDeepCopy(selAcc));
accPanel.setVisible(true);
}
else
ShowMessage("Please select an account to view");
}

但是没有任何反应,没有抛出错误,并且 JPanel 没有显示。因此,我随后将 JPanel 更改为 JFrame (Netbeans 没有提示)。当我使用相同的代码再次尝试时,我收到错误GroupLayout can only be used with one Container at a time

如何显示我的 JPanel/JFrame

最佳答案

  1. 要更改 Swing GUI 中的 View ,请使用 CardLayout因为这是一种更强大、更可靠的方法。
  2. 不要试图盲目地“将 JPanel 改为 JFrame”。看起来您只是在这里猜测。
  3. GroupLayout 无法重复使用,因为错误消息告诉您。这个错误可能来自上面的一点。如果您避免尝试从 JPanel 中创建 JFrame,则错误消息可能会消失。顺便说一句,GroupLayout 不容易手动使用,特别是当您尝试将组件添加到已呈现的 GUI 时。

例如,如果您的程序有一个称为cardHolderPanel的JPanel,它使用了一个CardLayout,它由一个称为cardLayout的变量保存,并且您已经向该帐户添加了一个“卡”JPanel,例如称为accPanel,如果 accPanel 有一个方法来设置其当前显示的帐户,例如 setAccount(Accoint a) ,您可以通过调用 CardLayout show(...) 轻松交换 View 方法,类似于:

private void m_jbShowSelAccResultsActionPerformed(java.awt.event.ActionEvent evt) {                                                      
Account selAcc = getSelectedAccount();

if(selAcc != null) {
accPanel.setAccount(Account.getDeepCopy(selAcc));
cardLayout.show(cardHolderPanel, "Account View");
}
else {
showErrorMessage("Please select an account to view");
}
}

关于java - 显示 JFrame 作为 JButton 单击的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26962309/

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