2012-08-15 80 views
-1

我在java桌面应用程序中创建一个对话框。但是,当我通过在复选框上应用条件来隐藏/显示标签和按钮时,通过显示背景应用程序部分的某些部分(如标签和按钮上的红框以及复选框布局导致问题),会产生图形噪声。我在复选框上写这个条件。隐藏/显示标签和按钮在Java中的jdialog中产生噪音?

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 
      } 

     } 
    }); 

注: 我还呼吁重绘(); & validate();但同样的问题发生。

+1

请您详细说明“*显示背景应用程序部分的一部分。”* – 2012-08-15 15:58:41

+1

必须确定遵守[不透明度](http://java.sun.com/products/jfc/tsc/articles/painting/index .html#道具)属性;引用的例子[here](http://stackoverflow.com/a/11967619/230513)。 – trashgod 2012-08-15 16:00:18

+0

亲爱的Harmeet一些红色的盒子出现在标签和按钮上。在复选框的主应用程序上也有一些图形和标签,当我点击复选框时,这些都显示在标签和按钮上 – 2012-08-15 16:04:16

回答

0

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

+0

谢谢亲爱的iconfused答案 – 2012-08-16 16:28:15

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); 
    } 
} 
+0

亲爱的。我通过添加“this.setOpaque(false)”来解决它;“在类的构造函数中。 – 2012-08-15 18:34:51

+0

+1 [sscce](http://sscce.org/)。 @adeelkhalid注意到'Box' _is a_' JPanel',它通常是不透明的设计。 – trashgod 2012-08-15 23:38:54