Packe SpringLayout nicht.

Kai008

Erfahrenes Mitglied
Ich glaube ich habe gerade eine Denkblockade. :/

Ich haben einen Haufen Zeilen aus Elementen, die ich auf dem JFrame bearbeitbar machen will.
Es sind 3 Labels, 2 Button und 3 Textfelder, die ich über die Labels legen will. Wenn ein Button gedrückt wird, will ich die Labels aus- und die Felder einblenden, um den Wert bearbeitbar zu machen. Der 2. Button soll die Zeile dann komplett löschen.
Da es eine Variable anzahl an Zeilen ist, will ich das ganze gleich auf ein JScrollPane klatschen.

Java:
JPanel panel = new JPanel();
panel.setLayout(springLayout);
panel.setLocation(20, 20);
panel.setSize(400, 400);

JButton button = new JButton();
button.setText("lol");
panel.add(button, SpringLayout.NORTH);
		
JScrollPane scrollPane = new JScrollPane(panel);
scrollPane.setLocation(20, 20);
scrollPane.setSize(400, 400);
this.add(scrollPane);

Das war nur ein Test, die Schleife zum generieren soll hinterher kommen.
Aber ich weiß einfach nicht, wie man das am besten machen könnte.

Ich habe bisher nur mit BorderLayout und NullLayout Erfahrung, und selbst Online-Beispiele haben mir nichts gebracht. Kann mir das bitte wer schnell umschreiben, dass es so ist wie ich es will?

btw. ich habe das SpringLayout gewählt, da man da ja den Abstand zu bereits existierenden Komponenten festlegen kann.
 
So, hat sich erledigt. Keine Ahnung warum es plötzlich geht, aber tut es eben.
Sogar mit Null-Layout. Ich weiß, sollte man nicht umbedingt machen, aber ich werde verrückt wenn ein Objekt nicht Pixelgenau dort ist wo ich es haben will.
Schaut jetzt so aus:

Java:
public static void run(List<Cmd> list, OptionsWindow optionsWindow)
{
	JPanel panel = new JPanel();
	panel.setLayout(null);
	panel.setPreferredSize(new Dimension(900, list.size() * 30 + 20));

	int listlenght = list.size();
	JLabel[] cmdLabels = new JLabel[listlenght];
	JLabel[] pathLabels = new JLabel[listlenght];
	JLabel[] parmLabels = new JLabel[listlenght];

	JTextField[] cmdFields = new JTextField[listlenght];
	JTextField[] pathFields = new JTextField[listlenght];
	JTextField[] parmFields = new JTextField[listlenght];
	
	EditButton[] editButtons = new EditButton[listlenght];
	DelButton[] delButtons = new DelButton[listlenght];

	BrowseButton[] browseButtons = new BrowseButton[listlenght];
	OKButton[] okButtons = new OKButton[listlenght];
	
	for(int i = 0; i < list.size(); i++)
	{
		cmdLabels[i] = new JLabel();
		cmdLabels[i].setText(list.get(i).getCommand());
		cmdLabels[i].setSize(100, 9);
		cmdLabels[i].setLocation(20, i * 30 + 20);
		panel.add(cmdLabels[i]);
		
		pathLabels[i] = new JLabel();
		pathLabels[i].setText(list.get(i).getPath());
		pathLabels[i].setSize(300, 9);
		pathLabels[i].setLocation(150, i * 30 + 20);
		panel.add(pathLabels[i]);
		
		parmLabels[i] = new JLabel();
		parmLabels[i].setText(list.get(i).getParm());
		parmLabels[i].setSize(100, 9);
		parmLabels[i].setLocation(470, i * 30 + 20);
		panel.add(parmLabels[i]);
		///////
		cmdFields[i] = new JTextField();
		cmdFields[i].setSize(100, 19);
		cmdFields[i].setLocation(20, i * 30 + 20 - 5);
		cmdFields[i].setVisible(false);
		panel.add(cmdFields[i]);
		
		pathFields[i] = new JTextField();
		pathFields[i].setSize(300, 19);
		pathFields[i].setLocation(150, i * 30 + 20 - 5);
		pathFields[i].setVisible(false);
		panel.add(pathFields[i]);
		
		parmFields[i] = new JTextField();
		parmFields[i].setSize(100, 19);
		parmFields[i].setLocation(470, i * 30 + 20 - 5);
		parmFields[i].setVisible(false);
		panel.add(parmFields[i]);
		///////
		editButtons[i] = new EditButton(i, optionsWindow);
		editButtons[i].setSize(100, 15);
		editButtons[i].setLocation(600, i * 30 + 20 - 3);
		panel.add(editButtons[i]);
		
		delButtons[i] = new DelButton(i, optionsWindow);
		delButtons[i].setSize(100, 15);
		delButtons[i].setLocation(730, i * 30 + 20 - 3);
		panel.add(delButtons[i]);
		///////
		browseButtons[i] = new BrowseButton(i, optionsWindow);
		browseButtons[i].setText("Browse");
		browseButtons[i].setSize(100, 15);
		browseButtons[i].setLocation(600, i * 30 + 20 - 3);
		browseButtons[i].setVisible(false);
		panel.add(browseButtons[i]);
		
		okButtons[i] = new OKButton(i, optionsWindow);
		okButtons[i].setText("OK");
		okButtons[i].setSize(100, 15);
		okButtons[i].setLocation(730, i * 30 + 20 - 3);
		okButtons[i].setVisible(false);
		panel.add(okButtons[i]);
	}
	
	JScrollPane scrollPane = new JScrollPane(
			JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
			JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
	scrollPane.setViewportView(panel);
	scrollPane.setBackground(Color.blue);
	scrollPane.setLocation(20, 20);
	scrollPane.setSize(900, 8 * 30 + 50);
	
	optionsWindow.setCmdLabels(cmdLabels);
	optionsWindow.setPathLabels(pathLabels);
	optionsWindow.setParmLabels(parmLabels);
	
	optionsWindow.setCmdFields(cmdFields);
	optionsWindow.setPathFields(pathFields);
	optionsWindow.setParmFields(parmFields);
	
	optionsWindow.setEditButtons(editButtons);
	optionsWindow.setDelButtons(delButtons);
	optionsWindow.setBrowseButtons(browseButtons);
	optionsWindow.setOkButtons(okButtons);
	
	JScrollPane oldPane = optionsWindow.getScrollPane();
	if(oldPane != null)
		optionsWindow.remove(oldPane);		
	optionsWindow.add(scrollPane); 
	optionsWindow.setScrollPane(scrollPane);
}
 

Neue Beiträge

Zurück