-1

我在 java 桌面应用程序中创建了一个对话框。但是,当我通过在复选框上应用条件来隐藏/显示标签和按钮时,它会通过显示后台应用程序部分的某些部分来产生图形噪声(例如标签和按钮上的红色框也会导致复选框布局出现问题)。我在复选框上写了这个条件。

 checkbox.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent arg0) {

            if (checkbox.isSelected()) {
                baisvalue.setVisible(true); //label
                plusbais.setVisible(true);  //button
                minisbais.setVisible(true); //button

            }
            if (!checkbox.isSelected()) {
                minisbais.setVisible(false); //label
                plusbais.setVisible(false);  //button
                baisvalue.setVisible(false); //button
            }

        }
    });

注意:我也调用 repaint(); & 证实(); 但同样的问题发生。

4

2 回答 2

2

我无法重现您的问题 - 我没有看到图形噪音。我附上了我尝试过的内容 - 你能用这个例子重现你的问题吗?如果是这样,您能否向我们提供有关您的 Java 版本/平台的更多信息?如果没有,您能否修改此示例以重新创建您的问题(并使用代码编辑您的问题)?

import java.awt.event.*;
import javax.swing.*;

public class MainPanel extends Box{

    JCheckBox checkbox = new JCheckBox("Select Me");
    JLabel baisvalue = new JLabel("baisvalue");
    JButton plusbais = new JButton("plusbais");
    JButton minisbais = new JButton("minisbais");

    public MainPanel(){
        super(BoxLayout.Y_AXIS);
        ActionListener l = new ActionListener() {

            public void actionPerformed(ActionEvent arg0) {

                if (checkbox.isSelected()) {
                    baisvalue.setVisible(true); //label
                    plusbais.setVisible(true);  //button
                    minisbais.setVisible(true); //button

                }
                if (!checkbox.isSelected()) {
                    minisbais.setVisible(false); //label
                    plusbais.setVisible(false);  //button
                    baisvalue.setVisible(false); //button
                }

            }
        };
        checkbox.addActionListener(l); 
        add(checkbox);
        add(baisvalue);
        add(plusbais);
        add(minisbais);

        //Performs the action on initialization
        l.actionPerformed(new ActionEvent(checkbox, ActionEvent.ACTION_PERFORMED, ""));
    }


    public static void main(String[] args){
        final JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(new MainPanel());
        frame.pack();
        frame.setSize(400, 300);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
}
于 2012-08-15T17:08:45.270 回答
0

尝试使用 this.setOpaque(false); 在构造函数中。

于 2012-08-16T16:06:12.667 回答