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?
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
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