簡體   English   中英

刷新JFrame? Java秋千

[英]Refresh JFrame? Java Swing

我不知道如何解決這種情況:我有一個帶有JPanel的JFrame。 我在此JPanel中添加了兩個JButton。

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

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

我該怎么做才能改變背景顏色的第二個按鈕?

您有兩次定義按鈕變量,一次定義為實例變量,一次定義為局部變量。

擺脫局部變量:

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

現在,您的ActionListener代碼可以引用實例變量。

在您的示例中:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM