GroupLayout

habe diese Zeile jetzt so geschrieben:

Code:
		org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(panel.getContentPane());
		 panel.getContentPane().setLayout(layout);

aber leider kennt Eclipse weder "org.jdesktop" noch "getContentPane()"....

Fehler:
The method getContentPane() is undefined for the typ Panel
org.jdesktop cannot be resolved to a type
 
Wenn ich "clazz" statt panel nehme dann ist immerhin ein Fehler weg, aber dann hab ich immer noch den, mit

org.jdesktop cannot be resolved to a type

Code:
		org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(clazz.getContentPane());
		 clazz.getContentPane().setLayout(layout);
 
Das getContenPane() bei
Java:
panel.getContenPane()
Liegt daran das Panel ein Container aus der AWT ist und diese Methode nicht besitzt, dagegen JPanel(SWING) diese besitzt wie du normal am vererben Objekt bemerkt hattest müssen.

Also wenn du jetzt Panel in
Java:
JPanel panel = new JPanel();        
panel.add(field);       
panel.add(field1);      
panel.add(field2);    
panel.add(pane);

das Package org.jdesktop gibt es bei dir wahrscheinlich nicht benutzt einfach das Layout aus dem Swing Package
 
Hab jetzt mal Eclipse gestartet also hier :
Java:
import java.awt.BorderLayout;
import java.awt.Panel;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.BoxLayout;
import javax.swing.GroupLayout;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField; 
public class HalloWelt extends JPanel {  
	
	public static final String REVISION = "$LastChangedRevision$";     /**     * @param args     */  
	public static void main(String[] args) {  
		JFrame fenster = new JFrame("Mouse");    
		fenster.setVisible(true);       
		fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    
		String  listData[] =        {                "Eintrag1",                "Eintrag2",                "Eintrag3",        };      
		final JList liste = new JList(listData);  
		JScrollPane pane = new JScrollPane(liste); 
		final JTextField field = new JTextField(30);   
		field.setEditable(true);      
		final JTextField field1 = new JTextField(30); 
		field1.setEditable(true);    
		final JTextField field2 = new JTextField(30);     
		field2.setEditable(true);       
		liste.addMouseMotionListener(new MouseAdapter() {  
			String lastSelected = "";        
			@Override          
			public void mouseMoved(MouseEvent me) {    
				Point p = new Point(me.getX(),me.getY());       
				String value = (String) liste.getModel().getElementAt(liste.locationToIndex(p));       
				if(!value.equals(lastSelected)) {           
					lastSelected = value;         
					field.setText(value);        
					}                 
				}       
			@Override    
			public void mouseClicked(MouseEvent mew)          
			{                     
				liste.remove(liste.getSelectedIndex());      
				}            
			});        
		JPanel panel = new JPanel();  
		JPanel panelCenter = new JPanel();  
		panel.setLayout(new BorderLayout());
		panelCenter.setLayout(new BoxLayout(panelCenter,BoxLayout.Y_AXIS));
		panelCenter.add(field);      
		panelCenter.add(field1);      
		panelCenter.add(field2);   
		panel.add(panelCenter,BorderLayout.CENTER);
		panel.add(pane,BorderLayout.WEST);        
		fenster.add(panel);
		}}

Ist halt nicht mit dem GroupLayout gelöst mach ich mich jetzt gleich mal dran.
//EDIT ne^^ da gibts ja ein Tutorial warum zweimal machen

Hier ein Tutorial:
http://java.sun.com/docs/books/tutorial/uiswing/layout/group.html
 
Zuletzt bearbeitet:
habe es jetzt erstmal versucht, aber leider wird mir auf meinem Fenster nichts angezeigt..warum?

Code:
                    JPanel panel = new JPanel();
		    JPanel panelCenter = new JPanel();
		    panel.setLayout(new BorderLayout());
		    panelCenter.setLayout(new BoxLayout(panelCenter,BoxLayout.Y_AXIS));
		    panelCenter.add(field);
		    panelCenter.add(field1);
		    panelCenter.add(field2);
		    panel.add(panelCenter,BorderLayout.CENTER);
		    panel.add(pane,BorderLayout.WEST);


		    GroupLayout layout = new GroupLayout(panel);
		    panel.setLayout(layout);

		    layout.setAutoCreateGaps(true);
		    layout.setAutoCreateContainerGaps(true);

		    layout.setHorizontalGroup(
		    		   layout.createSequentialGroup()
		    		      .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
		    		           .addComponent(label))
		    		);


		    layout.setVerticalGroup(
		    		   layout.createSequentialGroup()
		    		      .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
		    		           .addComponent(field)
		    		           .addComponent(field1)
		    		           .addComponent(field2))
		    		      .addComponent(pane)
		    		);
 
Habe das ganze mal mit einem BorderLayout probiert aber auch wieder ein Problem...
wie kann ich das Panel mit den TextField's statt horizontal vertikal füllen, so das diese untereinander stehen?
Code:
		JPanel content = new JPanel();

		// Layout erstellen
		BorderLayout layout = new BorderLayout();
		content.setLayout(layout);
		layout.setVgap(10);

		JPanel buttonPanel = new JPanel();
		buttonPanel.add(field1);
		buttonPanel.add(field2);
		buttonPanel.add(field3);
		buttonPanel.add(field4);
		buttonPanel.add(field5);
		buttonPanel.add(field6);
		((FlowLayout)buttonPanel.getLayout()).setHgap(0);
		((FlowLayout)buttonPanel.getLayout()).setVgap(10);

		liste.setPreferredSize(new Dimension(250, 100));

		content.add(liste, BorderLayout.CENTER);

		content.add(buttonPanel, BorderLayout.EAST);
		content.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));

		this.setContentPane(content);

Die Liste soll links stehen und die TextField's rechts daneben untereinander...die Frage ist wie?! xD
 
Gib dem Panel(buttonPanel) wie in meinem Beispiel wo ich gepostet
habe ein BoxLayout. Std haben Panels FlowLayout
 
etwa so?:

Code:
		JPanel buttonPanel = new JPanel();
		buttonPanel.add(fieldTag);
		buttonPanel.add(fieldPath);
		buttonPanel.add(fieldRepository);
		buttonPanel.add(fieldAuthor);
		buttonPanel.add(fieldDate);
		buttonPanel.add(fieldCommitMessage);
		((BoxLayout)buttonPanel.getLayout()).setHgap(0);
		((BoxLayout)buttonPanel.getLayout()).setVgap(10);

leider funktioniert das .setHgap() dann nicht mehr..wie bestimme ich denn, dass das Panel vertikal gefüllt werden solll?
 

Neue Beiträge

Zurück