Ich schreibe ein Programm mit Java, das ein Rechteck auf dem Bildschirm basierend auf Mauskoordinaten zeichnet. Ich habe jedoch Probleme, die richtige Farbe für dieses Rechteck zu erhalten. Das Ziel besteht darin, ein Rechteck mit der richtigen Farbe zu zeichnen, nachdem der Benutzer auf den Bildschirm geklickt und eine Farbe ausgewählt hat. Ich habe Fallszenarien ausprobiert, kann sie aber nicht richtig ausführen. Die nicht funktionierenden Teile sind kommentiert.Problem mit Rechteck Zeichnung Java Swing GUI
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.geom.*;
import java.awt.event.*;
public class test extends JFrame implements ActionListener, MouseListener, KeyListener {
Shape box = new Rectangle2D.Float(10, 10, 10, 10);
public test() {
setSize(250,150);
addMouseListener(this);
addKeyListener(this);
Color bgColor = new Color(125,125,125);
setBackground(bgColor);
}
public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
test frame = new test();
frame.setVisible(true);
}
});
}
public void actionPerformed(ActionEvent ae) {
}
public void drawRectangle(int x, int y) {
Graphics g = this.getGraphics();
// KeyEvent e = this.getKeyChar();
// switch (test.keyTyped()) {
// case b:
g.drawRect(x, y, x, y);
g.setColor(Color.BLUE);
g.fillRect(x, y, 2, 2);
// case r:
// g.drawRect(x, y, x, y);
// g.setColor(Color.RED);
// g.fillRect(x, y, 2, 2);
// case y:
// g.drawRect(x, y, x, y);
// g.setColor(Color.Yellow);
// g.fillRect(x, y, 2, 2);
// case g:
// g.drawRect(x, y, x, y);
// g.setColor(Color.GREEN);
// g.fillRect(x, y, 2, 2);
//}
}
int x, y;
public void mouseClicked(MouseEvent e) {
x = e.getX();
y = e.getY();
repaint();
}
public void keyTyped(KeyEvent e) {
char c = e.getKeyChar();
c = Character.toLowerCase(c);
}
@Override
public void paint(Graphics g) {
g.setColor(Color.white);
g.drawString("Click anywhere to draw a rectangle", 50, 250);
g.drawString("Choose color by pressing the corresponding key on your keyboard: ", 50, 270);
g.setColor(Color.blue);
g.drawString("B: Blue ", 50, 285);
g.setColor(Color.red);
g.drawString("R: Red ", 95, 285);
g.setColor(Color.yellow);
g.drawString("Y: Yellow ", 140, 285);
g.setColor(Color.green);
g.drawString("G: Green ", 195, 285);
drawRectangle(x, y);
}
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
}
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
}
„Applet“ entfernt von Ihren Tags und Titel - du bist nicht ein Applet in dem obigen Code, sondern eine JFrame zu schaffen. –