2017-09-23 1 views
0

Ich kann diesen Fall nicht lösen: Ich habe einen JFrame mit JPanel darauf. Ich habe diesem JPanel zwei JButtons hinzugefügt.Refresh JFrame? Java Swing

Klasse Mainframe

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

und Mainpanel mit zwei Knöpfen

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

und Startklasse Haupt

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

Was soll ich tun, Hintergrundfarbe zweite Taste ändern?

Antwort

1

Sie haben Ihre Schaltflächenvariablen zweimal definiert, einmal als Instanzvariable und einmal als lokale Variable.

Sie sich von der lokalen Variablen los:

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

Jetzt können Sie Ihre Action Code die Instanz-Variable verweisen.

-1

In Ihrem Beispiel:

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-) Dies weist darauf hin, was das Problem sein könnte, aber bietet keine Antwort, wie man es beheben. In jedem Fall wurde das Problem/die Lösung bereits früher gegeben. Keine Notwendigkeit, das Forum mit versuchten doppelten Antworten zu verwirren. – camickr

+0

Ich habe Antwort auf diese Frage vielleicht 2 Minuten nach der anderen Antwort, so wusste ich nicht, als es eine andere Antwort gab – 0ddlyoko