Arv*_*nem 5 java swing listeners structure
我的问题可以归结为:它是Swing编程中的标准结构,它允许侦听器控制新组件(例如新的JPanel)以进行显示和输入,并使新组件的侦听器控制新组件以进行显示和输入,等等到无穷大?或者Java是否需要恢复到某种统一类,它将所有Swing组件按程序顺序连接在一起?
目前,在我的应用程序中仅使用一个JFrame,在我的侦听器中,我的初始JFrame对象作为参数传递给我的所有JPanel,因此他们的侦听器可以调用removeall()来清除新JPanel的帧.例如,短代码如下
public class MainFrame {
JFrame jfrm;
public MainFrame() {
jfrm = new JFrame("Main Frame");
JPanel mainPanel = new MainPanel(jfrm);
}
}
public class MainPanel extends JPanel {
public MainPanel(final JFrame mainFrame) {
JButton example = new JButton("Example");
example.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent le) {
mainFrame.removeall();
JPanel 2ndPanel = new 2ndPanel(mainFrame);
mainFrame.add(2ndPanel);
mainFrame.validate();
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
这是正确的结构 - 在哪里产生新面板的听众而不是一些统一的类?但是,如果是这样的话,如果有一个级联无限的侦听器,Java的编译器如何获得mainFrame.validate()?我是一个老派程序程序员,试图用Java编写Swing应用程序,我想我可能没有掌握Swing编程的基本概念.期待任何有用的答案,并提前感谢!
我不会那样做。观察者模式在 Swing 中用于发送通知,通常是用户操作的结果。
举个例子:用户“单击”按钮,因为他想要在 MainFrame 中创建一个新面板。但按钮不知道点击后会做什么。他所能做的就是通知事件侦听器它已被选择。
所以我们需要一些对通知感兴趣的组件。该组件可以向按钮注册监听器并接收通知。听者是其他组件“耳朵”(或者“眼睛”)。但耳朵(或眼睛)不会采取行动。它只是其他组件传感器。
这让我们回到了主要问题:谁想要被告知,如果按钮被点击,谁必须采取行动。这是一个主要的设计问题。它绝对不是创建面板并将其添加到主框架的侦听器。它可以是创建和添加子面板的主框架角色,也可以是负责创建带有子面板的框架的第三个组件的角色。
但监听器对于这段代码来说是一个不好的地方。
| 归档时间: |
|
| 查看次数: |
1030 次 |
| 最近记录: |