我尝试扩展"styles": [
"node_modules/bootstrap/dist/css/bootstrap.css",
"src/styles.css"
],
"scripts": [
"node_modules/jquery/dist/jquery.min.js",
"node_modules/bootstrap/dist/js/bootstrap.js"
]
来更改文本颜色,它应该可以正常工作。但是我无法在正在渲染的DefaultListCellRenderer
中显示图标。然后我尝试实现{{ 1}},而我什至无法显示JList
的内容。我将渲染器设置为在ListCellRenderer
上单击鼠标,如果使用JList
,则单击鼠标后列表消失,但是如果使用JList
,则效果很好。
我的第一个问题是为什么ListCellRenderer
的内容在鼠标单击时消失了,第二个问题是为什么在DefaultListCellRenderer
的情况下我无法通过添加以下代码来添加图标。
JList
以下是我渲染器的全部代码。
DefaultListCellRenderer
ImageIcon imageIcon = new ImageIcon(getClass().getResource("/images/im.png"));
setIcon(imageIcon);
的代码如下:
public class RCellRenderer extends JLabel implements ListCellRenderer {
String runm = "";
public RCellRenderer(String runm) {
this.runm = runm;
}
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
// Component c = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
if (value.equals(runm)) {
Color fg = Color.BLACK;
setForeground(fg);
}
// return c;
return this;
}
}
在我的程序中执行此操作时的堆栈跟踪如下:
DefaultListCellRenderer
答案 0 :(得分:0)
您尝试通过从ListCellRenderer
扩展来从头实现JLabel
接口
(而不是从DefaultListCellRenderer
扩展
依次从JLabel
开始)。
因此,您将需要实现所有方法
DefaultListCellRenderer.getListCellRendererComponent
做到了,
最重要的是,这涉及将value
传递给此方法
并将其放入JLabel.setText
调用中。
简而言之,建议您从DefaultListCellRenderer
扩展渲染器:
public class RCellRenderer extends DefaultListCellRenderer {
String runm = "";
public RCellRenderer2(String runm) {
this.runm = runm;
}
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
Component c = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
if (value.equals(runm)) {
Color fg = Color.BLACK;
c.setForeground(fg);
}
return c;
}
}
答案 1 :(得分:0)
我刚刚删除了getClass()。getResource(...),它工作得很好。我不知道为什么,但是确实如此。工作代码如下。
public class RCellRenderer extends DefaultListCellRenderer {
String runm = "";
public RCellRenderer(String runm) {
this.runm = runm;
}
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
Component c = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
ImageIcon imageIcon = new ImageIcon("images/in.png");
setIcon(imageIcon);
if (value.equals(runm)) {
Color fg = Color.BLACK;
setForeground(fg);
}
return c;
}
}
此问题解决后,我还有另一个问题,可以将此图像添加到JList
的最右边。