gpt4 book ai didi

带行分隔的 Java 列表

转载 作者:太空宇宙 更新时间:2023-11-04 08:38:52 26 4
gpt4 key购买 nike

嘿,我如何使我的 java SWT 列表看起来像这里 http://flavio.tordini.org/minitunes我的意思是每个元素彼此之间用一条线分隔。或者我有任何其他解决方案可以像迷你曲中那样有一个列表,这样我就可以添加数字..等等。

最佳答案

您应该使用 ListCellRenderer 在特定位置添加分隔符...


jList1 = new javax.swing.JList();
//String[] strings = { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" };
jList1.setModel(new javax.swing.AbstractListModel() {
String[] strings = { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" };
Vector v = makeVectorData(strings);
public int getSize() { return v.size(); }
public Object getElementAt(int i) { return v.get(i); }
});
jList1.setCellRenderer(new JlistRenderer());
jList1.addFocusListener(new JListFocusListener(jList1));<p></p>

<p>public class JlistRenderer extends JLabel implements ListCellRenderer {
JSeparator separator;
final String SEPARATOR = "SEPARATOR";
public JlistRenderer() {
setOpaque(true);
setBorder(new EmptyBorder(1, 1, 1, 1));
separator = new JSeparator(JSeparator.HORIZONTAL);
}
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
String str = (value == null) ? "" : value.toString();
if (SEPARATOR.equals(str)) {
return separator;
}
if (isSelected) {
setBackground(list.getSelectionBackground());
setForeground(list.getSelectionForeground());
} else {
setBackground(list.getBackground());
setForeground(list.getForeground());
}
setFont(list.getFont());
setText(str);
return this;
}
}</p>

<p>public class JListFocusListener implements FocusListener {
JList list;
Object currentItem;
final String SEPARATOR = "SEPARATOR";
JListFocusListener(JList list) {
this.list= list;
list.setSelectedIndex(0);
currentItem = list.getSelectedValue();
}
public void focusGained(FocusEvent e) {
String tempItem = (String) list.getSelectedValue();
if (SEPARATOR.equals(tempItem)) {
list.setSelectedValue(currentItem,true);
} else {
currentItem = tempItem;
}
}
}
</p>

希望上面的代码有帮助...

关于带行分隔的 Java 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5786907/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com