Hi,
Ich habe ein JRootPane mit einem CardLayout versehen.
Im CardLayout befinden sich zwei JPanels.
Eines davon, das CustomPanel beinhaltet ein JLabel mit einem Text.
Das JRootPane wurde in ein JPanel das als riesiges Hauptpanel dient
integriert.
Nun das Problem:
Ich möchte, dass wenn das CustomPanel angezeigt wird nur der Text
zu sehen ist der im JLabel drin ist. Der komplette Hintergrund soll aber
Transparent sein, so dass man den Hintergrund von dem riesigen
Hauptpanel sieht.
Doch ich schaffe es nicht den Hintergrund transparent zu bekommen.
Der Hintergrund ist die ganze Zeit grau.
Meine Vermutung:
Hauptvermutung: Es liegt an dem contentPane des JRootPane. Content Panes kann
man nicht auf durchsichtig setzen.
Weitere Vermutung: Entweder man kann den Hintergrund des JRootPanes nicht auf durchsichtig
setzen oder man kann den Hintergrund des CardLayouts nicht auf durchsichtig setzen.
Ich habe ein JRootPane mit einem CardLayout versehen.
Im CardLayout befinden sich zwei JPanels.
Eines davon, das CustomPanel beinhaltet ein JLabel mit einem Text.
Das JRootPane wurde in ein JPanel das als riesiges Hauptpanel dient
integriert.
Nun das Problem:
Ich möchte, dass wenn das CustomPanel angezeigt wird nur der Text
zu sehen ist der im JLabel drin ist. Der komplette Hintergrund soll aber
Transparent sein, so dass man den Hintergrund von dem riesigen
Hauptpanel sieht.
Doch ich schaffe es nicht den Hintergrund transparent zu bekommen.
Der Hintergrund ist die ganze Zeit grau.
Meine Vermutung:
Hauptvermutung: Es liegt an dem contentPane des JRootPane. Content Panes kann
man nicht auf durchsichtig setzen.
Weitere Vermutung: Entweder man kann den Hintergrund des JRootPanes nicht auf durchsichtig
setzen oder man kann den Hintergrund des CardLayouts nicht auf durchsichtig setzen.
Java:
public class MyJFrame extends JFrame
{
Container contentPane;
public MyJFrame()
{
super();
contentPane = getContentPane();
contentPane.setLayout(new BorderLayout());
contentPane.add(new MainPanel());
setSize(700, 500);
setVisible(true);
}
}
Java:
public class MainPanel extends JPanel
{
public MainPanel()
{
super();
setLayout(new FlowLayout());
setBackground(Color.CYAN);
add(new StandardRootPane());
}
}
Java:
public class StandardRootPane extends JRootPane
{
private Container contentPane;
private CardLayout cardLayout;
public StandardRootPane()
{
super();
DefaultPanel defaultPanel = new DefaultPanel();
CustomPanel customPanel = new CustomPanel();
cardLayout = new CardLayout();
contentPane = getContentPane();
contentPane.setLayout(cardLayout);
contentPane.add(defaultPanel, "defaultPanel");
contentPane.add(customPanel, "customPanel");
showCard("customPanel");
this.setOpaque(false);
}
public void showCard(String cardName)
{
cardLayout.show(contentPane, cardName);
}
}
Java:
public class CustomPanel extends JPanel
{
private JLabel textLabel;
public CustomPanel()
{
super();
setLayout(new BorderLayout());
setOpaque(false);
textLabel = new JLabel("textLabel", JLabel.CENTER);
textLabel.setForeground(Color.BLUE);
textLabel.setOpaque(false);
add(textLabel);
}
}
Java:
public class DefaultPanel extends JPanel
{
JLabel fieldLabel;
JLabel flagEventLabel;
public DefaultPanel()
{
setLayout(new GridLayout(2,1));
setOpaque(false);
fieldLabel = new JLabel("fieldname", JLabel.CENTER);
fieldLabel.setOpaque(true);
flagEventLabel = new JLabel("#flagname", JLabel.CENTER);
flagEventLabel.setOpaque(true);
add(fieldLabel);
add(flagEventLabel);
}
}
Zuletzt bearbeitet: