0

我要做的是在 2x2 网格内容面板的第一行中添加两个 X 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);
}

如何将创建的文本字段和微调器添加makeTopcPane

cPane.add()不喜欢函数调用,并且cPane在尝试将内容添加到makeTop().

其次,假设makeTop调用如下,具有N任意性并textList[]填充了字符串:

for(i=N;i>0;i--){
    makeTop(textList[i]);
}

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

4

1 回答 1

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"));会像魅力一样工作。

于 2013-10-21T15:24:58.397 回答