Je travaille sur un projet dans lequel j'essaie de créer un programme de peinture. Jusqu'à présent, j'ai utilisé Netbeans pour créer une interface graphique et configurer le programme.
Actuellement, je suis capable d'appeler toutes les coordonnées nécessaires pour dessiner à l'intérieur, mais je suis très confus sur la manière de peindre effectivement à l'intérieur.
À la fin de mon code, j'ai une tentative ratée de dessiner à l'intérieur du panneau.
Est-ce que quelqu'un peut expliquer / montrer comment utiliser les graphiques dans un exemple comme celui-ci?
Tous les exemples que j'ai trouvés créent une classe et l'étendent avec JPanel
mais je ne sais pas si je peux le faire puisque cela a été généré dans Netbeans.
Je dois dessiner à l'intérieur d'un JPanel
, à l'intérieur de mon JFrame
. Je ne sais pas où mettre la classe des graphiques.
Classe JavaPaintUI
package javapaint;
import java.awt.*;
import javax.swing.*;
public class JavaPaintUI extends javax.swing.JFrame {
public JavaPaintUI() {
initComponents();
}
private void initComponents() {
jPanel2 = new javax.swing.JPanel();
jPanel2.setBackground(new java.awt.Color(255, 255, 255));
jPanel2.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
jPanel2.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(java.awt.event.MouseEvent evt) {
jPanel2MousePressed(evt);
}
public void mouseReleased(java.awt.event.MouseEvent evt) {
jPanel2MouseReleased(evt);
}
});
jPanel2.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
public void mouseDragged(java.awt.event.MouseEvent evt) {
jPanel2MouseDragged(evt);
}
});
pack();
}//
int currentX, currentY, oldX, oldY;
private void jPanel2MouseDragged(java.awt.event.MouseEvent evt) {
if (tool == 1) {
currentX = evt.getX();
currentY = evt.getY();
oldX = currentX;
oldY = currentY;
System.out.println(currentX + " " + currentY);
System.out.println("PEN!!!!");
}
}
private void jPanel2MousePressed(java.awt.event.MouseEvent evt) {
oldX = evt.getX();
oldY = evt.getY();
System.out.println(oldX + " " + oldY);
}
//libération de la souris//
private void jPanel2MouseReleased(java.awt.event.MouseEvent evt) {
if (tool == 2) {
currentX = evt.getX();
currentY = evt.getY();
System.out.println("ligne!!!! de" + oldX + "à" + currentX);
}
}
//rendre l'interface visible//
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new JavaPaintUI().setVisible(true);
}
});
}
// Déclaration des variables - ne pas modifier
private javax.swing.JPanel jPanel2;
// Fin de la déclaration des variables
class jPanel2 extends JPanel {
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawString("BLAH", 20, 20);
g.drawRect(200, 200, 200, 200);
}
}
}
Capture d'écran
Tout l'ensemble est un JFrame
et la section blanche au centre est jPanel2
sur laquelle je veux dessiner.