如何生成具有交替颜色的Jlist

Fra*_*ank 10 java swing jlist

在Java中如何获得JList交替颜色?任何示例代码?

jjn*_*guy 15

要自定义JList单元格的外观,您需要编写自己的实现ListCellRenderer.

示例的实现class可能如下所示:(粗略草图,未经测试)

public class MyListCellThing extends JLabel implements ListCellRenderer {

    public MyListCellThing() {
        setOpaque(true);
    }

    public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
        // Assumes the stuff in the list has a pretty toString
        setText(value.toString());

        // based on the index you set the color.  This produces the every other effect.
        if (index % 2 == 0) setBackground(Color.RED);
        else setBackground(Color.BLUE);

        return this;
    }
}
Run Code Online (Sandbox Code Playgroud)

要使用此渲染器,请在您JList的构造函数中输入以下代码:

setCellRenderer(new MyListCellThing());
Run Code Online (Sandbox Code Playgroud)

要根据selected并具有焦点来更改单元格的行为,请使用提供的布尔值.

  • 我发现它避免了在选择项目时必须手动编码正确行为的问题。默认类将自动执行当前外观正确的操作。 (2认同)