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);