我正在使用setColor
andgetColor
方法更改 JPanel 的颜色。
现在我想更改它,这样您就不必在调用所有 100 毫秒getColor
的函数中单击按钮。getColor
但是在大量使用谷歌之后,我根本找不到这样做的方法。
希望你能帮我解决这个问题。
代码
package tutorial9a;
/**
*
* @author HiveMind
*/
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.Color;
import java.util.Timer;
// 1. Import
// hier fehlt Code: zwei Imports
// hier fehlt Code: eine Implementierung
public class Tutorial09a extends JFrame implements ActionListener {
private static int st_fensternummer = 0;
private int fensternummer = 0;
// global fuer addActionListener
JButton bnCreate = new JButton("create1");
JButton bnsetBlue = new JButton("setBlue");
JButton bnsetRed = new JButton("setRed");
JButton bnsetGreen = new JButton("setGreen");
JButton bnClose = new JButton("Close");
JPanel panelBn = new JPanel();
Farbe farbe = Farbe.getInstance();
public Tutorial09a(Farbe farbe) {
this.farbe = farbe;
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setGUI();
}
private void setGUI() {
setSize(800, 100);
fensternummer = ++st_fensternummer;
setTitle("Tutorial09a: " + fensternummer);
this.getContentPane().setLayout(new BorderLayout());
panelBn.setLayout(new FlowLayout(FlowLayout.RIGHT));
panelBn.add(bnCreate);
panelBn.add(bnsetBlue);
panelBn.add(bnsetRed);
panelBn.add(bnsetGreen);
panelBn.add(bnClose);
panelBn.setBackground(farbe.color);
// hier fehlt Code: eine Registrierung
this.getContentPane().add(panelBn, BorderLayout.NORTH);
setFonts(getContentPane(), 18);
bnCreate.addActionListener(this);
bnsetBlue.addActionListener(this);
bnsetRed.addActionListener(this);
bnsetGreen.addActionListener(this);
bnClose.addActionListener(this);
} // setGUI
private void setFonts(Container cont, int size) {
for (int i = 0; i < cont.getComponentCount(); i++) {
Component c = cont.getComponent(i);
if (c instanceof JPanel) {
setFonts((JPanel) c, size);
} else {
c.setFont(new Font("Arial", Font.BOLD, size));
}
}
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == bnCreate) {
create_click();
}
if (e.getSource() == bnsetBlue) {
setBlue_click();
}
if (e.getSource() == bnsetRed) {
setRed_click();
}
if (e.getSource() == bnsetGreen) {
setGreen_click();
}
if (e.getSource() == bnClose) {
System.exit(0);
}
}
private void create_click() {
Tutorial09a frame = new Tutorial09a(farbe);
frame.setVisible(true);
frame.setLocation((int) (Math.random() * getWidth()), (int) (Math.random() * getHeight()));
}
private void setBlue_click() {
farbe.color = Color.BLUE;
getColor_click();
}
private void setRed_click() {
farbe.color = Color.RED;
getColor_click();
}
private void setGreen_click() {
farbe.color = Color.GREEN;
getColor_click();
}
private void getColor_click() {
panelBn.setBackground(farbe.color);
}
public static void main(String[] args) {
Farbe farbe2 = new Farbe();
Tutorial09a frame = new Tutorial09a(farbe2);
frame.setVisible(true);
}
} // Tutorial09a
// hier fehlt Code: eine Ableitung
class Farbe {
private static Farbe instance = new Farbe();
public Farbe() {
color = Color.BLUE;
}
public static Farbe getInstance() {
return instance;
}
public Color color;
// hier fehlt Code: eine Methode
}