如何删除JCheckboxes背后的灰色背景?

时间:2017-03-30 16:22:22

标签: java swing jcheckbox

我想删除创建JCheckbox时自动出现的灰色背景。 JCheckbox所在的面板是setOpaque(false)。我已尝试将setOpaque(false)与JCheckboxes一起使用,但它不起作用。我想让JCheckbox直接出现在黑色背景上,就像在图像中一样。

黑色背景上的JCheckboxes灰色背景:

https://i.stack.imgur.com/MeaRc.png

我的代码如下。使用arraylist从数据库中检索数据并将其显示为JCheckboxes。然后将ModulePanel添加到JFrame。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="tab1" class="tab">
  Tab 1
</div>
<div id="content1" class="content">
  1
</div>
<div id="tab2" class="tab">
  Tab 2
</div>
<div id="content2" class="content">
  2
</div>
<div id="tab3" class="tab">
  Tab 3
</div>
<div id="content3" class="content">
  3
</div>

2 个答案:

答案 0 :(得分:3)

首先,变量名不应以大写字母开头。从本教科书或教程中的示例中学习。

在复选框上使用setOpaque(false)可以正常使用。

  

我想让JCheckbox直接出现在黑色背景上,就像在图像中一样。

看起来您正在添加一个面板,其中包含显示图像的组件的复选框。

我猜测问题是您还需要在包含复选框的面板上使用setOpaque(false)

答案 1 :(得分:1)

  

我尝试将setOpaque(false)与JCheckbox一起使用,但它不起作用

嗯,这是正确的做法。

例如,尝试将框所在的面板背景设置为其他颜色并调用checkBox.setOpaque(false);

例如:

enter image description here

import java.awt.Color;

import javax.swing.BoxLayout;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class CheckBoxNoBackground {
    private JFrame frame;
    private JPanel pane;
    private JCheckBox box1;
    private JCheckBox box2;

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> new CheckBoxNoBackground().createAndShowGui());
    }

    public void createAndShowGui() {
        frame = new JFrame(getClass().getSimpleName());

        pane = new JPanel();
        pane.setLayout(new BoxLayout(pane, BoxLayout.PAGE_AXIS));

        box1 = new JCheckBox("I'm a check box");
        box2 = new JCheckBox("I'm also a check box");

        box1.setOpaque(false);
        pane.setBackground(Color.CYAN);

        pane.add(box1);
        pane.add(box2);

        frame.add(pane);
        frame.pack();
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}
  

JCheckbox所在的面板是setOpaque(false)。

如果你这样做,你会看到JFrame内容窗格的背景(灰色)

如果我添加这一行:

pane.setOpaque(false);

我明白了:

enter image description here

但是,如果您需要有关代码的更多帮助,请在评论中发布有效的MCVE,如前所述。