2016-04-03 45 views
0

這是我的代碼。我在Check1標籤上存在問題,因爲我希望在答案正確的情況下它可見,順便說一下,我正在使用卡布局。 我刪除不重要碼我如何setVisible(true)從另一個類的JLabel

public class Category1 extends JPanel { 
public static JLabel Check1; 
    public Category1() { 


    Check1 = new JLabel(newImageIcon(getClass().getResource("Buttons/Check.png"))); 
    Check1.setBounds(75 , 305, 40, 40); 
    Check1.setVisible(false); 
    add(Check1); 

}} 

和這裏的其他類,如果你點擊Submit1按鈕,如果在JTextField中的文本是正確的,我想檢查1按鈕可見。

public class QuizPanelc1 { 
    JPanel Quiz1; 
    JTextField Answer1; 
    JButton Submit1; 

public QuizPanelc1(){ 

    Answer1 = new JTextField(); 
    Answer1.setBounds(180, 480, 200, 40); 
    Quiz1.add(Answer1); 
    Submit1 = new JButton(new ImageIcon(getClass().getResource("Buttons/SubmitButton.png"))); 
    Submit1.setBounds(390, 480, 40, 40); 
    Quiz1.add(Submit1); 

ButtonHandler1 events1 = new ButtonHandler1(); 
    Submit1.addActionListener(events1); 
    Back1.addActionListener(events1) 

} 
private class ButtonHandler1 implements ActionListener { 
    public void actionPerformed (ActionEvent eventClick) { 
     Object event = eventClick.getSource(); 
     Category1 c1 = new Category1(); 

     if(Submit1==event) 
     { 
      if(Answer1.getText().equalsIgnoreCase("Fila")) 
      { 
       Answer1.setEditable(false); 

       JOptionPane.showMessageDialog(null, "Correct"); 
       c1.Check1.setVisible(true); 

      } 
      else 
      { 

       JOptionPane.showMessageDialog(null, "Wrong Answer"); 

      } 
     } 
     else 
     { 
     System.exit(1); 
     } 
}} 

回答

1

製作CHECK1類的領域,而不是靜態的,然後作出一個公共方法用於設置可見:

例子:

public class Category1 extends JPanel { 
    private JLabel check1; 

    public void setCheck1Visibility(boolean visible) { 
     check1.setVisible(visible); 
    } 

    public Category1() { 
     check1 = new JLabel(new ImageIcon(getClass().getResource("Buttons/Check.png"))); 
     check1.setBounds(75, 305, 40, 40); 
     check1.setVisible(false); 
     add(check1); 
    } 
} 

然後因爲你有一個實例類別1,你可以做:

Category1 c1 = new Category1(); 
c1.setCheck1Visibility(true); 
or 
c1.setCheck1Visibility(false); 
+0

嗨Xoce웃Pepeúpa我讓JLabel Check1成爲這個班的一個領域。然後在另一個類中調用名爲setCheck1Visibility的公共方法,並將其設置爲true。 if(Answer1.getText()。equalsIgnoreCase(「Fila」)) { Answer1.setEditable(false); c1.setCheck1Visibility(true); JOptionPane.showMessageDialog(null,「Correct」); } 但它仍然不可見 – Mashiro

+0

然後你需要檢查是否一切正常確定與* setBounds *或與圖像... –

+0

當我設置Check1 setCheck1Visibility(真)在Category1它工作正常但當我在QuizPanelc1上c1.setCheck1Visiblity(true)時,它不起作用或者它不可見。 – Mashiro