我正在使用HTML来设置JList中的单元格 - 它是一个简单的双行表,其中第二行具有非默认背景。我希望该行跨越单元格的整个宽度,而不是只有它内部文本的宽度。
以下是一个例子:
import java.util.ArrayList;
import javax.swing.JFrame;
import javax.swing.JList;
public class Example {
public static void main(String[] args) {
JFrame frame = new JFrame();
String html = "<html>";
html += "<style type=\"text/css\">"
+ "body { margin: 0px auto; }\n"
+ "td { padding: 0px; margin: 0px; }\n"
+ "</style>";
html += "<body><table>";
html += "<tr><td>line1</td></tr>";
html += "<tr><td bgcolor=blue color=white>line2</td></tr>";
html += "<body></table></html>";
ArrayList<String> dataList = new ArrayList();
dataList.add(html);
JList list = new JList(dataList.toArray());
frame.getContentPane().add(list);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
}
“line2”具有蓝色背景,但仅在文本下方。我希望它一直到窗口的末尾,基本上使表(或行)宽度为单元格宽度的100%。
我尝试在各个地方放置“width:100%”,没有效果。唯一有效的方法是将td {width ...}设置为特定的像素宽度,但是我需要一个自定义的单元格渲染器来在每次调整窗口/组件大小时更改该宽度...它看起来像必须有一个简单的html / css解决方案来解决这个问题。