【发布时间】:2014-09-14 00:14:23
【问题描述】:
public class Creator extends JFrame {
JLabel[] pos;
JTextField[] monInitFi;
JPanel panel, statusP, inputP;
JTextField numMonsFi;
JButton goB, initRollB;
int numMons;
public Creator() {
panel = new JPanel();
createInputP();
panel.add(inputP);
add(panel);
}
//The Input board
public JPanel createInputP() {
inputP = new JPanel();
numMonsFi = new JTextField(3);
inputP.add(numMonsFi);
goB = new JButton("Go");
goB.addActionListener(new goBListener());
inputP.add(goB);
return inputP;
}
//Creates the initiative input board.
public JPanel createStatusP() {
statusP = new JPanel();
monInitFi = new JTextField[numMons];
for (int i = 0; i < numMons; i++) {
monInitFi[i] = new JTextField(3);
statusP.add(monInitFi[i]);
}
initRollB = new JButton("Roll");
statusP.add(initRollB);
return statusP;
}
//The button listener, should update numMons, and create and add the initiative panel.
public class goBListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
numMons = Integer.parseInt(numMonsFi.getText());
createStatusP();
panel.add(statusP);
}
}
public static void main(String[] args) {
Creator c = new Creator();
c.setVisible(true);
c.setSize(1000, 600);
c.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
c.setTitle("D&D 4e Encounter Tracker");
}
}
所以这只是我正在尝试做的一个示例,但我什至无法让基础知识发挥作用。当我运行它时,statusP(JPanel) 没有出现,我不确定是因为它没有运行,还是因为它不起作用。
我尝试将createStatusP() 方法放入GUI constructor,但只有JButton 会显示为好像for 循环没有运行。
任何帮助将不胜感激。
【问题讨论】:
-
那么...您到底想做什么?
-
请将
frame.setVisible(true)作为main的最后一行。首先将组件添加到容器中,然后调用pack(),然后调用setVisible(),这样它就能够以更好的方式实现它的大小。你有没有做过绘画。您不会首先向人们展示您的空白纸,而是首先在该纸上绘画,然后绘画然后将其展示。此外,请阅读有关Concurrency in Swing 的信息。此外,您是否尝试将JTextField的列数从3增加到更大的值!!!!
标签: java arrays swing user-interface