ボタンをクリックすると、特定の期間、パネルにランダムな色が表示される Java アプリケーションを作成しようとしています。
しかし、私の問題は、ボタンをクリックした後、フレームの色が一度だけ変化し、ボタンのタイトルが「U Clicked me」に変化しないことです。
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
class MyDrawPanel extends JPanel {
@Override
public void paintComponent(Graphics g) {
// g.fillRect(0, 0, this.getWidth(), this.getHeight())
int red = (int) (Math.random() * 255);
int green = (int) (Math.random() * 255);
int blue = (int) (Math.random() * 255);
Color randomizecolor = new Color(red, green, blue);
g.setColor(randomizecolor);
g.fillRect(0, 0, this.getWidth(), this.getHeight());
}
}
public class CustomWidget implements ActionListener {
JButton button;
JFrame frame;
public void Gui() {
frame = new JFrame();
MyDrawPanel pan = new MyDrawPanel();
button = new JButton("-- Click Me to Change Me --");
frame.add(BorderLayout.SOUTH, button);
frame.add(BorderLayout.CENTER, pan);
button.addActionListener(this);
frame.setSize(500, 500);
frame.setTitle("Random Color GUI");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
public void asd() {
button.setText("U clicked Me");
for (int i = 0; i < 150; i++) {
frame.repaint();
try {
Thread.sleep(10);
} catch (Exception x) {
}
}
button.setText("Again Click me");
}
public static void main(String[] args) {
CustomWidget obj = new CustomWidget();
obj.Gui();
}
@Override
public void actionPerformed(ActionEvent e) {
this.asd();
// this.button.setText("-- Click Me to Change Me --");
}
}