Java 更改JList中某行的字体和背景色

Java 更改JList中某行的字体和背景色,java,swing,jlist,joptionpane,Java,Swing,Jlist,Joptionpane,我在JOptionPane中使用JList在对话框中显示行。 我只想更改行的背景色和字体(取决于行的内容) 我无法实现,也没有找到任何有用的文章。 我的实际问题是,我下面代码中的方法getListCellRenderComponent从未被调用。对话框显示一行“一行任意文本”,但没有颜色/字体更改 有人能帮忙吗 final DefaultListModel d = new DefaultListModel(); final JList list = new JList(d);

我在
JOptionPane
中使用
JList
在对话框中显示行。 我只想更改行的背景色和字体(取决于行的内容)

我无法实现,也没有找到任何有用的文章。 我的实际问题是,我下面代码中的方法
getListCellRenderComponent
从未被调用。对话框显示一行“一行任意文本”,但没有颜色/字体更改

有人能帮忙吗

    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);
final DefaultListModel d=新的DefaultListModel();
最终JList列表=新JList(d);
ListCellRenderer=新建ListCellRenderer(){
@凌驾
公共组件getListCellRenderComponent(JList列表、对象值、int索引、布尔isSelected、布尔cellHasFocus){
JLabel标签=新的JLabel();
label.setText(value.toString());
label.setFont(新字体(“Courier new”,Font.ITALIC,12));
标签.立根(新颜色(12,12,12));

int i=1/0;//您有两个不同的JLists。第一个是设置ListCellRenderer的地方

list.setCellRenderer(renderer);
以及在对话框中显示的另一个:

pane.showMessageDialog(null, jlist, "adsfasdf", JOptionPane.PLAIN_MESSAGE);
加:


您有两个不同的JLists。第一个是设置ListCellRenderer的

list.setCellRenderer(renderer);
以及在对话框中显示的另一个:

pane.showMessageDialog(null, jlist, "adsfasdf", JOptionPane.PLAIN_MESSAGE);
加:


您有两个不同的JLists。第一个是设置ListCellRenderer的

list.setCellRenderer(renderer);
以及在对话框中显示的另一个:

pane.showMessageDialog(null, jlist, "adsfasdf", JOptionPane.PLAIN_MESSAGE);
加:


您有两个不同的JLists。第一个是设置ListCellRenderer的

list.setCellRenderer(renderer);
以及在对话框中显示的另一个:

pane.showMessageDialog(null, jlist, "adsfasdf", JOptionPane.PLAIN_MESSAGE);
加:


让它工作起来。

哦,我的好。我太傻了!!!!是的,你是对的。非常感谢你仔细研究了它。我现在很高兴:-)哦,我的好。我太傻了!!!!是的,你是对的。非常感谢你仔细研究了它。我现在很高兴:-)哦,我的好。我太傻了!!是的,你是对的。非常感谢你的关注非常详细。我现在非常高兴:-)哦,我的好。我非常愚蠢!!!!是的,你是对的。非常感谢你如此详细地研究它。我现在非常高兴:-)