-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

問題を再現できませんでした。グラフィックノイズは見られません。私が試したことのsscceを添付しました-この例で問題を再現できますか?もしそうなら、あなたの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 に答える