An einem Punkt in meinem Programm öffnet es einen JDialog, der Informationen über die Vorgänge anzeigt, während das Programm ausgeführt wird. Es hat mehrere Bezeichnungen und einen Fortschrittsbalken, aber wenn das Dialogfenster geöffnet wird, zeigt es nichts an.mein benutzerdefinierter JDialog wird angezeigt, ist aber leer
Hier ist der individuelle Dialog und der Konstruktor:
public class DataMiner implements ActionListener
{
private Hashtable<Integer, GISNode> nodeTable;
private Hashtable<Integer, GISLink> linkTable;
private int numLinesIgnored;
private int numLinesProcessed;
private int numNodes;
private int numLinks;
private int numDuplicates;
private int numFailedGeoCodingRequests;
private boolean cancelled;
// window objects
private JDialog window;
private JLabel LinesIgnored;
private JLabel LinesProcessed;
private JLabel Nodes;
private JLabel Links;
private JLabel Duplicates; // tracks the number of equivalent data entries found.
private JLabel FailedGeoCodingRequests;
private JProgressBar progressBar;
private JButton cancelButton;
public DataMiner(JFrame parentWindow)
{
nodeTable = new Hashtable<Integer, GISNode>(1000);
linkTable = new Hashtable<Integer, GISLink>(1000);
numLinesIgnored = 0;
numLinesProcessed = 0;
numNodes = 0;
numLinks = 0;
numDuplicates = 0;
numFailedGeoCodingRequests = 0;
cancelled = false;
LinesIgnored = new JLabel();
LinesProcessed = new JLabel();
Nodes = new JLabel();
Links = new JLabel();
Duplicates = new JLabel();
FailedGeoCodingRequests = new JLabel();
cancelButton = new JButton("Cancel");
progressBar = new JProgressBar();
updateLabels(); // assigns a formatted string to each JLabel
cancelButton.addActionListener(this);
// initialize window
window = new JDialog(parentWindow);
window.setResizable(false);
window.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
Container content = window.getContentPane();
content.setLayout(new GridLayout(7,1));
content.add(LinesProcessed);
content.add(Nodes);
content.add(Links);
content.add(Duplicates);
content.add(LinesIgnored);
content.add(FailedGeoCodingRequests);
content.add(progressBar);
JPanel p1 = new JPanel();
p1.add(new JLabel("")); // takes up space
p1.add(cancelButton);
content.add(p1);
window.pack();
window.setLocationRelativeTo(parentWindow);
window.setVisible(true);
}
(rest of the class...)
}
Sobald dieses Fenster öffnet, hält der Rest des Programms als normal ausgeführt wird, nur dieses Fenster leer ist. Fehle ich etwas?
Wird der Dialog überhaupt angezeigt? Wenn nicht, versuchen Sie zuerst setSize() des JDialogs. –
@pouncep: Es zeigt sich, nur mit nichts drin. – Max
Versuchen Sie, ['invokeLater'] (http://download.oracle.com/javase/tutorial/uiswing/concurrency/initial.html) zu verwenden, um' window.setVisible (true) 'aus dem Event-Dispatch-Thread aufzurufen. – casablanca