JScrollPane中的JTable,如何设置背景?
我正在使用JScrollPane
来包装JTable
。 根据配置,有一些空间未被表占用。 它是灰色的(看起来它是透明的,你可以看到后面的组件)。 如何将此区域设置为某种颜色?
这是一个SSCCE来说明。
import java.awt.Color; import java.util.Vector; import javax.swing.JDialog; import javax.swing.JScrollPane; import javax.swing.JTable; public class DialogDemo extends JDialog { public static void main(final String[] args) { final DialogDemo diag = new DialogDemo(); diag.setVisible(true); } public DialogDemo() { super(); setTitle("SSCCE"); final Vector<Vector> rowData = new Vector<Vector>(); final Vector columnNames = new VectorBuilder().addCont("Property").addCont("Value"); rowData.addElement(new VectorBuilder().addCont("lorem").addCont("ipsum")); rowData.addElement(new VectorBuilder().addCont("dolor").addCont("sit amet")); rowData.addElement(new VectorBuilder().addCont("consectetur").addCont("adipiscing elit.")); rowData.addElement(new VectorBuilder().addCont("Praesent").addCont("posuere...")); final JTable table = new JTable(rowData, columnNames); JScrollPane pane = new JScrollPane(table); // ************* make that stuff white! ******************* table.setBackground(Color.white); table.setOpaque(true); pane.setBackground(Color.white); pane.setOpaque(true); // ************* make that stuff white! ******************* add(pane); pack(); setLocationRelativeTo(null); setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); } class VectorBuilder extends Vector { public VectorBuilder addCont(final T elem) { addElement(elem); return this; } } }
在这里你可以看到我想要“着色”的区域。 在SSCCE中,我尝试通过使用表和滚动窗格的setOpaque(boolean)
和setBackgroundColor(Color)
来做到这一点,但没有成功。
你能告诉我,我做错了什么吗?
而不是这个:
table.setBackground(Color.white); table.setOpaque(true); pane.setBackground(Color.white); pane.setOpaque(true);
呼叫:
pane.getViewport().setBackground(Color.WHITE);
不要使用不透明,试试这个:
pane.getViewport().setBackground(Color.WHITE);