Java子对象运行父对象的方法

标签 java swing class user-interface

我决定使用 BorderLayout 进行名为 Loginwards 的 Swing 设计。我为 BorderLayout 的 5 个边编写了 5 个类,分别为 PageStart、LineStart、Center、LineEnd、PageEnd。

我没有装饰Loginwards,并设计了PageStart以供使用最小化,调整大小,退出。(对于我自己的图像,规则......)按钮退出很简单,因为它的工作原理是这样的

button.addActionListener(new ActionListener() {
    @Override
        public void actionPerformed(ActionEvent arg0) {
            System.exit(0);

        }
    });

但是例如最小化我无法解决。我应该从另一个类对象更改我的 Loginwards 属性

总结

public class Loginwards extends Jframe
{   ...
    JFrame frame = new JFrame("BorderLayoutDemo");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.add(PageStart.Panel(), BorderLayout.PAGE_START);
    ...
}


public class PageStart{
   public static JPanel Panel(){
     JPanel panel = new JPanel();
     FlowLayout pagestart = new FlowLayout(FlowLayout.RIGHT);
     panel.setLayout(pagestart);
     panel.add(MinimizeButton()); 
     panel.add(ResizeButton()); 
     panel.add(QuitButton()); 
   }
   public static JButton MinimizeButton(){
    JButton button = new JButton();
    button.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent arg0) {
        // I Should be able to reach Loginwards here.
        }
    });
    return button;
}

最佳答案

MinimizeButton 是一个静态方法,因此将 Loginwards 实例作为参数传递,然后在监听器中使用它:

public static JButton MinimizeButton(Loginwards loginwards){
    JButton button = new JButton();
    button.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent arg0) {
            // Invoke whatever you need on Loginwards...
            loginwards.doSomething();
        }
    });
    return button;
}

顺便说一句,方法名称应以小写字母开头...请参阅 naming conventions for Java

关于Java子对象运行父对象的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52203818/

相关文章:

具有两组标签的 Java JSlider

php - 不同查询返回相同计数值

java - DecimalFormat 负模式奇怪?

java - 当我在 JPanel 上绘制背景图像时,它在 Windows 下的行为与在 Linux 下的行为不同

java - 获取当前类对象

java - Heroku Java Websocket 端点

c++ - Cuda C++ 内存包装器类

java - 当创建一个类的多个实例时,会生成多少个方法副本?

java - 无法与远程机器上的 MySQL 数据库建立连接

java - 当我捕获异常并记录它时,日志仅显示异常名称,而不是异常堆栈