当前位置: 首页 > 知识库问答 >
问题:

设置JPanel的背景颜色

郑卜鹰
2023-03-14

因此,我尝试使用getContentPane().setBackground(color.white)并尝试将table和scrollpane设置为白色。

@SuppressWarnings("serial")
public class BalanceFrame extends JFrame {

private JTable table;
public BalanceFrame(String title, String value) throws Exception {
    super(title);
    SpringLayout springLayout = new SpringLayout();
    getContentPane().setLayout(springLayout);

    JScrollPane scrollPane = new JScrollPane();
    springLayout.putConstraint(SpringLayout.NORTH, scrollPane, 0, SpringLayout.NORTH, getContentPane());
    springLayout.putConstraint(SpringLayout.WEST, scrollPane, 0, SpringLayout.WEST, getContentPane());
    springLayout.putConstraint(SpringLayout.SOUTH, scrollPane, 0, SpringLayout.SOUTH, getContentPane());
    springLayout.putConstraint(SpringLayout.EAST, scrollPane, 0, SpringLayout.EAST, getContentPane());
    getContentPane().add(scrollPane);

    ResultSet res = Operations.writeBalanceResult(value);
    JTable table = new JTable(Operations.writeResult(res)); 
    table.setAutoResizeMode( table.AUTO_RESIZE_OFF);
    scrollPane.setViewportView(table);




    for (int column = 0; column < table.getColumnCount(); column++) {
        TableColumn tableColumn = table.getColumnModel().getColumn(column);
        int preferredWidth = tableColumn.getMinWidth();
        int maxWidth = tableColumn.getMaxWidth();

        for (int row = 0; row < table.getRowCount(); row++) {
            TableCellRenderer cellRenderer = table.getCellRenderer(row, column);
            Component c = table.prepareRenderer(cellRenderer, row, column);
            int width = c.getPreferredSize().width + table.getIntercellSpacing().width;
            preferredWidth = Math.max(preferredWidth, width);

            if (preferredWidth >= maxWidth) {
                preferredWidth = maxWidth;
                break;
            }
        }

        TableCellRenderer headerRenderer = tableColumn.getHeaderRenderer();

        if (headerRenderer == null) {
            headerRenderer = table.getTableHeader().getDefaultRenderer();
        }

        Object headerValue = tableColumn.getHeaderValue();
        Component headerComp = headerRenderer.getTableCellRendererComponent(table, headerValue, false, false, 0, column);
        preferredWidth = Math.max(preferredWidth, headerComp.getPreferredSize().width);

        if (preferredWidth >= maxWidth) {
            preferredWidth = maxWidth;
            break;
        }

        tableColumn.setPreferredWidth(preferredWidth + 6);
    }



}
}

这是唯一一个我不能改变颜色的框架,它是在另一个类中创建的-

menuItemBalanceSheet.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                        try {
                            balanceFrame = new BalanceFrame("BalanceSheet", value);

                        } catch (Exception e1) {
                            e1.printStackTrace();
                        }
                        balanceFrame.setSize(1200, 600);
                        balanceFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                        balanceFrame.setVisible(true);  
                    }
                });

通过这样做,我得到了另一个面板来成功地改变颜色

companyPanel = new CompanyPanel();
companyPanel.setBackground(Color.white);

共有1个答案

萧远
2023-03-14

您可以尝试使用scrollpane.getviewport().setbackground(color.xxx)设置滚动窗格视口的背景。

 类似资料:
  • 通过RGB值设置背景的颜色。 默认的颜色是 0x000000: // 颜色的参数可以是字符串 "#530000" 或者是十六进制数值 0x530000 controller.setBackgroundColor("#530000); //controller.setBackgroundColor(0x530000);

  • 问题内容: 当我尝试使用以下命令在Vim 中或直接在Vim中更改背景色时: …完全不影响我的背景。该选项也没有。但是,当我运行gvim时看起来还可以。 有没有一种方法可以在Vim中更改背景而不更改我的Konsole设置? 编辑 好的,guifg / guibg和ctermfg / ctermbg之间是有区别的。虽然GUI接受许多不同的颜色组合,但是cterm仅允许很少的标准颜色组合。 问题答案:

  • 我想在XSSFWorkbook中设置自己的背景色。到目前为止,我有这个代码: 但是我得到了以下错误: 类型CellStyle中的setFillForegroundColor(short)方法不是 不推荐使用构造函数XSSFColor(Color) 那么如何在XSSFWorkbook中设置自己的颜色呢?

  • 我无法让JPanel改变颜色。我也不能让JFrame改变颜色。我在网上查过...我还有一个程序,它有几乎相同的代码来设置JPanel和JFrame。我就是不能让它起作用。 下面是我的主要方法: 编辑:稍后在我的主要方法中有 下面是JPanel的构造函数: 背景颜色保持默认灰色。

  • 我已经搜索了整个网络,并尝试了几种方法,试图为设置默认背景色,但它仍然显示默认的白色。 我试图模拟控制台输出,我需要整个背景为黑色,即使没有文本。 看起来像和只处理任何插入的文本,但背景的其余部分仍然是默认的白色。 我看到了一些关于设置背景颜色的错误。 我怎么能做到呢? 它是纯文本,不是任何HTML。 谢谢 更新: 我终于找到了一些有效的方法。 使用setBackground(Color.BLAC