Дочерний объект Java запускает метод родительского объекта - PullRequest
0 голосов
/ 06 сентября 2018

Я решил использовать BorderLayout для дизайна свинга под названием Loginwards. И я написал 5 классов для 5 сторон BorderLayout как 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;
}

1 Ответ

0 голосов
/ 06 сентября 2018

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;
}

Кстати, имена методов должны начинаться со строчной буквы ... см. Соглашения об именах для Java

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...