更改 JList 中一行的字体和背景颜色
Change font and backgroundcolor of a line in a JList
我在 JOptionPane
中使用 JList
在对话框中显示行。
我只是想改变线条的背景颜色和字体(取决于线条的内容)。
我无法实现,也没有找到任何有用的文章。
我的实际问题是,我的以下代码中的方法 getListCellRendererComponent
从未被调用过。对话框显示一行 "any text for one line",但没有 color/font 变化。
有人可以帮忙吗?
final DefaultListModel d = new DefaultListModel();
final JList list = new JList(d);
ListCellRenderer renderer = new ListCellRenderer() {
@Override
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
JLabel label = new JLabel();
label.setText(value.toString());
label.setFont(new Font("Courier New", Font.ITALIC, 12));
label.setBackground(new Color(12, 12, 12));
int i = 1 / 0; // <<<<<< --- does not throw an error, so it doesn't get into this.
return label;
}
};
list.setCellRenderer(renderer);
for (int iList = 0; iList < alSuggestionsText.size(); iList++) {
// bigList[iList] = alTexte.get(iList);
d.addElement(alSuggestionsText.get(iList));
// jlist.add(bigList);
}
final String sIgronreText = "any text for one line";
d.addElement(sIgronreText);
final JList jlist = new JList(d);
JOptionPane jpane = new JOptionPane();
jpane.showMessageDialog(null, jlist, sWikiidtemp, JOptionPane.PLAIN_MESSAGE);
您有两个不同的 JList。第一个设置 ListCellRenderrer 的地方。
list.setCellRenderer(renderer);
以及您在对话框中显示的另一个:
pane.showMessageDialog(null, jlist, "adsfasdf", JOptionPane.PLAIN_MESSAGE);
添加:
final JList jlist = new JList(d);
jlist.setCellRenderer(renderer);
让它工作。
我在 JOptionPane
中使用 JList
在对话框中显示行。
我只是想改变线条的背景颜色和字体(取决于线条的内容)。
我无法实现,也没有找到任何有用的文章。
我的实际问题是,我的以下代码中的方法 getListCellRendererComponent
从未被调用过。对话框显示一行 "any text for one line",但没有 color/font 变化。
有人可以帮忙吗?
final DefaultListModel d = new DefaultListModel();
final JList list = new JList(d);
ListCellRenderer renderer = new ListCellRenderer() {
@Override
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
JLabel label = new JLabel();
label.setText(value.toString());
label.setFont(new Font("Courier New", Font.ITALIC, 12));
label.setBackground(new Color(12, 12, 12));
int i = 1 / 0; // <<<<<< --- does not throw an error, so it doesn't get into this.
return label;
}
};
list.setCellRenderer(renderer);
for (int iList = 0; iList < alSuggestionsText.size(); iList++) {
// bigList[iList] = alTexte.get(iList);
d.addElement(alSuggestionsText.get(iList));
// jlist.add(bigList);
}
final String sIgronreText = "any text for one line";
d.addElement(sIgronreText);
final JList jlist = new JList(d);
JOptionPane jpane = new JOptionPane();
jpane.showMessageDialog(null, jlist, sWikiidtemp, JOptionPane.PLAIN_MESSAGE);
您有两个不同的 JList。第一个设置 ListCellRenderrer 的地方。
list.setCellRenderer(renderer);
以及您在对话框中显示的另一个:
pane.showMessageDialog(null, jlist, "adsfasdf", JOptionPane.PLAIN_MESSAGE);
添加:
final JList jlist = new JList(d);
jlist.setCellRenderer(renderer);
让它工作。