Null-Layout-Problem

Status
Nicht offen für weitere Antworten.

icecreamman

Mitglied
Hallöchen, ich habe folgendes Problem, das mich schon den ganzen Tag zum Verzweifeln bringt:

Ich möchte nichts anderes als 3 JLabels unterschiedlicher Größen ineinander verschachteln. D.h., Label 3 (Farbe: rot, 10x10 Pixel) befindet sich im Label 2, Label 2 (Farbe: gelb, 30x30 Pixel) ist im Label 1 (Farbe: grün, 90x90 Pixel). Jedes JLabel soll zunächst im Zentrum der jeweiligen Elternkomponente liegen.

Es soll das Null-Layout verwendet werden. Das kleine rote Label muss ich mit der Maus bewegen können, weshalb es auf Mouse-Events horchen muss.

Folgender Code funktioniert nicht:

Code:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.AWTEvent;
import java.awt.event.MouseEvent;
import javax.swing.*;

public class Fenster extends JFrame 
{
	public Fenster()
	{
		setSize(270,270);
		
		getContentPane().setLayout(null);        
        
		MyLabel l1 = new MyLabel(Color.GREEN, false);
		MyLabel l2 = new MyLabel(Color.YELLOW, false);
		MyLabel l3 = new MyLabel(Color.RED, true);       
		
		l1.setLayout(null);
		l2.setLayout(null);
		l3.setLayout(null);
		
		l1.setBounds(90,90,90,90);
		l2.setBounds(30,30,30,30);
		l3.setBounds(10,10,10,10);
		
		getContentPane().add(l1);       
                                l1.add(l2);
                                l2.add(l3);     
        
                                setVisible(true);
	}
	
	public static void main (String argv[])
	{
		new Fenster();
	}
	
	
	private class MyLabel extends JLabel
	{
		Color color;
                                int prevX, prevY, deltaX, deltaY;
		
		public MyLabel(Color clr, boolean enable)
		{
			color = clr;			
			if(enable)
			{
				enableEvents(AWTEvent.MOUSE_EVENT_MASK |
                                                                                    AWTEvent.MOUSE_MOTION_EVENT_MASK );
			}				
		}
		
		public void paintComponent(Graphics g) 
	                {
	    	            g.setColor(color);
	                            g.fillRect(getBounds().x,getBounds().y,getBounds().width,getBounds().height);	        
	                            super.paintComponent(g);
	                }
		
		protected void processMouseEvent(MouseEvent e) 
	                {
			super.processMouseEvent(e);
                                                switch(e.getID())
                                                {
                                                    case MouseEvent.MOUSE_PRESSED:
            	                                    prevX = e.getX();  
                                                    prevY = e.getY(); 
                                                    break;
                                                    default: break;
                                                }
	                }
		
		protected void processMouseMotionEvent(MouseEvent e) 
	                {
			super.processMouseMotionEvent(e);
                                                switch(e.getID())
                                                {
                                                    case MouseEvent.MOUSE_DRAGGED:
                                                    deltaX = e.getX() - prevX;
                                                    deltaY = e.getY() - prevY;
                                                    setBounds(getBounds().x + deltaX,
                                                                    getBounds().y + deltaY,
                                                                    getBounds().width,
                                                                    getBounds().height);                                            
                                                    break;
                                                    default: break;
                                                }
	                }
	}
}

Das erste Problem ist, dass das Platzieren der Komponenten mit Null-Layout garnicht so einfach ist. Wie im Quelltext zu sehen ist, sollen die Labels jeweils zentral ineinander liegen. Jedoch ist keines der drei Labels nach dem Programmstart zu sehen. Nur wenn ich folgendes eingebe:

l1.setBounds(0,0,90,90);
l2.setBounds(0,0,30,30);
l3.setBounds(0,0,10,10);

werden die Labels dort platziert wo sie hin müssen, nämlich oben links im Fenster. Wenn ich dann aber versuche, das kleine rote Label zu verschieben, wird es mit größeren Koordinaten komischerweise kleiner. Ich schätze, das hat auch mit dem Aufruf von setBounds() zu tun.

Hat hier vielleicht jemand eine Ahnung, was ich falsch mache? Habe ich das Null-Layout falsch verstanden oder warum funktioniert bei mir das Setzen der Position mit setBounds() nicht?

Danke schon mal im Voraus!
 
S

SlaterB

Gast
dein paint macht Ärger, schau dir mal dieses Programm an:

Code:
public class Fenster extends JFrame {
	public Fenster() {

		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		getContentPane().setLayout(null);

		MyLabel l1 = new MyLabel(Color.RED, true);
		l1.setBorder(BorderFactory.createEtchedBorder());
		l1.setBounds(70, 70, 90, 90);

		getContentPane().add(l1);
		setSize(270, 270);
		setVisible(true);
	}

	public static void main(String argv[]) {
		new Fenster();
	}
	private class MyLabel extends JLabel {
		Color color;

		public MyLabel(Color clr, boolean enable) {
			color = clr;
		}

