gpt4 book ai didi

Java - 设置可见(真)

转载 作者:行者123 更新时间:2023-11-29 08:41:30 30 4
gpt4 key购买 nike

我制作了一个简单的 JDialog,其中包含一个标签和一个按钮,它基本上相当于信息对话框。所以在对话框中,有一个方法 display() 我在其中调用了 setVisible(true) 五次。

据我所知,当调用这个显示方法时,它应该只显示一次对话框,但它实际上创建了 5 个对话框,为什么要创建 5 个对话框?

Edit1:我的问题与此更相似:

import java.awt.event.*;import java.awt.*;import javax.swing.*;
class Demo implements ActionListener
{
JFrame f;
JButton b;
DisplayDialog dialog;
public Demo()
{
f = new JFrame();
f.setSize(200,200);

b = new JButton("Click me");

f.add(b);
dialog = new DisplayDialog();

b.addActionListener(this);
f.setVisible(true);
}

public void actionPerformed(ActionEvent e)
{
Object o = e.getSource();

if(o==b)
{
dialog.display("Hello");
dialog.display("Hello");
dialog.display("Hello");
dialog.display("Hello");
dialog.display("Hello5");
}
}

public static void main(String args[])
{
Demo d = new Demo();
}

class DisplayDialog implements ActionListener
{
JDialog dg;
JLabel l;
JButton b;
Font myfont;

public DisplayDialog()
{
dg = new JDialog(f,"Alert!",true);
dg.setSize(300,150);
l = new JLabel("Message");
b = new JButton("OK");

myfont = new Font("Serif",Font.BOLD,12);
l.setFont(myfont);

dg.add(l);
dg.add(b,"South");

dg.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);

b.addActionListener(this);
}

public void actionPerformed(ActionEvent e)
{
Object o = e.getSource();
if(o==b)
{
dg.setVisible(false);
}
}

public void display(String str)
{
l.setText(str);
dg.setVisible(true);

}
}
}

Edit2 :现在我的程序中出现了这样的情况,而不是显示对话框 5 次,我希望它显示最后一个,我该怎么做才能实现这一点?

最佳答案

好吧,基本上它不会一次显示 5 次,只会连续显示 5 次

JDialog.setVisible(true) 是一个阻塞操作,它会阻塞直到对话框关闭。

因此,当您关闭它时,会弹出一个对话框并在 setVisible(true) 上阻止应用程序,调用另一个 serVisible(true) 等等。

关于Java - 设置可见(真),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39798723/

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