2012-08-15 74 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