Как установить AlwaysOnTop () при нажатии на JButton в Java? - PullRequest
0 голосов
/ 30 декабря 2011

Я хотел бы использовать setAlwaysOnTop(boolean) в Java.

Я хочу setAlwaysOnTop(), когда я нажимаю JButton, и этот JButton имеет свой собственный actionListener

Моя проблема в том, что я не знаю, как установить JFrame сверху в этой ситуации, потому что он не внутри конструктора и не существует метода getFrame()

Я пытался создать метод внутри конструктора, но он не работает: S.

UPDATE:

private class optionAction implements ActionListener{
    public void actionPerformed(ActionEvent e){
        if(e.getSource() == onTop)  //onTop is a menuItem when I click it it should make the frame Always on top.
        frame.setAlwaysOnTop(true); //This does not work of course just to demonstrat you what I want to do
    }
}

Ответы [ 4 ]

1 голос
/ 30 декабря 2011

Следующие строки кода показывают, как это можно сделать с помощью прямой реализации ActionListener(), назначенной кнопке, объявленной внутри конструктора. (Вы также можете сделать это где-нибудь еще в вашем классе.)

class MyFrame extends JFrame {

    public MyFrame() {
        // ...

        JButton button = new JButton("PRESS");
        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                setAlwaysOnTop(true);
                // Alternatively use MyFrame.this.setAlwaysOnTop(true);
            }
        });
        add(button);

        // ...
    }    
}
1 голос
/ 30 декабря 2011

Идея может заключаться в передаче ссылки на ваш JFrame в конструктор вашей реализации ActionListener.

Может быть, что-то вроде этого:

class MyActionListener implements ActionListener {

    private JFrame jFrame;

    public MyActionListener(JFrame jFrame) { 
         this.jFrame = jframe; 
    }

    public void onClick(Event event) {
        jFrame.setAlwaysOnTop(true);
    }
}
0 голосов
/ 26 марта 2017

создать логическое значение ontop

boolean ontop = false; 
jbutton.addActionListener(new ActionListener()) {
    public void actionPerformed(ActionEvent e){
       if (ontop) {
           frame.setAlwaysOnTop(false);
           ontop = false;
       }
       else {frame.setAlwaysOnTop(true); ontop = true}

});
0 голосов
/ 30 декабря 2011

Правильный рабочий код для этого вопроса ниже:

private class optionAction implements ActionListener{
        public void actionPerformed(ActionEvent e){
            if(e.getSource() == onTop)  //onTop is a menuItem
            setAlwaysOnTop(true); //This does not work of course just to demonstrate you what I want to do
        }
    }

Причина, по которой это не работает, потому что я установил setAlwaysOnTop для объекта JFrame, которого нет в этом классе.

Чтобы установить setALwaysOnTop на JFrame, вы должны удалить frame. и просто добавить `setAlwaysOnTop ()

...