Hallo!
arbeite gerade an einem kleinem Graphik-Programm.
Leider funktioniert eine Funktion nicht wie gewünscht.
Ich möchte die Hintergrundfarbe ändern, so bald ich "Hintergrundfarbe" ausgewählt habe.
Ich verstehe nicht, warum das beim ersten Mal nicht funktioniert.
Kann mir jemand helfen?
Hier der Code:
arbeite gerade an einem kleinem Graphik-Programm.
Leider funktioniert eine Funktion nicht wie gewünscht.
Ich möchte die Hintergrundfarbe ändern, so bald ich "Hintergrundfarbe" ausgewählt habe.
Ich verstehe nicht, warum das beim ersten Mal nicht funktioniert.
Kann mir jemand helfen?
Hier der Code:
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Drucker_01_1 extends JFrame {
public static void main(String[] args){
new Drucker_01_1();
}
public Drucker_01_1() {
setSize(600, 450);
setTitle("Druckers Uebung");
setDefaultCloseOperation(EXIT_ON_CLOSE);
MyJPanel panel= new MyJPanel();
Container c = getContentPane();
c.add(panel);
setVisible(true);
}
public class MyJPanel extends JPanel implements ActionListener, MouseListener, MouseMotionListener {
JRadioButton button1, button2, button3;
ButtonGroup group;
JSlider sliderR, sliderG, sliderB, sliderPen;
JLabel labelR, labelG, labelB, labelPen;
JButton button;
int colorR, colorG, colorB;
int rad, x = -100, y = -100;
int x1, x2, y1, y2;
boolean isButtonClicked = false;
public MyJPanel() {
setLayout(null);
addMouseListener(this);
addMouseMotionListener(this);
button1 = new JRadioButton("Linie", true);
button1.setBounds(300, 45, 100, 30);
button1.addActionListener(this);
button2 = new JRadioButton("handschriftlich", false);
button2.setBounds(420, 45, 200, 30);
button2.addActionListener(this);
button3 = new JRadioButton("Hintergrundfarbe", false);
button3.setBounds(40, 85, 150, 30);
button3.addActionListener(this);
labelR = new JLabel("rot");
labelR.setBounds(40, 10, 20, 25);
sliderR = new JSlider(0, 255, 0);
sliderR.setBounds(60, 10, 200, 25);
sliderR.setMajorTickSpacing(25);
sliderR.setPaintTicks(true);
labelG = new JLabel("gruen");
labelG.setBounds(40, 35, 20, 25);
sliderG = new JSlider(0, 255, 0);
sliderG.setBounds(60, 35, 200, 25);
sliderG.setMajorTickSpacing(25);
sliderG.setPaintTicks(true);
labelB = new JLabel("blau");
labelB.setBounds(40, 60, 20, 25);
sliderB = new JSlider(0, 255, 0);
sliderB.setBounds(60, 60, 200, 25);
sliderB.setMajorTickSpacing(25);
sliderB.setPaintTicks(true);
labelPen = new JLabel("Dicke");
labelPen.setBounds(280, 10, 100, 25);
sliderPen = new JSlider(2, 50, 25);
sliderPen.setBounds(360, 10, 200, 25);
sliderPen.setMajorTickSpacing(5);
sliderPen.setPaintTicks(true);
button = new JButton("Loeschen");
button.setBounds(410, 90, 100, 30);
button.addActionListener(this);
group = new ButtonGroup();
group.add(button1);
group.add(button2);
add(labelR);
add(sliderR);
add(labelG);
add(sliderG);
add(labelB);
add(sliderB);
add(labelPen);
add(sliderPen);
add(button);
add(button1);
add(button2);
add(button3);
}
public void paintComponent(Graphics g) {
if (isButtonClicked) {
super.paintComponent(g);
isButtonClicked = false;
}
if(button3.isSelected()){
setBackground(new Color(colorR, colorG, colorB));
g.setColor(Color.white);
if(button2.isSelected()){
g.fillOval(x-rad/2, y-rad/2, rad, rad);
}else {
g.drawLine(x1, y1, x2, y2);
}
} else {
g.setColor(new Color(colorR, colorG, colorB));
if(button2.isSelected()){
g.fillOval(x-rad/2, y-rad/2, rad, rad);
}else {
g.drawLine(x1, y1, x2, y2);
}
}
repaint();
}
public void actionPerformed(ActionEvent e) {
isButtonClicked = true;
repaint();
}
public void mouseClicked(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
x1 = e.getX();
y1 = e.getY();
}
public void mouseReleased(MouseEvent e) {
x = -100;
y = -100;
x2 = e.getX();
y2 = e.getY();
repaint();
}
public void mouseExited(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseMoved(MouseEvent e) {
}
public void mouseDragged(MouseEvent e) {
colorR = sliderR.getValue();
colorG = sliderG.getValue();
colorB = sliderB.getValue();
rad = sliderPen.getValue();
x = e.getX();
y = e.getY();
repaint();
}
}
}
Zuletzt bearbeitet von einem Moderator: