GroupLayout

BlockeR

Erfahrenes Mitglied
Hallo,
ich habe wollte meinem Programm ein GroupLayout verpassen. Das Programm soll einfach auf der linken Seite eine Liste haben und auf der rechten Seite drei JTextfields. Im oberen wird der Name des ListenElements angezeigt auf den die Maus zeigt. Leider wird mir das ganze aber nicht angezeigt und ich weiss nicht wo mein fehler liegt...Könnt ihr mir helfen?...

Code:
package MousePG;

import java.awt.Panel;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.GroupLayout;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.SwingConstants;


public class mouseTest {

	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());
			 }
	    	  });

		Panel panel = new Panel();
		panel.add(field);
		panel.add(field1);
		panel.add(field2);
		panel.add(pane);

	GroupLayout group = new GroupLayout(panel);
	fenster.setLayout(group);
	group.setAutoCreateGaps(true);
	group.setAutoCreateContainerGaps(true);

	group.setHorizontalGroup(
			   group.createSequentialGroup()
			      .addComponent(field)
			      .addComponent(field1)
			      .addGroup(group.createParallelGroup(GroupLayout.Alignment.LEADING)
			         .addComponent(field2))
			   );

	group.setVerticalGroup(
			   group.createSequentialGroup()
			      .addGroup(group.createParallelGroup(GroupLayout.Alignment.BASELINE)
			    	 .addComponent(field)
			    	 .addComponent(field1)
			    	 .addComponent(pane))


				);
	group.linkSize(SwingConstants.HORIZONTAL, field, pane);

	}
}
 
Ich kenne mich mit dem Group Layout nicht aus, aber hast du schon mal versucht, zuerst das Layout anzulegen und dann die Komponennten darauf zu legen?
Und muss man nicht mit Panel.setLayout arbeiten? ;)
 
Bei panel.setLayout(group) kommen zwar keine Fehlermeldungen mehr aber dafür ist auf dem Fenster auch nichts zu sehen....
 
Hast du schon mal versucht die Komponenten dem Layout direkt hinzuzufügen?
Soweit ich weis, hat das Group Layout dafür Methoden wie z.b.
Java:
setVerticalGroup()

Vieleicht ist auch dieses Beispiel, das ein GroupLayout verwendet für dich interessant ;) http://wiki.zum.de/Java/TicTacToe
 
Ich hatte so was ähnliches schon...aber was mache ich mit folgender Zeile?
Code:
        org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);

Wo kommt das getContentPane() her? und wie muss ich es definieren? Ich arbeite mit Eclipse und dieses sagt mir das dass erst definiert werden muss....
 
Hab ich aber er kennt "org.jdesktop" und "getContentPane()" immer noch nicht...Hier der Code:
Code:
package MousePG;

import java.awt.Panel;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;


public class mouseTest 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());
			 }
	    	  });

		Panel panel = new Panel();
		panel.add(field);
		panel.add(field1);
		panel.add(field2);
		panel.add(pane);

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



	}
}
 
Java:
package MousePG;

import java.awt.Panel;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;


public class mouseTest extends JPanel {

	public static final String REVISION = "$LastChangedRevision$";

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		JFrame fenster = new JFrame("Mouse");
                                mouseTest clazz = new mouseTest();
		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());
			 }
	    	  });

		Panel panel = new Panel();
		panel.add(field);
		panel.add(field1);
		panel.add(field2);
		panel.add(pane);

		org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(clazz.getContentPane());
		 clazz.getContentPane().setLayout(layout);



	}

oder in deinem Fall wie ich gerade gesehen habe...(Dann kannst du dir das vererben sparren)

Java:
package MousePG;

import java.awt.Panel;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;


public class mouseTest 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());
			 }
	    	  });

		Panel panel = new Panel();
		panel.add(field);
		panel.add(field1);
		panel.add(field2);
		panel.add(pane);

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



	}
}

Mfg

Aber
 
Zuletzt bearbeitet von einem Moderator:
Beim ersten Code hab ich eine Klasse von sich selbst angelegt,
dass du auch in der static main Methode auf die vererbten Eigenschaften von JPanel zurückgreifen kannst.
Im zweiten hab ich dann gemerkt das du ein Panel in der Main anlegst und dieses Objekt genutzt.
 

Neue Beiträge

Zurück