我有简单的表单,以及两个Arrays,JLabel和JTextFeilds:
ArrayList<JLabel> jlabels = new ArrayList<JLabel>();
ArrayList<JTextField> textFields = new ArrayList<JTextField>();
请看一下我的代码:
public class ProductForm extends JFrame {
private JPanel contentPane;
public ProductForm() {
initComponents();
actions();
}
public void actions() {
setTitle("Product selection");
setSize(600, 350);
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setVisible(true);
}
private void initComponents() {
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
ArrayList<JLabel> jlabels = new ArrayList<JLabel>();
ArrayList<JTextField> textFields = new ArrayList<JTextField>();
//for (int a = 0; a < product.list.size(); a++) {
for (int a = 0; a < 7; a++) { // let say 7 for example
jlabels.add(new javax.swing.JLabel());
textFields.add(new javax.swing.JTextField());
for (JLabel j:jlabels) {
contentPane.add(j);
}
for (JTextField f:textFields) {
contentPane.add(f);
}
}
pack();
}
请帮我解释如何正确包装这些元素。 我应该以某种方式初始化它吗?
感谢您的帮助。
答案 0 :(得分:4)
您应该使用正确的布局。我建议使用GridLayout
。
在initComponents()
方法中添加此行:
contentPane.setLayout(new GridLayout(7,2)); // 7 rows, 2 columns
然后将您更改为以下内容:
for (int a = 0; a < 7; a++) {
jlabels.add(new javax.swing.JLabel());
textFields.add(new javax.swing.JTextField());
}
for (int i=0; i<7; i++) {
contentPane.add(jlabels.get(i));
contentPane.add(textFields.get(i));
}
答案 1 :(得分:3)
试试这个
Test::scene
private void initComponents() {
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new GridLayout(7, 2)); // 7 rows and 2 cols
setContentPane(contentPane);
ArrayList<JLabel> jlabels = new ArrayList<JLabel>();
ArrayList<JTextField> textFields = new ArrayList<JTextField>();
// for (int a = 0; a < product.list.size(); a++) {
for (int a = 0; a < 7.; a++) { // let say 7 for example
JLabel jLabel = new javax.swing.JLabel("New Label");
jlabels.add(jLabel);
JTextField jTextField = new javax.swing.JTextField();
textFields.add(jTextField);
contentPane.add(jLabel);
contentPane.add(jTextField);
}
pack();
}