I am using a JScrollPane
to wrap a JTable
. Depending on the configuration, there is some space that is not occupied by the table. It is drawn gray (it looks like it is transparent and you can just see the component in the back). How can I set this area to be a certain color?
我正在使用JScrollPane包装JTable。根据配置,有一些空间没有被表占用。它被画成灰色(看起来是透明的,你可以看到后面的组件)。如何将这个区域设置为特定的颜色?
Here is a SSCCE to illustrate.
这里有一个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<String>> rowData = new Vector<Vector<String>>();
final Vector<String> columnNames = new VectorBuilder<String>().addCont("Property").addCont("Value");
rowData.addElement(new VectorBuilder<String>().addCont("lorem").addCont("ipsum"));
rowData.addElement(new VectorBuilder<String>().addCont("dolor").addCont("sit amet"));
rowData.addElement(new VectorBuilder<String>().addCont("consectetur").addCont("adipiscing elit."));
rowData.addElement(new VectorBuilder<String>().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<T> extends Vector<T> {
public VectorBuilder<T> addCont(final T elem) {
addElement(elem);
return this;
}
}
}
And here you can see the area, which I want to "colorize". In the SSCCE, I try to do that by using setOpaque(boolean)
and setBackgroundColor(Color)
of the table and scroll pane, with no success.
这里你可以看到这个区域,我想要“着色”。在SSCCE中,我试图通过使用表和滚动窗格的setOpaque(boolean)和setBackgroundColor(颜色)来实现这一点,但没有成功。
Can you tell me, what I am doing wrong?
你能告诉我,我做错了什么吗?
2 个解决方案
#1
24
Instead of this:
而不是:
table.setBackground(Color.white);
table.setOpaque(true);
pane.setBackground(Color.white);
pane.setOpaque(true);
call:
电话:
pane.getViewport().setBackground(Color.WHITE);
#2
0
Don't use Opaque, try this:
不要使用不透明,试试这个:
pane.getViewport().setBackground(Color.WHITE);
#1
24
Instead of this:
而不是:
table.setBackground(Color.white);
table.setOpaque(true);
pane.setBackground(Color.white);
pane.setOpaque(true);
call:
电话:
pane.getViewport().setBackground(Color.WHITE);
#2
0
Don't use Opaque, try this:
不要使用不透明,试试这个:
pane.getViewport().setBackground(Color.WHITE);