Hallo zusammen,
nachdem ich eine Pause gemacht habe, bin ich - Anfänger - wieder mal beim Üben. Jetzt habe ich folgendes Problem:
Ich erstelle zwei Array's - ein JLabl und ein JTextfield. Diese sollen abhängig von einer Auswahl (JComboBox) in einem JPanel mit einer for-Schleife generiert werden. Allerdings füllt er das JPanel nur bis zu einer entsprechenden Grenze. Wenn ich also in der JComboBox den letzten Wert (NSC 10) auswähle, läuft die Schleife 10 mal durch (ich sehe das in der Consolen-Ausgabe), es werden allerdings nur je 4 JLable bzw. JTextfield angezeigt.
Anbei mal mein Code:
Vielen Danke schon mal für ein paar hilfreiche Antworten
Jens
nachdem ich eine Pause gemacht habe, bin ich - Anfänger - wieder mal beim Üben. Jetzt habe ich folgendes Problem:
Ich erstelle zwei Array's - ein JLabl und ein JTextfield. Diese sollen abhängig von einer Auswahl (JComboBox) in einem JPanel mit einer for-Schleife generiert werden. Allerdings füllt er das JPanel nur bis zu einer entsprechenden Grenze. Wenn ich also in der JComboBox den letzten Wert (NSC 10) auswähle, läuft die Schleife 10 mal durch (ich sehe das in der Consolen-Ausgabe), es werden allerdings nur je 4 JLable bzw. JTextfield angezeigt.
Anbei mal mein Code:
Java:
package ExaltedTool;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
public class neutest extends JFrame {
private JPanel contentPane;
private JMenuBar menueLeiste;
private JComboBox comboBox;
private int anzahlNSC;
private JPanel panelEast;
private JPanel panelEast2;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
neutest frame = new neutest();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}}});}
public neutest() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 1000, 600);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(new BorderLayout(0, 0));
// Panel East
panelEast = new JPanel();
panelEast.setPreferredSize(new Dimension(300, 500));
panelEast.setBorder(new EtchedBorder(EtchedBorder.LOWERED, Color.BLACK, Color.BLACK));
panelEast.setLayout(null);
contentPane.add(panelEast, BorderLayout.EAST);
JLabel lblUeberschrift2 = new JLabel("NSC");
lblUeberschrift2.setFont(new Font("Tahoma", Font.PLAIN, 28));
lblUeberschrift2.setBounds(10, 10, 80, 45);
panelEast.add(lblUeberschrift2);
panelEast2 = new JPanel();
panelEast2.setBorder(new EtchedBorder(EtchedBorder.LOWERED, Color.BLACK, Color.BLACK));
panelEast2.setBounds(10, 59, 280, 410);
panelEast.add(panelEast2);
// Menüleiste erzeugen
menueLeiste = new JMenuBar();
// Checkboxen NSC erzeugen
String comboBoxListe[] = {"Anzahl NSC", "NSC 1", "NSC 2", "NSC 3", "NSC 4", "NSC 5", "NSC 6",
"NSC 7", "NSC 8", "NSC 9", "NSC 10"};
comboBox = new JComboBox(comboBoxListe);
comboBox.setMaximumRowCount(11);
comboBox.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent e) {
panelEast2.removeAll();
String selectedItem;
anzahlNSC = 0;
if(e.getStateChange() == ItemEvent.SELECTED) {
selectedItem = (String)comboBox.getSelectedItem() ;
try {
anzahlNSC = Integer.valueOf(selectedItem.replaceAll("\\D",""));
System.out.println(anzahlNSC);
int y1 = 20;
int plus = 30;
JTextField [] tfnsc = new JTextField[10];
JLabel [] jlblnsc = new JLabel[10];
if(anzahlNSC >= 1) {
int i;
for (i = 0; i < anzahlNSC; i++) {
jlblnsc[i] = new JLabel("NSC " + (i+1));
jlblnsc[i].setBounds(10, y1, 80, 20);
panelEast2.add(jlblnsc[i]);
System.out.println(jlblnsc[i]);
tfnsc[i] = new JTextField();
tfnsc[i].setBounds(80, y1, 30, 20);
panelEast2.add(tfnsc[i]);
System.out.println("--" +tfnsc[i]);
System.out.println(i);
y1 = y1 + plus;
}}
} catch (Exception f) {
System.out.println(f);
}}}});
menueLeiste.add(comboBox);
contentPane.add(menueLeiste, BorderLayout.NORTH);}}
Vielen Danke schon mal für ein paar hilfreiche Antworten
Jens