Hi ich habe ein JFrame und dem ContentPane des JFrame habe ich eine JList hinzugefügt.
Das ContentPane hat die Hintergrundfarbe CYAN.
Standardmäßig ist die Hintergrundfarbe der JList weiß. Ich möchte, dass der Hintergrund der
JList transparent ist, so dass man die Hintergrundfarbe des ContentPane sieht bzw. ein Bild falls
das ContentPane ein Bild beinhaltet.
Aber ich kriegs nicht hin. Was muss ich im Quellcode korrigieren damit es funktioniert?
Das ContentPane hat die Hintergrundfarbe CYAN.
Standardmäßig ist die Hintergrundfarbe der JList weiß. Ich möchte, dass der Hintergrund der
JList transparent ist, so dass man die Hintergrundfarbe des ContentPane sieht bzw. ein Bild falls
das ContentPane ein Bild beinhaltet.
Aber ich kriegs nicht hin. Was muss ich im Quellcode korrigieren damit es funktioniert?
Java:
public class MyFrame extends JFrame
{
public MyFrame()
{
super();
this.setLayout(new FlowLayout());
Container contentPane = this.getContentPane();
contentPane.setBackground(Color.CYAN);
DefaultListModel listModel = new DefaultListModel();
for(int i=0; i<10; i++)
listModel.addElement("element " + i);
MyListCellRenderer listCellRenderer = new MyListCellRenderer();
JList list = new JList(listModel);
list.setCellRenderer(listCellRenderer);
list.setVisibleRowCount(5);
JScrollPane scrollPane = new JScrollPane(list);
scrollPane.setOpaque(false);
contentPane.add(scrollPane);
setSize(500, 500);
setVisible(true);
}
}
Java:
public class MyListCellRenderer extends JLabel implements ListCellRenderer
{
@Override
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus)
{
list.setOpaque(false);
setText((String) value);
if(isSelected)
{
setOpaque(true);
this.setForeground(list.getSelectionForeground());
this.setBackground(list.getSelectionBackground());
}
else
{
setOpaque(false);
this.setForeground(list.getForeground());
}
return this;
}
}
Zuletzt bearbeitet: