函数调用的动态面板内容

时间:2013-10-21 15:10:30

标签: java swing dynamic jpanel

我要做的是在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]);
}

如何以这种方式创建文本字段和滑块,使其成为唯一的实例?

1 个答案:

答案 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"));就像魅力一样。