当我偶然发现此问题并且不知道如何解决时,我正在使用Head First Java。
我想在使用Mac OS时单击按钮时更改JPanel
小部件的颜色。
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class SimpleGui implements ActionListener {
JFrame frame;
JButton button;
public static void main(String[] args) {
SimpleGui gui = new SimpleGui();
gui.go();
} //close main
public void go() {
frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
button = new JButton("changes colour");
button.addActionListener(this);
MyPanel drawPanel = new MyPanel();
frame.getContentPane().add(BorderLayout.SOUTH,button);
frame.getContentPane().add(BorderLayout.CENTER,drawPanel);
frame.setSize(300, 300);
frame.setVisible(true);
} //close go
public void actionPerformed(ActionEvent event) {
frame.repaint();
button.setText("color changed");
}
} // close actionPerformed
// the widget whose color i want to change
class MyPanel extends JPanel {
public void paintComponent(Graphics g) {
g.setColor(Color.green); // i choose green as a color
g.fillRect(20, 50, 100, 100);
} //close paintComponent
} //close MyPanel
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class SimpleGui implements ActionListener {
JFrame frame;
JButton button;
public static void main(String[] args) {
SimpleGui gui = new SimpleGui();
gui.go();
} //close main
public void go() {
frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
button = new JButton("changes colour");
button.addActionListener(this);
MyPanel drawPanel = new MyPanel();
frame.getContentPane().add(BorderLayout.SOUTH,button);
frame.getContentPane().add(BorderLayout.CENTER,drawPanel);
frame.setSize(300, 300);
frame.setVisible(true);
} //close go
@Override
public void actionPerformed(ActionEvent event) {
frame.repaint();
button.setText("color changed");
}
} // close actionPerformed
// the widget whose color i want to change
class MyPanel extends JPanel {
public void paintComponent(Graphics g) {
super.paintComponent(g);
this.setBackground(Color.white);
g.setColor(Color.green); // i choose green as a color
g.fillRect(20, 50, 100, 100);
} //close paintComponent
} //close MyPanel
[paintCompenent
应该是paintComponent