		public void paintComponent(Graphics g) {
			super.paintComponent(g);
			g.setColor(color);
			g.fillRect(
				getBounds().x,
				getBounds().y,
				getBounds().width,
				getBounds().height);

		}
	}
}
bzw. füge nur den Border bei dir ein
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Null Layout Problem. AWT, Swing, JavaFX & SWT 3
M Problem mit NULL-Layout AWT, Swing, JavaFX & SWT 2
R Layout Manager null und Component wird nicht hinzugefügt AWT, Swing, JavaFX & SWT 3
F LayoutManager Null-Layout unter Linux im TreeCellEditor AWT, Swing, JavaFX & SWT 3
E Null-Layout - Wie geht es ohne? AWT, Swing, JavaFX & SWT 19
S pack() bei null-Layout AWT, Swing, JavaFX & SWT 10
E JPanel mit Null Layout entfernt Buttons AWT, Swing, JavaFX & SWT 11
J JScrollPane & Null-Layout AWT, Swing, JavaFX & SWT 12
A JPanel mit Layout(null) in JPanel AWT, Swing, JavaFX & SWT 4
H null Layout -> Label wird nicht angezeigt AWT, Swing, JavaFX & SWT 4
G Probleme mit Content bei Null-Layout verändern AWT, Swing, JavaFX & SWT 7
O JScrollPane beinhaltet JPanel mit null Layout kein Scrollen AWT, Swing, JavaFX & SWT 3
B NULL Layout - TextFelder verschwinden AWT, Swing, JavaFX & SWT 8
F Scrollen bei JTextArea in einem Null-Layout? Unmöglich? AWT, Swing, JavaFX & SWT 4
R Komponenten frei per Drag&Drop in (z.B.) Null-Layout bew AWT, Swing, JavaFX & SWT 2
B [Swing] Null-Layout AWT, Swing, JavaFX & SWT 2
G Scrollpane in null-Layout einfügen AWT, Swing, JavaFX & SWT 5
W Probleme mit Border- und null-Layout AWT, Swing, JavaFX & SWT 8
Z textField.getText = null AWT, Swing, JavaFX & SWT 15
Davee JavaFX ListView = null wenn ich sie in Laufzeit ändern will! AWT, Swing, JavaFX & SWT 16
AmsananKING Textfelder sind gleich null AWT, Swing, JavaFX & SWT 2
J Injection - Aber Controller sind null AWT, Swing, JavaFX & SWT 3
J Controller ist null - Warum AWT, Swing, JavaFX & SWT 3
Z Swing Wert aus Textfeld auslesen -- null Fehler AWT, Swing, JavaFX & SWT 4
N SceneBuilder wie auf Attribute zugreifen? Diese sind immer null. AWT, Swing, JavaFX & SWT 6
F javaxt.io.Image getBufferedImage liefert null AWT, Swing, JavaFX & SWT 1
A Swing Null Pointer Exception obwohl Objekt initialisiert AWT, Swing, JavaFX & SWT 21
D Zwischen Null-Layouts wechseln AWT, Swing, JavaFX & SWT 2
S Unverstandene Null.PointException AWT, Swing, JavaFX & SWT 4
D AWT Graphics2D getClip gibt null zurück AWT, Swing, JavaFX & SWT 3
H Swing jComboBox Ausgabe -1/null AWT, Swing, JavaFX & SWT 4
G Swing, JavaFx - Felder aus FXML sind null AWT, Swing, JavaFX & SWT 6
K Swing JSpinner mit NULL AWT, Swing, JavaFX & SWT 3
F JavaFX Properties und NULL Werte AWT, Swing, JavaFX & SWT 2
M JTextField gibt beim auslesen null aus AWT, Swing, JavaFX & SWT 9
S String is null Fehler AWT, Swing, JavaFX & SWT 2
R Swing JLabel gibt stets 'null' aus AWT, Swing, JavaFX & SWT 3
P Swing JTable null values an das Ende verschieben AWT, Swing, JavaFX & SWT 2
F Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: null AWT, Swing, JavaFX & SWT 5
C JTable sorter GregorianCalender null Exc AWT, Swing, JavaFX & SWT 4
N Swing JFrame==null und doch nicht null?! AWT, Swing, JavaFX & SWT 4
N JButton Border(null) AWT, Swing, JavaFX & SWT 3
K Swing regexFilter() null filtern AWT, Swing, JavaFX & SWT 3
R Swing JComboBox - Null-Feld AWT, Swing, JavaFX & SWT 7
M SWT DateTime per default null Wert ? AWT, Swing, JavaFX & SWT 3
D Bild zeichnen lassen aus array, null pointer Exception AWT, Swing, JavaFX & SWT 2
G Zentrieren mittels setLocationRelativeTo(null);? AWT, Swing, JavaFX & SWT 14
G Value vom TreeCellEditor ist immer null AWT, Swing, JavaFX & SWT 3
G JTree Problem: Null Child not allowed AWT, Swing, JavaFX & SWT 12
J JList CellRenderer Null-Layoutpanel AWT, Swing, JavaFX & SWT 4
C getGraphics() liefert nur null AWT, Swing, JavaFX & SWT 4
M JFormattedTextField und Null-Werte AWT, Swing, JavaFX & SWT 4
S Text im JLabel wird nicht als null anerkannt AWT, Swing, JavaFX & SWT 4
P paint null pointer exception AWT, Swing, JavaFX & SWT 3
G null pointer mit getText AWT, Swing, JavaFX & SWT 2
V CellEditor der nur Eingaben int 1-9 und "null" er AWT, Swing, JavaFX & SWT 11
H getGraphics() eines JPanel liefert immer null zurück AWT, Swing, JavaFX & SWT 6
F PanelBounds an TextPaneBounds anpassen LayoutManager: Null AWT, Swing, JavaFX & SWT 2
A Null pointer exception beim Neuzeichnen AWT, Swing, JavaFX & SWT 4
M bei filechooser.showSaveDialog(null); auf Datein. zugreifen AWT, Swing, JavaFX & SWT 2
V Null Pointer Exception bei JTextField setText AWT, Swing, JavaFX & SWT 25
G JList: Anzeige von null-Werten verhindern AWT, Swing, JavaFX & SWT 3
Z createImage() liefert null zurück AWT, Swing, JavaFX & SWT 4
K JTextArea und setLayout(null) AWT, Swing, JavaFX & SWT 3
S Welches Java Layout sollte ich verwenden? AWT, Swing, JavaFX & SWT 3
S Layout - Problem AWT, Swing, JavaFX & SWT 1
D Layout einer scene mit ListView Elementen und Zwei Textfeldern AWT, Swing, JavaFX & SWT 1
H Swing , GridLayout, Größenbestimmung der Komponenten im Layout AWT, Swing, JavaFX & SWT 8
melaniemueller Layout wechseln über RadioButtons AWT, Swing, JavaFX & SWT 4
E LayoutManager Welcher Layout-Mix löst mein Problem? AWT, Swing, JavaFX & SWT 3
J Swing Hilfe bei Layout AWT, Swing, JavaFX & SWT 2
R Layered Layout AWT, Swing, JavaFX & SWT 1
E showAndWait is not allowed during animation or layout processing Memory FX AWT, Swing, JavaFX & SWT 2
newJavaGeek Grid-Layout problem AWT, Swing, JavaFX & SWT 7
E Swing Layout während der Laufzeit anpassen AWT, Swing, JavaFX & SWT 3
P JavaFX Zugriff auf Fenster/Layout-Container in eigenen Klassen AWT, Swing, JavaFX & SWT 5
S Kann javafx.scene.layout.VBoxBuilder nicht importieren AWT, Swing, JavaFX & SWT 3
OSchriever Layout über Radiobuttons ändern AWT, Swing, JavaFX & SWT 4
B Swing Probleme mit dem Layout AWT, Swing, JavaFX & SWT 1
Hatsi09 JButton text layout AWT, Swing, JavaFX & SWT 9
I JavaFX - festes Layout AWT, Swing, JavaFX & SWT 1
S JavaFX TableView einzelne Zelle Layout zuweisen AWT, Swing, JavaFX & SWT 3
DaCrazyJavaExpert Swing Zwei gleichgroße Panels in einem Scrollpane mit Layout AWT, Swing, JavaFX & SWT 9
Neumi5694 Swing Card-Layout, Fokus AWT, Swing, JavaFX & SWT 2
kilopack15 Interface mit Layout verknüpfen AWT, Swing, JavaFX & SWT 2
Y Layout/Ausrichtungsprobleme AWT, Swing, JavaFX & SWT 4
T JavaFX Custom Layout AWT, Swing, JavaFX & SWT 5
A GUI Layout AWT, Swing, JavaFX & SWT 11
A Layout-Manager, JScrollPane, ... Chaos AWT, Swing, JavaFX & SWT 5
L wie Layout-Grid in JXPanel anzeigen? AWT, Swing, JavaFX & SWT 5
L Eigene Component Layout AWT, Swing, JavaFX & SWT 4
Soloeco LayoutManager Wie und welches Layout nutze ich am Besten? AWT, Swing, JavaFX & SWT 13
M LayoutManager Modalen JDialog ein Layout zuweisen AWT, Swing, JavaFX & SWT 3
M LayoutManager Layout reagiert nicht auf Constraints AWT, Swing, JavaFX & SWT 4
IsSchoGuat LayoutManager Layout-Containergrösse AWT, Swing, JavaFX & SWT 4
F GridBag Layout AWT, Swing, JavaFX & SWT 1
Z Absolutes Layout / Kontrolle über Anordnung AWT, Swing, JavaFX & SWT 3
M Mehrere Jpanel in einem JScrollPane (Layout) AWT, Swing, JavaFX & SWT 2
M Layout-Probleme unter Swing AWT, Swing, JavaFX & SWT 5
D LayoutManager GUI skalieren und deren Komponenten mit Grid(Bag)Layout-Manager. AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen

Neue Themen


Oben