gpt4 book ai didi

java - 尝试在单击“取消”按钮时处理扩展 JXPanel 的类

转载 作者:行者123 更新时间:2023-12-02 05:06:44 26 4
gpt4 key购买 nike

我需要在单击Cancel按钮时处理一个扩展JXPanel的类,似乎找不到任何方法。

我有一个 A 类,有按钮 A单击按钮 A 后,B 类将被调用。B类有一个显示所有内容的显示方法,并调用C类

class A : in actionPerformed() 
if (e.getSource().equals(buttonA )){
try {
new ClassB(parent);
} catch (BusinessException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}

In class B


private void display() throws BusinessException{
dialog = new JDialog(parent, "Dialog");
dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
dialog.setContentPane(createContentPane());
dialog.setModal(true);
//dialog.setBackground(Color.WHITE);
dialog.setMinimumSize(new Dimension(1190, 200));
//dialog.setMaximumSize(new Dimension(1190, 500));
dialog.pack();
dialog.setLocationRelativeTo(parent);
dialog.setVisible(true);
}

in createContentPane()

public JPanel createContentPanel() throws BusinessException{
JPanel panel = new JPanel(new CardLayout());
panel.setBackground(Color.WHITE);

panel.add("New Dialog", new ClassC(parent));

return panel;
}

现在我在 ClassC 中有取消按钮,单击此 Class C 时我需要关闭 ClassB 的对话框

最佳答案

首选的解决方案是定义某种类型的 Controller ,您可以将其传递给类 C,它可以使用它来提供某些操作的通知,例如取消操作。

Controller 将负责根据操作/事件确定应该做什么

这是 Model-View-Controller 的示例

另一个解决方案是允许对话框控制取消(以及其他相关的用户操作)本身,因为取消对于类 C 并不总是有意义,您要么使用该类生成的值,要么不使用,管理这个不应该是 C 类的责任(这就是模型的作用)

另一种解决方案是将对话框的引用传递给类 C,但这会在对话框和类之间产生紧密耦合,并不必要地公开对话框

另一个解决方案是使用 SwingUtilities.windowForComponent,它允许您获取对包含该类的窗口的引用,但这对如何使用该类做出了假设

关于java - 尝试在单击“取消”按钮时处理扩展 JXPanel 的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27738210/

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