Слушатели действий за одну кнопку - PullRequest
0 голосов
/ 19 октября 2018

Если я нажал на кнопку первый раз, он выведет диалоговое окно массажа «Экран сохранен», если я нажал на кнопку несколько раз на кнопке, это выведет диалоговое окно массажа «Экран сохранен в десктопе».Я просто не знаю, как это сделать.Я попробовал с метками, с конструкциями if, но они все еще не работают, помогите мне.

screenButton.addActionListener(new ActionListener() {

    public void actionPerformed(ActionEvent e) {

        BufferedImage image = new BufferedImage(
                  window.getWidth(),
                  window.getHeight(),
                  BufferedImage.TYPE_INT_RGB
                  );
        window.paint( image.getGraphics() );            
        try {
            File temp = File.createTempFile("screenshot", ".png");
            ImageIO.write(image, "png",new File(getDir(),"screen.png"));

        } catch (IOException ioe) {
            System.out.println(" ");
        } 
        if (showDialog==false){
            JOptionPane.showMessageDialog(screenButton, "Screen saved");
        }
    }
});
if (showDialog) {

    screenButton.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e) {
            JOptionPane.showMessageDialog(screenButton,"Screen saved on a desctop");
            showDialog=true;        
        }
    });
}       

Ответы [ 2 ]

0 голосов
/ 20 октября 2018

Не пытайтесь добавить два ActionListener к одной и той же кнопке.

Логика должна содержаться в одной ActionListener.Затем вы используете переменную Boolean, чтобы определить, какой процесс делать.

Что-то вроде:

JButton button = new JButton("Click Me");
button.addActionListener( new ActionListener()
{
    private boolean firstTime = true;

    @Override
    public void actionPerformed(ActionEvent e)
    {
        if (firstTime)
        {
            System.out.println( "First Message" );
            firstTime = false;
        }
        else
            System.out.println( "Another Message" );
    }
});
0 голосов
/ 19 октября 2018

Я не вижу, где вы объявили свой логический showDialog, но я постараюсь объяснить основной принцип решения вашей проблемы.

boolean showDialog = false;

if(!showDialog) {
 //Show the first dialog
 showDialog = true;
}
if(showDialog){
//show the second dialog
showDialog = false;
}

Ваша проблема заключалась в том, что вы забыли изменитьзначение showDialog.

if (showDialog==false){
            JOptionPane.showMessageDialog(screenButton, "Screen saved");
            showDialog = true; //You forgot this line
    }

Поскольку после первого if логическое значение showDialog по-прежнему равно false, и ваш второй if может быть достигнут только в том случае, если showDialog имеет значение true.

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