Ich habe einen einfachen JDialog erstellt, der ein Label und einen Button enthält, das ist im Grunde genommen ein äquivalenter Informationsdialog. Im Dialog gibt es also eine Methode display(), in der ich setVisible (true) fünfmal aufgerufen habe.Java - setVisible (true)
Aus meiner Kenntnis, wenn diese Anzeige Methode aufgerufen wird, sollte es nur den Dialog anzeigen, aber es tatsächlich 5 Dialoge erstellt, Warum hat es 5 Dialoge erstellt?
Edit1: Mein Problem ist ähnlich, dies zu:
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: Nun, wie dies eine Situation, in meinem Programm auftritt und anstatt den Dialog 5male Anzeige, mag ich es die letzten anzuzeigen Was kann ich tun, um dies zu erreichen?
Und wo rufen Sie 'Display (String str)' ?? – Antoniossss
@Antoniossss Erstellen Sie einfach ein Objekt und rufen Sie es mit einer Zeichenfolge Ihrer Wahl auf. In meinem Programm habe ich gerade ein neues JMenuItem hinzugefügt und Anzeige (String str) wird aufgerufen, wann immer es geklickt wird. –
Aber es ist Ihr Beispiel, das nicht funktioniert, also geben Sie Ihren Code expecialy, dass dies von 'f' Variable (wahrscheinlich JFrame) abhängt, also wer weiß, dass Sie dort brechen könnten. – Antoniossss