Cambie el color del dibujo haciendo clic en él AWT JAVA
Quiero agregar a este código la funcionalidad de cambiar el color del dibujo haciendo clic en él, pero no sé si este código lo soportará.
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javax.swing.JButton;
public class TestGraphic {
public static void main(String[] args) {
new TestGraphic();
}
public TestGraphic() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
Frame frame = new Frame();
frame.add(new Composants());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
frame.addWindowListener((WindowListener) new WindowAdapter() {
@Override
public void windowClosing(WindowEvent windowEvent){
System.exit(0);
}
});
}
});
}
public class Composants extends Container {
private Color color = Color.BLACK;
private List<color> availableColors = new ArrayList<>(16);
public Composants() {
setLayout(new BorderLayout());
availableColors.add(Color.BLACK);
availableColors.add(Color.BLUE);
availableColors.add(Color.CYAN);
availableColors.add(Color.DARK_GRAY);
availableColors.add(Color.GRAY);
availableColors.add(Color.GREEN);
availableColors.add(Color.LIGHT_GRAY);
availableColors.add(Color.MAGENTA);
availableColors.add(Color.ORANGE);
availableColors.add(Color.PINK);
availableColors.add(Color.RED);
availableColors.add(Color.WHITE);
availableColors.add(Color.YELLOW);
JButton btn = new JButton("Cambiar Color");
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Collections.shuffle(availableColors);
color = availableColors.get(0);
repaint();
}
});
add(btn, BorderLayout.SOUTH);
}
@Override
public Dimension getPreferredSize() {
return new Dimension(600, 400);
}
public void close() {
addComponentListener((ComponentListener) new WindowAdapter() {
@Override
public void windowClosing(WindowEvent windowEvent){
System.exit(0);
}
});
}
@Override
public void paint(Graphics gui) {
super.paint(gui);
Graphics2D g2d = (Graphics2D) gui.create();
g2d.setColor(color);
g2d.drawOval(108, 110, 200, 200);
g2d.drawOval(160, 150, 20, 20);
g2d.drawOval(240, 150, 20, 20);
g2d.drawRect(160, 220, 100, 40);
g2d.dispose();
}
}
}
Lo que encontré en internet es crear las clases Rectangle
y Circle
, pero si pudiera hacerlo aquí sería genial, gracias.
davy.ai
Para agregar la funcionalidad de cambiar el color del dibujo haciendo clic en él, se puede agregar un mouse listener a la clase Composants. Dentro del mouse listener, se pueden obtener las coordenadas del clic del mouse y verificar si se encuentra dentro de los límites del círculo o el rectángulo. Si es así, se puede cambiar el color correspondientemente y volver a pintar la gráfica.
Aquí hay una implementación de ejemplo:
En esta implementación, las clases Rectangle y Circle no se usan, en su lugar, se ha utilizado la clase Ellipse2D para dibujar los círculos. Se ha agregado un mouse listener para verificar si el clic del mouse está dentro de los límites de las formas y cambiar el color correspondientemente. Tenga en cuenta que el método paint ahora dibuja todas las formas utilizando el objeto Graphics2D.