Witam
Czy ktoś byłby tak uprzejmy i pomógł/wskazał drogę aby móc obsłużyć dynamicznie tworzony formularz z k-kolumnami i i-wierszami?
Chodzi mi o obsługę zdarzeń dotyczących komórek przed i po, oraz w jednym wierszu jak i w jednej linii, oraz o zapisywanie i wczytywanie danych do nich.
Dla przykładu mam:
for (int i = 1; i <= array.size(); i++) {
JSONObject obj_i = (JSONObject) array.get(i);
int idd = Integer.valueOf(obj_i.get("id").toString());
int weight = Integer.valueOf(obj_i.get("weight").toString());
if (Boolean.valueOf(obj_i.get("checkbox").toString())) {
final JCheckBox chkbx_suffix_idd_i;
switch (weight) {
case 0:
chkbx_suffix_idd_i = new JCheckBox(obj_i.get("desc").toString());
chkbx_suffix_idd_i.setFont(new Font("Dialog", Font.BOLD, 13));
break;
case 1:
chkbx_suffix_idd_i = new JCheckBox(" " + obj_i.get("desc").toString());
chkbx_suffix_idd_i.setFont(new Font("Dialog", Font.PLAIN, 12));
break;
case 2:
chkbx_suffix_idd_i = new JCheckBox(" " + obj_i.get("desc").toString());
chkbx_suffix_idd_i.setFont(new Font("Dialog", Font.PLAIN, 12));
break;
/*case 3:
chkbx_suffix_idd_i = new JCheckBox(" " + obj_i.get("desc").toString());
chkbx_suffix_idd_i.setFont(new Font("Dialog", Font.PLAIN, 12));
break;*/
default:
chkbx_suffix_idd_i = new JCheckBox(obj_i.get("desc").toString());
chkbx_suffix_idd_i.setFont(new Font("Dialog", Font.PLAIN, 12));
break;
}
chkbx_suffix_idd_i.setToolTipText("Kliknięcie spowoduje rozwinięcie pola o pozycje bardziej szczegółowe.");
GridBagConstraints gbc_chkbx_suffix_idd_i = new GridBagConstraints();
gbc_chkbx_suffix_idd_i.anchor = GridBagConstraints.WEST;
gbc_chkbx_suffix_idd_i.insets = new Insets(0, 0, 5, 5);
gbc_chkbx_suffix_idd_i.gridx = 0;
gbc_chkbx_suffix_idd_i.gridy = i;
chkbx_suffix_idd_i.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent arg0) {
if (chkbx_suffix_idd_i.getSelectedObjects() != null) {
chkbx_suffix_idd_i.setVisible(true);
} else {
chkbx_suffix_idd_i.setVisible(false);
}
}
});
panel.add(chkbx_suffix_idd_i, gbc_chkbx_suffix_idd_i);
} else {
final JLabel lbl_suffix_idd_i;
switch (weight) {
case 0:
lbl_suffix_idd_i = new JLabel(obj_i.get("desc").toString());
lbl_suffix_idd_i.setFont(new Font("Dialog", Font.BOLD, 13));
break;
case 1:
lbl_suffix_idd_i = new JLabel(" " + obj_i.get("desc").toString());
lbl_suffix_idd_i.setFont(new Font("Dialog", Font.PLAIN, 12));
break;
case 2:
lbl_suffix_idd_i = new JLabel(" " + obj_i.get("desc").toString());
lbl_suffix_idd_i.setFont(new Font("Dialog", Font.PLAIN, 12));
break;
case 3:
lbl_suffix_idd_i = new JLabel(" " + obj_i.get("desc").toString());
lbl_suffix_idd_i.setFont(new Font("Dialog", Font.PLAIN, 12));
break;
default:
lbl_suffix_idd_i = new JLabel(obj_i.get("desc").toString());
lbl_suffix_idd_i.setFont(new Font("Dialog", Font.PLAIN, 12));
break;
}
GridBagConstraints gbc_lbl_suffix_idd_i = new GridBagConstraints();
gbc_lbl_suffix_idd_i.insets = new Insets(0, 0, 5, 5);
gbc_lbl_suffix_idd_i.anchor = GridBagConstraints.WEST;
gbc_lbl_suffix_idd_i.gridx = 0;
gbc_lbl_suffix_idd_i.gridy = i;
panel.add(lbl_suffix_idd_i, gbc_lbl_suffix_idd_i);
}
for (int k = 0; k <= period; k++) {
int a = k + 1;
final JTextField textField_suffix_idd_k = new JTextField();
switch (weight) {
case 0:
textField_suffix_idd_k.setFont(new Font("Dialog", Font.BOLD, 12));
break;
case 1:
textField_suffix_idd_k.setFont(new Font("Dialog", Font.PLAIN, 12));
break;
default:
textField_suffix_idd_k.setFont(new Font("Dialog", Font.PLAIN, 12));
break;
}
textField_suffix_idd_k.setBackground(Color.WHITE);
textField_suffix_idd_k.setColumns(5);
GridBagConstraints gbc_textField_suffix_idd_k= new GridBagConstraints();
gbc_textField_suffix_idd_k.fill = GridBagConstraints.HORIZONTAL;
gbc_textField_suffix_idd_k.insets = new Insets(0, 0, 5, 5);
gbc_textField_suffix_idd_k.gridx = a;
gbc_textField_suffix_idd_k.gridy = i;
panel.add(textField_suffix_idd_k, gbc_textField_suffix_idd_k);
}
Mam wygenerowane:
coś tam 1 pole11 pole12 pole13
coś tam 2 pole21 pole22 pole23
coś tam 3 pole31 pole32 pole33
i teraz potrzebuję odczytać wartości z każdego "poleXX" oraz je później wgrać do tych pól.
Potrzebuję też napisać obsługę zdarzeń że jak zaznaczę checkbox na "coś tam 2" to cała linia z "poleXX" jest widoczna, a jak odznaczę to się to ukrywa.
Również potrzebuje opisać zdarzenia z powiązując poleXX w kolumnach tzn że pole12 jest sumą pól pole12 i pole13.
Któś mógłby pomóc?