【问题标题】:JTable in JScrollPane, how to set background?JScrollPane中的JTable,如何设置背景?
【发布时间】:2013-08-24 02:29:33
【问题描述】:

我正在使用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;
        }
    }
}

在这里你可以看到我想要“着色”的区域。在 SSCCE 中,我尝试通过使用表格和滚动窗格的 setOpaque(boolean)setBackgroundColor(Color) 来做到这一点,但没有成功。

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

【问题讨论】:

    标签: java swing background jtable jviewport


    【解决方案1】:

    而不是这个:

    table.setBackground(Color.white);
    table.setOpaque(true);
    pane.setBackground(Color.white);
    pane.setOpaque(true);
    

    呼叫:

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

    【讨论】:

    • JScrollPane 不能不透明
    • @mKorbel Interesty...那为什么还存在这种方法呢?
    • see here 对于 JTable,这个有趣的问题被问了她几次,我不知道答案
    • 完美运行。非常感谢您的回答。 @mKorbel 是的,我认为那些 setOpaque() 方法没有做任何事情。这也令人困惑。 ;)
    • @mKorbel .. 嗯?每个组件都可以是不透明的(或不透明的)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-30
    • 1970-01-01
    • 1970-01-01
    • 2012-03-05
    • 2020-01-20
    相关资源
    最近更新 更多