我要做的是在2x2网格内容面板的第一行中添加两个X×2网格面板,将内容面板的底行留空。
要填充顶行的单元格,我想使用一个使用循环生成文本字段和滑块的函数。文本字段从textList[n]
调用它的输入。
所以这分为两个主要问题。
如果我有一个功能:
public static void makeTop(String textName) {
JTextField textBox = new JTextField(textName);
textBox.setPreferredSize(new Dimension(100,50));
textBox.setHorizontalAlignment(JTextField.CENTER);
textBox.setEditable(false);
SpinnerNumberModel numSpinner = new SpinnerNumberModel(10,0,100,1);
JSpinner spinner = new JSpinner(numSpinner);
spinner.setPreferredSize(new Dimension(100,50));
}
带框架的框架:
public static void main(String[] args) {
JFrame frame = new JFrame("Frame");
frame.getContentPane().setLayout(new FlowLayout());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel cPane = new JPanel((new GridLayout(2,2)));
frame.add(cPane, BorderLayout.CENTER);
frame.setLocationRelativeTo(null);
frame.pack();
frame.setVisible(true);
}
如何将makeTop
中创建的文字字段和微调器添加到cPane
?
cPane.add()
不喜欢函数调用,并且在cPane
尝试添加内容时,公开makeTop()
似乎没有帮助。
其次,假设makeTop
被调用如下,N
是任意的,textList[]
用字符串填充:
for(i=N;i>0;i--){
makeTop(textList[i]);
}
如何以这种方式创建文本字段和滑块,使其成为唯一的实例?
答案 0 :(得分:0)
中的内容时似乎有所帮助
cPane.add
不喜欢函数调用,而公共cPane
则没有 在尝试添加makeTop()
实际上,它不起作用,因为合同makeTop(String textName)
正在返回void
。但如果你做了这个改变:
public static JPanel makeTop(String textName){
JTextField textBox = new JTextField(textName);
textBox.setPreferredSize(new Dimension(100,50));
textBox.setHorizontalAlignment(JTextField.CENTER);
textBox.setEditable(false);
SpinnerNumberModel numSpinner = new SpinnerNumberModel(10,0,100,1);
JSpinner spinner = new JSpinner(numSpinner);
spinner.setPreferredSize(new Dimension(100,50));
JPanel panel = new JPanel(new FlowLayout());
panel.add(textBox);
panel.add(spinner);
return panel;
}
然后cPane.add(makeTop("Whatever"));
就像魅力一样。