我正在建立我的第一個GUI,到目前爲止一切工作正常,除了一個JDialog
故障。它在第一次使用時接受相應的名稱和過程列表。但是當我把它拉回來輸入新的輸入時,它仍然沒有反應。我不認爲這是一個線程問題,因爲我在整個源代碼中使用了幾個System.out.println (SwingUtilities.isEventDispatchThread());
語句來測試代碼。這是可能引發問題的代碼的一部分。JDialog沒有更新爲新的輸入
package testme;
import java.awt.BorderLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class Test {
JDialog dialog;
JButton horseList, ok, clear;
JPanel jpDialog = new JPanel();
JPanel buttonPanel = new JPanel();
GridBagLayout gbLayout = new GridBagLayout();
BorderLayout borderLayout = new BorderLayout();
GridBagConstraints gbc = new GridBagConstraints();
int fnh = 8;
JTextField[] jtxt = new JTextField[fnh];
int[] hNum = new int[fnh];
int[] hVal = new int[fnh];
String[] hNam = new String[fnh];
JFrame jfr = new JFrame();
public Test() {
jfr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jfr.setTitle("My Alladin Lamp");
jfr.setSize(200, 80);
jfr.setVisible(true);
jfr.setLayout(borderLayout);
horseList = new JButton("Enter Horse Names");
jfr.add(horseList, BorderLayout.CENTER);
horseList.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
dialog = new JDialog(jfr, "Enter Horse Names", true);
dialog.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
dialog.setSize(260, 400);
jpDialog.setLayout(gbLayout);
JLabel label;
String str;
for(int i = 0; i < fnh; i++)
{
gbc.gridx = 0;
gbc.gridy = i;
str = new Integer(i+1) + ".";
label = new JLabel(str);
jpDialog.add(label, gbc);
gbc.gridx = 1;
gbc.gridy = i;
gbc.ipady = 4;
gbc.insets = new Insets(4,0,0,0);
jtxt[i] = new JTextField(15);
jpDialog.add(jtxt[i], gbc);
}
buttonPanel = new JPanel();
ok = new JButton("OK");
ok.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
for(int i = 0; i < fnh; i++) {
hNam[i] = jtxt[i].getText();
}
dialog.dispose();
}
});
buttonPanel.add(ok);
clear = new JButton ("CLEAR");
clear.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
for(int i = 0; i < fnh; i++)
if (!"".equals(jtxt[i].getText()))
jtxt[i].setText("");
}
});
buttonPanel.add(clear);
JScrollPane jscr = new JScrollPane(jpDialog);
dialog.add(jscr, BorderLayout.CENTER);
dialog.add(buttonPanel, BorderLayout.SOUTH);
dialog.setVisible(true);
}
});
}
// -------------------------------------------------------------------------
public static void main(String args[]) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run()
{
Test test = new Test();
}
});
}
}
如果基因的答案不能解決你的問題,然後再考慮創建和發佈的[SSCCE(HTTP:// SSCCE。org),這是一個小型的可編譯和可運行的程序,我們可以不加改變地運行,併爲我們展示了您的問題。 – 2013-03-26 22:25:45