Hi,
ich suche nach einer Kombination aus LineBorder und EmptyBorder.
Unten eine ausführbare Demo.
Wie man sieht, wird ein markiertes Element in der JList mit einer LineBorder umgeben.
Allerdings hätte ich es gerne, dass der Abstand der zwischen den Elementen größer ist. Das könnte man mit setBorder(BorderFactory.createEmptyBorder(5,5,5,5)) machen, allerdings hätte man dann keinen Rahmen mehr wie in mit einer LineBorder.
Was ich gerne hätte:
Einen 1px großen, farbigen Rahmen um jedes Element der Liste und zusätzlich einen Abstand zwischen den Elementen der Liste von 5. Nur wie mache ich das?
ich suche nach einer Kombination aus LineBorder und EmptyBorder.
Unten eine ausführbare Demo.
Wie man sieht, wird ein markiertes Element in der JList mit einer LineBorder umgeben.
Allerdings hätte ich es gerne, dass der Abstand der zwischen den Elementen größer ist. Das könnte man mit setBorder(BorderFactory.createEmptyBorder(5,5,5,5)) machen, allerdings hätte man dann keinen Rahmen mehr wie in mit einer LineBorder.
Was ich gerne hätte:
Einen 1px großen, farbigen Rahmen um jedes Element der Liste und zusätzlich einen Abstand zwischen den Elementen der Liste von 5. Nur wie mache ich das?
Java:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import javax.swing.DefaultListCellRenderer;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.SwingUtilities;
import javax.swing.border.LineBorder;
public class Demo extends JFrame{
public Demo(){
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JList list = new JList(new String[]{"Dagobert","Tick","Trick"});
list.setCellRenderer(new MyCellRenderer());
this.getContentPane().add(new JScrollPane(list), BorderLayout.CENTER);
this.pack();
this.setSize(200, 200);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable(){
public void run(){
new Demo().setVisible(true);
}
});
}
class MyCellRenderer extends DefaultListCellRenderer{
public Component getListCellRendererComponent (JList list, Object value, int index, boolean isSelected, boolean cellHasFocus){
if (isSelected && isEnabled()){
setBorder(new LineBorder(new Color(99, 191, 255), 1, true));
}
else{
setBackground(Color.white);
setForeground(Color.black);
setBorder(null);
}
setText((String)value);
return this;
}
}
}