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