Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JTable在JScrollPane中,如何设置背景?_Java_Swing_Background_Jtable_Jviewport - Fatal编程技术网

Java JTable在JScrollPane中,如何设置背景?

Java JTable在JScrollPane中,如何设置背景?,java,swing,background,jtable,jviewport,Java,Swing,Background,Jtable,Jviewport,我正在使用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 Dial

我正在使用
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<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;
        }
    }
}
导入java.awt.Color;
导入java.util.Vector;
导入javax.swing.JDialog;
导入javax.swing.JScrollPane;
导入javax.swing.JTable;
公共类DialogDemo扩展JDialog{
公共静态void main(最终字符串[]args){
final DialogDemo diag=新建DialogDemo();
diag.setVisible(真);
}
公共对话框demo(){
超级();
setTitle(“SSCCE”);
最终向量行数据=新向量();
final Vector columnNames=new VectorBuilder().addCont(“属性”).addCont(“值”);
rowData.addElement(新矢量生成器().addCont(“lorem”).addCont(“ipsum”));
rowData.addElement(新的矢量生成器().addCont(“dolor”).addCont(“sit amet”));
rowData.addElement(新的VectorBuilder().addCont(“concetetur”).addCont(“adipising elit”);
rowData.addElement(新矢量生成器().addCont(“present”).addCont(“posuere…”);
最终JTable表=新JTable(行数据、列名称);
JScrollPane=新的JScrollPane(表);
//*************把那东西变成白色*******************
表.立根背景(颜色.白色);
表1.set不透明(真);
窗格.背景(颜色.白色);
窗格。设置不透明(真);
//*************把那东西变成白色*******************
添加(窗格);
包装();
setLocationRelativeTo(空);
setDefaultCloseOperation(JDialog.DISPOSE\u ON\u CLOSE);
}
类VectorBuilder扩展了Vector{
公共矢量生成器添加控制(最终元素){
附加元素(elem);
归还这个;
}
}
}
在这里你可以看到我想“着色”的区域。在SSCCE中,我尝试使用表和滚动窗格的
setOpaque(boolean)
setBackgroundColor(Color)
来实现这一点,但没有成功

你能告诉我,我做错了什么吗?

而不是这个:

table.setBackground(Color.white);
table.setOpaque(true);
pane.setBackground(Color.white);
pane.setOpaque(true);
电话:


不要使用不透明,请尝试以下操作:

pane.getViewport().setBackground(Color.WHITE);

JScrollPane不可能是opaque@mKorbel有趣的是……那为什么这种方法会存在呢?对于JTable来说,这个问题问了她好几次,我不知道答案是否完美。非常感谢你的回答@是的,我认为那些
setOpaque()
方法没有任何作用。这更让人困惑@mKorbel。。哈奇?每个组件都可能是不透明的(或不不透明的)。您是否只是从4年前已存在的公认答案中复制并粘贴了此内容?
pane.getViewport().setBackground(Color.WHITE);