Layered Panels

mariusmeier

Mitglied
Hallo zusammen

Ist es möglich, mit JLayeredPane zwei Panels hinzuzufügen, welche Transparent sind? Ich will sozusagen einen Grundlayer (Panel 1) auf welchem ich irgendetwas zeichne und darüber will ich einen zweiten Layer (Panel 2) legen, welche die untere Zeichnung durch selbst gezeichnete Objekte ergänzt. Dieser Zweite Layer muss aber den Grundlayer durchscheinen lassen, so dass man beide Layer sieht. Sollte doch mit setOpaque() möglich sein nicht? Oder verwendet man für solch ein Szenario gar nicht JLayeredPane sondern was anderes?

Java:
public LayeredPaneTest() {
		layeredPane = new JLayeredPane();
		layeredPane.setPreferredSize(new Dimension(400,400));
		//layeredPane.setOpaque(true);
		btOk = new JButton("OK");
		panel1 = new JPanel();
		panel1.setLayout(null);
		//panel1.setOpaque(true);
		btOk.setBounds(10, 10, 100, 25);
		panel1.add(btOk);
		panel1.setBorder(BorderFactory.createEtchedBorder());
		btCancel = new JButton("Cancel");
		panel2 = new JPanel();
		panel2.setLayout(null);
		panel2.setOpaque(true);
		btCancel.setBounds(40, 40, 100, 25);
		panel2.add(btCancel);
		panel2.setBorder(BorderFactory.createEtchedBorder());
		layeredPane.setLayout(new GridBagLayout());
		layeredPane.add(panel1, new GridBagConstraints(0, 0, 1, 1, 1.0, 1.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(10, 10, 10, 10), 0, 0), 0);
		layeredPane.add(panel2, new GridBagConstraints(0, 0, 1, 1, 1.0, 1.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(10, 10, 10, 10), 0, 0), 1);
		
		setLayout(new GridBagLayout());
		add(layeredPane, new GridBagConstraints(0, 0, 1, 1, 1.0, 1.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(10, 10, 10, 10), 0, 0));
		
	}

Mit dem obigen code wollte ich bezwecken, dass der Button OK auf dem ersten Panel zu liegen kommt und der Button Cancel auf dem zweiten Panel. Jedoch wird der Cancel Button nicht durch die obere Panel schicht hindurchgezeichnet. Erst wenn ich in dieser Region darüberfahre, dann wird er gezeichnet... irgendwas mache ich falsch?

MFG
 
S

SlaterB

Gast
eine typische Ursache für alle Arten von Anzeigefehlern ist ein zu frühes setVisible(true);
kann man nur im Gesamtprogramm beurteilen
 

mariusmeier

Mitglied
Ok mein gesamter Code sieht folgendermassen aus:

Java:
public class LayeredPaneTest extends JFrame {
	JLayeredPane layeredPane;
	JPanel panel1;
	JPanel panel2;
	JButton btOk;
	JButton btCancel;
	
	public LayeredPaneTest() {
		layeredPane = new JLayeredPane();
		layeredPane.setPreferredSize(new Dimension(400,400));
		//layeredPane.setOpaque(true);
		btOk = new JButton("OK");
		panel1 = new JPanel();
		panel1.setLayout(null);
		//panel1.setOpaque(true);
		btOk.setBounds(10, 10, 100, 25);
		panel1.add(btOk);
		panel1.setBorder(BorderFactory.createEtchedBorder());
		btCancel = new JButton("Cancel");
		panel2 = new JPanel();
		panel2.setLayout(null);
		panel2.setOpaque(true);
		btCancel.setBounds(40, 40, 100, 25);
		panel2.add(btCancel);
		panel2.setBorder(BorderFactory.createEtchedBorder());
		layeredPane.setLayout(new GridBagLayout());
		layeredPane.add(panel1, new GridBagConstraints(0, 0, 1, 1, 1.0, 1.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(10, 10, 10, 10), 0, 0), 0);
		layeredPane.add(panel2, new GridBagConstraints(0, 0, 1, 1, 1.0, 1.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(10, 10, 10, 10), 0, 0), 1);
		
		setLayout(new GridBagLayout());
		add(layeredPane, new GridBagConstraints(0, 0, 1, 1, 1.0, 1.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(10, 10, 10, 10), 0, 0));
		
	}
	
	public static void main(String [] args) {
		LayeredPaneTest frame = new LayeredPaneTest();
		frame.setSize(new Dimension(500,500));
		frame.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
		frame.setVisible(true);
	}
}

