Hallo Leute!
Ich komm gerade überhaupt nicht weiter.
Ich hab mal ein JPanel DrawSquare das mir ein Rechteck mit einer bestimmten Farbe zeichnet!
DrawSquare füge ich dann an das PixelGrapPanel hinzu!
So mein Problem ist es, ich möchte einen ChangeListener zum instanzierten DrawSquare hinzufügen und dann sollte das Rechteck immer wieder mit einer anderen Farbe upgedated werden sobald sich die Farbe ändert. Hab schon unzählige Varianten ausprobier aber das funktioniert nicht so wirklich.
Hier mal die 2 Klassen!
Ich hoffe jemand kann mir damit weiterhelfen.
Gruß
Christian
Ich komm gerade überhaupt nicht weiter.
Ich hab mal ein JPanel DrawSquare das mir ein Rechteck mit einer bestimmten Farbe zeichnet!
DrawSquare füge ich dann an das PixelGrapPanel hinzu!
So mein Problem ist es, ich möchte einen ChangeListener zum instanzierten DrawSquare hinzufügen und dann sollte das Rechteck immer wieder mit einer anderen Farbe upgedated werden sobald sich die Farbe ändert. Hab schon unzählige Varianten ausprobier aber das funktioniert nicht so wirklich.
Hier mal die 2 Klassen!
Code:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JPanel;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class DrawSquare extends JPanel implements ChangeListener {
/**
*
*/
private static final long serialVersionUID = 1038294787887332353L;
private Color color = null; //default Color
public DrawSquare(Color c) {
this.color = c;
this.setPreferredSize(new Dimension(60,60));
}
public void updateColor(Color c) {
if(c.equals(this.color)) {
this.color = c;
}
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawRect(5, 5, 50, 50);
g.setColor(color);
g.fillRect(6, 6, 49, 49);
}
@Override
public void stateChanged(ChangeEvent e) {
this.repaint();
}
}
Code:
package ck.pixelgrap;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.MouseInfo;
import java.awt.Point;
import java.awt.PointerInfo;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.awt.image.BufferedImage;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.border.TitledBorder;
import javax.swing.event.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import ck.pixelgrap.widgets.square.DrawSquare;
/*
* This class represents the panel in the GUI
*/
public class PixelGrapPanel extends JPanel implements MouseMotionListener {
/**
* Variable declaration
*/
private static final long serialVersionUID = -1548909448747888595L;
private DrawSquare colorSquare = null;
private PixelThread pixelColor = null;
private JPanel labelPanel = null;
private JLabel rgbValue = null;
private JLabel hexValue = null;
private JLabel cmykValue = null;
private Color lastcolor = null;
public PixelGrapPanel() {
this.setLayout(new BorderLayout());
this.setPreferredSize(new Dimension(200, 100));
//this.setSize(200, 100);
//this.addMouseMotionListener(this);
//add Titel and Border
TitledBorder title;
title = BorderFactory.createTitledBorder("PixelGrap");
this.setBorder(title);
pixelColor = new PixelThread();
colorSquare = new DrawSquare(pixelColor.getColor());
colorSquare.updateColor(pixelColor.getColor());
colorSquare.addChangeListener(this); //erkennt addChangeListener nicht!!!
this.add(colorSquare, BorderLayout.WEST);
System.out.println(pixelColor.getColor().getBlue() + " " + pixelColor.getColor().getGreen());
//Add Color Labels
labelPanel = new JPanel();
labelPanel.setLayout(new BoxLayout(labelPanel, BoxLayout.Y_AXIS));
rgbValue = new JLabel( "RGB : ");
hexValue = new JLabel( "HEX : #");
cmykValue = new JLabel("CMYK :");
labelPanel.add(rgbValue);
labelPanel.add(hexValue);
labelPanel.add(cmykValue);
this.add(labelPanel, BorderLayout.CENTER);
}
//Setter & Getter Methods
public void setColor(Color c) {
this.lastcolor = c;
}
public Color getColor() {
return this.lastcolor;
}
@Override
public void mouseDragged(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseMoved(MouseEvent arg0) {
if(arg0 != null) {
System.out.println("Hello here Iam");
}
}
}
Ich hoffe jemand kann mir damit weiterhelfen.
Gruß
Christian