一键的动作监听器

时间:2018-10-19 13:18:34

标签: java swing

如果我第一次按下按钮,它将输出按摩对话框“屏幕已保存” 如果我在按钮上按下其他按钮两次,它将输出消息对话框“屏幕保存在桌面上”。我只是不知道该怎么做。我尝试使用标签,如果有构造,但仍然无法正常工作,请帮助我。

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 :(得分:0)

我看不到您在哪里声明了布尔值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

答案 1 :(得分:0)

不要尝试将两个ActionListeners添加到同一按钮。

逻辑应独立包含在单个Test中。然后,您使用ActionListener变量来确定要执行的过程。

类似的东西:

Boolean