MFG
 
S

SlaterB

Gast
hmm, dann vermute ich dass du JLayeredPane falsch einsetzt, was soll das denn bewirken und auf welche Weise?
JLayeredPane.DEFAULT_LAYER usw. wie z.B. in
JLayeredPane
angegeben verwendest du nicht

ich habe bei mir testweise layeredPane zu einem JPanel gemacht und da gibts keinen Unterschied,
die beiden Unterpanel fügst du an exakt derselben Position ein, inwiefern dann ein sinnvolles Verhalten definiert ist weiß ich nicht,

damit die Panel durchsichtig sind, musst du
setOpaque(false);
eintippen, nicht true,
in dem Fall sieht man dann auch beide Buttons sofort,
(was allerdings nicht erklärt warum anderenfalls der zweite Button später erscheint)
 

mariusmeier

Mitglied
Ok in diesem Fall werde ich nochmals das JLayeredPane studieren.
Das ganze soll schlussendlich so funktionieren: 2 Layers
1. Layer zeichnet das Koordinaten System (Grid etc.)
2. Layer zeichnet Linien ins Koordinaten System (plots etc.)

MFG
 

mariusmeier

Mitglied
Ok ja mit setOpaque = false funktioniert das wunderbar. Habe die JavaDoc immer falsch gelesen. Für mich war true für transparent logischer ;) dort steht aber Otherwise set blablaba false.... :)
Danke

MFG
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Auf MainJFrame Panels anzeigen lassen Java Basics - Anfänger-Themen 19
CptK Interface Beide Panels zeigen das Gleiche Java Basics - Anfänger-Themen 2
S Interface (WindowBuilder) Panels in einen Frame einfügen Java Basics - Anfänger-Themen 10
E JAvaFX: Verschiedene Panels nach Klick auf Node des TreeView anzeigen Java Basics - Anfänger-Themen 0
Y Panels sichtbarkeit Java Basics - Anfänger-Themen 3
A mehrere Panels in eigenen Klasssen in einem Frame Java Basics - Anfänger-Themen 16
D ItemsateChangeEvent über 3 Panels Java Basics - Anfänger-Themen 1
B Drag & Drop für Panels Java Basics - Anfänger-Themen 6
M Panels untereinander anordnen Java Basics - Anfänger-Themen 3
L Panels zur Laufzeit ändern Java Basics - Anfänger-Themen 2
K Panels, grafische Oberflächen Java Basics - Anfänger-Themen 7
Spin Einfache Anfänger Frage setVisible von Panels Java Basics - Anfänger-Themen 5
S 2 Panels in einen Frame Java Basics - Anfänger-Themen 5
H Panels in Frame einbinden Java Basics - Anfänger-Themen 3
I 1 Frame und mehrere Panels klappt nicht Java Basics - Anfänger-Themen 4
M Zwei Panels, die sich gegenseitig 'notifyn' sollen Java Basics - Anfänger-Themen 12
M Panels regelmässig neu positionieren Java Basics - Anfänger-Themen 11
M Automatische Anordnung und Benennung von Panels Java Basics - Anfänger-Themen 2
M zufällige auswahl eines Panels aus Grid Layout Java Basics - Anfänger-Themen 3
J checkBoxen Panels Java Basics - Anfänger-Themen 12
_deleted Mehrere Panels untereinander im JScrollPane Java Basics - Anfänger-Themen 4
L Problem mit dem Anzeigen eines Panels Java Basics - Anfänger-Themen 2
T Animation übermalt panels Java Basics - Anfänger-Themen 6
G Panels und Buttons Java Basics - Anfänger-Themen 5
M Vers. Panels im Frame laden von vers. Panels Java Basics - Anfänger-Themen 5
T Auf Objekte innerhalb eines Panels zugreifen Java Basics - Anfänger-Themen 9
G Zwei Panels übereinander Java Basics - Anfänger-Themen 14
G problem mit panels Java Basics - Anfänger-Themen 2
S rumprobieren mit Panels Java Basics - Anfänger-Themen 5
M Auf Panels oder Labels malen? (paint) Java Basics - Anfänger-Themen 9
J Java und das Anzeigen von Panels Java Basics - Anfänger-Themen 15
R KeyListener, 2 Panels und 5 Buttons Java Basics - Anfänger-Themen 6
H Bilder in Panels einfügen? Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben