2017-09-23 183 views
0

我不知道如何解決這種情況: 我有一個帶有JPanel的JFrame。我向這個JPanel添加了兩個JButton。刷新JFrame? Java Swing

級的大型機

import java.awt.Color; 
import javax.swing.JFrame; 

public class MainFrame extends JFrame{ 
    public MainFrame(){ 
     this.setSize(100,100); 
     MainPanel panel = new MainPanel(); 
     this.add(panel); 
     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     this.setVisible(true); 
    } 
} 

和mainPanel中有兩個按鈕

import java.awt.BorderLayout; 
import java.awt.Color; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.JButton; 
import javax.swing.JPanel; 

public class MainPanel extends JPanel implements ActionListener{ 
    JButton button, example; 

    public MainPanel(){ 
     this.setLayout(new BorderLayout()); 
     JButton button = new JButton("New"); 
     button.addActionListener(this); 
     JButton example = new JButton("example"); 
     this.add(button, BorderLayout.NORTH); 
     this.add(example, BorderLayout.CENTER); 
    } 
    @Override 
    public void actionPerformed(ActionEvent event) { 
     if (event.getSource().equals(button)){ 
      example.setEnabled(false); 
      example.setBackground(Color.yellow); 
     } 
    } 
} 

,並開始類主要

public class Main { 
    public static void main (String[] args){ 
     MainFrame frame = new MainFrame(); 
    } 
} 

我應該怎麼做來改變背景顏色第二個按鈕?

回答

1

你有你的按鈕變量定義兩次,一次作爲一個實例變量,一次作爲局部變量。

擺脫局部變量:

//JButton example = new JButton("example"); 
example = new JButton("example"); 

現在你的ActionListener代碼引用實例變量。

-1

在您的例子:

JButton button, example; // <-- Here, you create your two (protected) variables 

public MainPanel(){ 
    this.setLayout(new BorderLayout()); 
    JButton button = new JButton("New"); // <-- And here, you create a local variable 
    button.addActionListener(this); 
    JButton example = new JButton("example"); // <-- Here, another local variable 
    this.add(button, BorderLayout.NORTH); 
    this.add(example, BorderLayout.CENTER); 
} 

@Override 
public void actionPerformed(ActionEvent event) { 
    if (event.getSource().equals(button)){ 
     example.setEnabled(false); 
     example.setBackground(Color.yellow); 
    } 
} 
+1

(1)這指出了問題可能是什麼,但沒有提供關於如何解決它的答案。在任何情況下,問題/解決方案早已提供。沒有必要混亂與試圖重複的答案論壇。 – camickr

+0

我有回答這個問題也許2分鐘後,其他答案,所以我不知道比另一個答案 – 0ddlyoko