hier ist mein Quellcode:
der erste ist die eigene Klasse von mir. (switchtest)
Das folgende ist das Programm bzw. der JFrame um die Farben wechseln zu lassen.
mein Problem ist jetzt, wenn ich die JButton betätige, passiert nix. Ich hab das vorher mit einer switch/case-Anweisung ausprobiert. Ging nicht. jetzt hab ich das mit if-Anweisungen probiert. geht ebenfalls nicht.
Mir kommt es so vor, als wenn in der paintComponent-Methode die globalen Variablen nicht "ankommen" bzw. nicht initialisiert werden. Das geht eigentlich nicht, da ich deren Status schon vorher ausgeben lasse. Der Status wird immer gesetzt, die Farbe wird eingestellt, aber das Programm zeichnet nicht den Kreis mit der gewünschten Farbe.
Langsam weiß ich auch nicht mehr weiter.
Ich danke vielmals für jegliche Hilfe.
Es kann sein das hier und da Fehler auftauchen oder unnötige Befehle. Editiere schon lange daran.
DANKE,
der aschmasch
Screenshot im Anhang
der erste ist die eigene Klasse von mir. (switchtest)
Java:
package gui14;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JPanel;
public class switchtest extends JPanel{
private static final long serialVersionUID = 1L;
Color farben;
int status=0;
int red,green,blue;
switchtest(){
super();
}
public int State(){
return status;
}
public void Color(){
System.out.println("aktuelle Farbe: "+farben);
}
public void setFarbe(int f){
this.status = f;
repaint();
if (status==1){
farben=Color.RED;
red=255;
green=0;
blue=0;
}
if (status==2){
farben=Color.GREEN;
red=0;
green=255;
blue=0;
}
if (status==3){
farben=Color.ORANGE;
red=255;
green=200;
blue=0;
}
}
public int getFarbe(){
return status;
}
public int getGreen(){
return green;
}
public int getRed(){
return red;
}
public int getBlue(){
return blue;
}
public void paintComponent(Graphics gr){
super.paintComponent(gr);
Graphics2D g1 = (Graphics2D) gr;
int r,g,b;
r=getRed();
g=getGreen();
b=getBlue();
System.out.println("Paint Komponente aufgerufen. Status: "+getFarbe());
// g1.setColor(new Color(r,g,b));
g1.setColor(farben);
g1.fillOval(0,0, 50, 50);
g1.drawOval(0,0, 50, 50);
}
}
Das folgende ist das Programm bzw. der JFrame um die Farben wechseln zu lassen.
Java:
package gui14;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;
import javax.swing.border.BevelBorder;
public class TestSwitch extends javax.swing.JFrame {
private JRadioButton jRadioButton1;
private JRadioButton jRadioButton3;
private JPanel jPanel1;
private JRadioButton jRadioButton2;
private switchtest test = new switchtest();
/**
* Auto-generated main method to display this JFrame
*/
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
TestSwitch inst = new TestSwitch();
inst.setLocationRelativeTo(null);
inst.setVisible(true);
}
});
}
public TestSwitch() {
super();
initGUI();
}
private void initGUI() {
try {
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
getContentPane().setLayout(null);
{
jRadioButton1 = new JRadioButton();
getContentPane().add(jRadioButton1);
jRadioButton1.setText("jRadioButton1");
jRadioButton1.setBounds(6, 7, 159, 23);
}
{
jRadioButton2 = new JRadioButton();
getContentPane().add(jRadioButton2);
jRadioButton2.setText("jRadioButton2");
jRadioButton2.setBounds(6, 30, 159, 23);
}
{
jRadioButton3 = new JRadioButton();
getContentPane().add(jRadioButton3);
jRadioButton3.setText("jRadioButton3");
jRadioButton3.setBounds(6, 53, 159, 23);
}
pack();
this.setSize(264, 128);
} catch (Exception e) {
//add your error handling code here
e.printStackTrace();
}
ButtonGroup bg1 = new ButtonGroup();
bg1.add(jRadioButton1);
jRadioButton1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jRadioButton1ActionPerformed(evt);
}
});
bg1.add(jRadioButton2);
jRadioButton2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jRadioButton2ActionPerformed(evt);
}
});
bg1.add(jRadioButton3);
jRadioButton3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jRadioButton3ActionPerformed(evt);
}
});
{
jPanel1 = new switchtest();
getContentPane().add(jPanel1);
jPanel1.setBounds(178, 11, 60, 60);
jPanel1.setBorder(BorderFactory.createEtchedBorder(BevelBorder.LOWERED));
}
}
private void jRadioButton1ActionPerformed(ActionEvent evt) {
test.setFarbe(1);
test.Color();
// test.status=1;
}
private void jRadioButton2ActionPerformed(ActionEvent evt) {
test.setFarbe(2);
test.Color();
}
private void jRadioButton3ActionPerformed(ActionEvent evt) {
test.setFarbe(3);
test.Color();
System.out.print("Status: "+test.getFarbe());
}
}
mein Problem ist jetzt, wenn ich die JButton betätige, passiert nix. Ich hab das vorher mit einer switch/case-Anweisung ausprobiert. Ging nicht. jetzt hab ich das mit if-Anweisungen probiert. geht ebenfalls nicht.
Mir kommt es so vor, als wenn in der paintComponent-Methode die globalen Variablen nicht "ankommen" bzw. nicht initialisiert werden. Das geht eigentlich nicht, da ich deren Status schon vorher ausgeben lasse. Der Status wird immer gesetzt, die Farbe wird eingestellt, aber das Programm zeichnet nicht den Kreis mit der gewünschten Farbe.
Langsam weiß ich auch nicht mehr weiter.
Ich danke vielmals für jegliche Hilfe.
Es kann sein das hier und da Fehler auftauchen oder unnötige Befehle. Editiere schon lange daran.
DANKE,
der aschmasch
Screenshot im Anhang