gpt4 book ai didi

java - JOptionPane 不会关闭

转载 作者:行者123 更新时间:2023-11-29 06:44:28 24 4
gpt4 key购买 nike

好的,我不知道为什么会这样,但是当我按下关闭按钮时,joptionpane 不会关闭。它一直弹出回来,我需要点击多次才能关闭它。

这里是代码截图

Point p;
p = onScreenLocation(0.134,0.019, eastlake);
btn.setBounds(p.x,p.y,128,96);
btn.setContentAreaFilled(false);
btn.setBorderPainted(false);
add(btn);

btn.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent me){
Object[] options = {"View Info","View Place","Close"};
Object[] choice ={"Close"};
int response = JOptionPane.showOptionDialog(null,"Apartment Area","Message",JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.QUESTION_MESSAGE,ResidentImage,options,"Close");
if(response == 0 ){
JOptionPane.showOptionDialog(null, "Apartment Eastlake \n" +
"provides students with conducive room and reasonable prices ", "Message", JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE,ResidentImage,choice,"Close");
}
else if(response == 1){
JFrame ImageBox = new JFrame();
ImageBox.setSize(300,400);
ImageBox.add(new JLabel(ResidentImageView,SwingConstants.CENTER));
ImageBox.setVisible(true);
}
else{

}

}

});

完整代码

package environment;

import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.*;


public class Map extends JPanel{

String time = null;
serializedObject[] humans2 = null;
serializedDatas input = new serializedDatas();
Image eastlake,otherImage, buddyImage, clientImage, EventImage;
String[] buddyList;
String clientName;
JFrame frame;

ClassLoader cl = this.getClass().getClassLoader();
ImageIcon TransparentImage = new ImageIcon(cl.getResource("image1/bnt1.png"));

ImageIcon TescoImageView = new ImageIcon(cl.getResource("image1/tesco.jpg"));
ImageIcon TescoImage = new ImageIcon(cl.getResource("image1/Tesco.png"));



JButton btn = new JButton(TransparentImage);

public Map(Image map, Image agent, Image buddy, Image other, String clientName){

eastlake = map;
clientImage = agent;
otherImage = other;
buddyImage = buddy;
this.clientName = clientName;
}

protected void paintComponent(Graphics g)
{
super.paintComponents(g);
Graphics2D g2d = (Graphics2D) g;
g2d.drawImage(eastlake,0,0,null);
this.setPreferredSize(new Dimension(2624,1696));


Font font = new Font("Helvetica", Font.BOLD, 12);

g2d.setFont(font);
g2d.setColor(Color.red);
if(time != null)
g2d.drawString(time, 10, 10);

Point p;
p = onScreenLocation(0.134,0.019, eastlake);
btn.setBounds(p.x,p.y,128,96);
btn.setContentAreaFilled(false);
btn.setBorderPainted(false);
add(btn);

btn.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent me){
Object[] options = {"View Info","View Place","Close"};
Object[] choice ={"Close"};
int response = JOptionPane.showOptionDialog(null,"Apartment Area","Message",JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.QUESTION_MESSAGE,ResidentImage,options,"Close");
if(response == 0 ){
JOptionPane.showOptionDialog(null, "Apartment Eastlake \n" +
"provides students with conducive room and reasonable prices ", "Message", JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE,ResidentImage,choice,"Close");
}
else if(response == 1){
JFrame ImageBox = new JFrame();
ImageBox.setSize(300,400);
ImageBox.add(new JLabel(ResidentImageView,SwingConstants.CENTER));
ImageBox.setVisible(true);
}
else{

}

}

});

}

public void setTime(String time2) {
// TODO Auto-generated method stub
this.time = time2;
}

public void setBuddyList(String[] buddyList2) {
// TODO Auto-generated method stub
this.buddyList = buddyList2;
}

protected Point onScreenLocation(double x, double y, Image img)
{
return new Point((int)(img.getWidth(null)*x),(int)(img.getHeight(null)*y));
}
}

已编辑:之前发布了错误的代码。

最佳答案

首先,发布最少的代码示例总是一个好主意 - 特别是因为在很多情况下,您自己会发现自己的错误。

但这一次看起来相当明显:

您应该在构造函数中添加 mouseListener,而不是每次调用 paintComponent 时。否则,每次调用 paintComponent 方法时都会添加一个新的监听器,这对于 swing 组件来说可能会很多(而且由于 JOptionPane 可能会隐藏部分面板,单击确定将生成一个新的 paintComponent 调用,这意味着您有一个无限循环)。

关于java - JOptionPane 不会关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7301220/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com