Changer la couleur de la forme de dessin spécifique lorsque je clique dessus AWT
Fermé
mawan1
Messages postés
2
Date d'inscription
dimanche 28 novembre 2021
Statut
Membre
Dernière intervention
11 janvier 2022
-
Modifié le 28 nov. 2021 à 13:32
mawan1 Messages postés 2 Date d'inscription dimanche 28 novembre 2021 Statut Membre Dernière intervention 11 janvier 2022 - 28 nov. 2021 à 16:48
mawan1 Messages postés 2 Date d'inscription dimanche 28 novembre 2021 Statut Membre Dernière intervention 11 janvier 2022 - 28 nov. 2021 à 16:48
A voir également:
- Changer la couleur de la forme de dessin spécifique lorsque je clique dessus AWT
- Changer dns - Guide
- Changer la couleur de la barre des taches - Guide
- Mise en forme conditionnelle excel - Guide
- Changer clavier qwerty en azerty - Guide
- Affichez l'ensemble des diapositives à l'écran avec 5 diapositives par ligne. repérez le groupe de 3 diapositives avec une fleur identique alignées verticalement, supprimez la première d'entre elles. un nouveau groupe de 3 diapositives avec une fleur identique alignées verticalement apparaît, supprimez encore la première d'entre elles. déplacez les 3 premières diapositives de la 4e ligne au début de la présentation. quel mot est formé par les lettres de la première colonne ? - Forum Powerpoint
2 réponses
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
28 nov. 2021 à 15:50
28 nov. 2021 à 15:50
Bonjour,
Tu peux y arriver assez facilement à condition d'avoir un Container qui contient plusieurs Component, chacun étant responsable du dessin d'une seule forme, avec sa couleur propre.
Exemple :
Tu peux y arriver assez facilement à condition d'avoir un Container qui contient plusieurs Component, chacun étant responsable du dessin d'une seule forme, avec sa couleur propre.
Exemple :
import java.awt.*; import java.awt.event.*; import java.awt.geom.*; public class DessinFrame { public static void main(String... args) { Frame frame = new Frame(); frame.setSize(600, 400); frame.setLocationRelativeTo(null); frame.add(new DessinContainer( new Ellipse2D.Double(108, 110, 200, 200), new Ellipse2D.Double(160, 150, 20, 20), new Ellipse2D.Double(240, 150, 20, 20), new Rectangle2D.Double(160, 220, 100, 40))); frame.setVisible(true); frame.addWindowListener(new WindowAdapter(){ @Override public void windowClosing(WindowEvent e) { frame.dispose(); } }); } } class DessinContainer extends Container { private static final long serialVersionUID = 1L; private static final Color[] availableColors = { Color.BLACK, Color.BLUE, Color.CYAN, Color.DARK_GRAY, Color.GRAY, Color.GREEN, Color.LIGHT_GRAY, Color.MAGENTA, Color.ORANGE, Color.PINK, Color.RED, Color.WHITE, Color.YELLOW }; private final DessinComponent[] components; public DessinContainer(Shape... shapes) { setLayout(null); setLocation(0, 0); setSize(Short.MAX_VALUE, Short.MAX_VALUE); components = new DessinComponent[shapes.length]; for (int i = 0; i < shapes.length; i++) { components[i] = new DessinComponent(shapes[i], availableColors[0]); add(components[i]); } addMouseListener(new MouseAdapter(){ @Override public void mouseClicked(MouseEvent e) { for (DessinComponent component : components) { if (component.contains(e.getPoint())) { Color randomColor = availableColors[(int) (Math.random() * availableColors.length)]; component.setColor(randomColor); } } } }); } } class DessinComponent extends Component { private static final long serialVersionUID = 1L; private Shape shape; private Color color; public DessinComponent(Shape shape, Color color) { this.shape = shape; this.color = color; setLocation(0, 0); setSize(Short.MAX_VALUE, Short.MAX_VALUE); } public void setColor(Color color) { this.color = color; repaint(); } @Override public boolean contains(Point point) { return shape.contains(point); } @Override public void paint(Graphics g) { Graphics2D g2 = (Graphics2D) g; g2.setColor(color); g2.draw(shape); } }
mawan1
Messages postés
2
Date d'inscription
dimanche 28 novembre 2021
Statut
Membre
Dernière intervention
11 janvier 2022
28 nov. 2021 à 16:48
28 nov. 2021 à 16:48
Merci pour votre aide ! SVP une dernière demande, je voulais aussi realiser un code permettant de construire des lignes, des cercles et des rectangles.
j'ai ajouter droplist avec "Rectangle", "Ligne" et "Cercle" et je veux que lorsque je clique sur un de ces boutons et qu'ensuite sur un autre bouton DrawComponent, la figure de l'un de ces types est affichée à l'endroit où vous venez de cliquer.
le code que j'ai fait :
Si vous pouvez svp le modifier pour affichée la figure à l'endroit où vous venez de cliquer.
j'ai ajouter droplist avec "Rectangle", "Ligne" et "Cercle" et je veux que lorsque je clique sur un de ces boutons et qu'ensuite sur un autre bouton DrawComponent, la figure de l'un de ces types est affichée à l'endroit où vous venez de cliquer.
le code que j'ai fait :
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ComponentListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.awt.geom.Area;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Rectangle2D;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Dialogue {
public static void main(String[] args) {
new Dialogue();
}
public Dialogue(){
EventQueue.invokeLater(new Runnable(){
@Override
public void run(){
JFrame frame = new JFrame();
frame.add(new Panel(Color.RED));
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
frame.addWindowListener((WindowListener) new WindowAdapter(){
@Override
public void windowClosing(WindowEvent windowEvent) {
System.exit(0);
}
});
}
});
}
public class Panel extends JPanel implements ActionListener,MouseListener {
private String shapeName;
private int x=10,y=20;
private int shape;
private Color color;
public Panel(Color color) {
//super(new BorderLayout());
this.color = color;
String[] petStrings = { "Cercle", "Rectangle", "Ligne" };
//Create the combo box, select the item at index 4.
//Indices start at 0, so 4 specifies the pig.
JComboBox petList = new JComboBox(petStrings);
petList.setSelectedIndex(2);
petList.addActionListener(this);
//Lay out the demo.
add(petList);
this.addMouseListener(new MouseAdapter(){
@Override
public void mouseClicked(MouseEvent e) {
int currentX = e.getX();
int currentY = e.getY();
System.out.print("am mouse clicked");
if(shapeName.equals("Ligne")) {
shape = 1;
}
else if(shapeName.equals("Rectangle")) {
shape = 2;
}
else if(shapeName.equals("Cercle")) {
shape = 3;
}
repaint();
}
});
}
public void paint(Graphics gui) {
super.paint(gui);
Graphics2D g2d = (Graphics2D) gui.create();
g2d.setColor(color);
System.out.print("am Paint method");
if(shape == 1)
g2d.drawLine(x, y, x+20,y+30);
if(shape == 2)
g2d.drawRect(x,y,30,50);
if(shape == 3)
g2d.drawOval(x,y,30,30);
g2d.dispose();
}
/** Listens to the combo box. */
public void actionPerformed(ActionEvent e) {
System.out.print("am action listener");
JComboBox cb = (JComboBox)e.getSource();
shapeName = (String)cb.getSelectedItem();
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
}
}
Si vous pouvez svp le modifier pour affichée la figure à l'endroit où vous venez de cliquer.