Я сделал простой JDialog, который содержит метку и кнопку, в основном это эквивалент информационного диалога. Итак, в диалоговом окне есть метод display(), в котором я вызывал setVisible (true) пять раз.Java - 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 раз, я хочу, чтобы отобразить последний , что я могу сделать для этого?
А где вы называете 'дисплей (String ул)' ?? – Antoniossss
@Antoniossss Просто создайте объект и назовите его строкой по вашему выбору. В моей программе я просто добавил новый JMenuItem, и отображение (String str) вызывается всякий раз, когда нажимается. –
Но это ваш пример, который не работает, поэтому предоставьте код expecialy, который зависит от переменной 'f' (вероятно, JFrame), поэтому кто знает, что вы могли бы переломить там. – Antoniossss