imは、「ペイント」プログラムで作業しています。今のところ、私は1つのボタン "Ligne"と1つの描画可能なパネルを持つGUIを持っています。私のクラスPaint_Dessinでは、メソッド呼び出しTracerLigne()を呼び出します。この方法では、無作為なpaternをフォローする。私は何をしたいですかmouselistenerので、x1、y1 = click1とx2、y2 = 2をクリックします。これは私のコードです。あなたの絵画のJPanelにするMouseListenerを追加する必要があります(これはすることができ、これが機能するmouseListener描画のためにここでランダム描画線を変更します。
//cree une fenetre
public class QUESTION {
public static void main(String[] args) {
Paint_GUI test2 = new Paint_GUI();
}
}
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class Paint_GUI extends JFrame {
//Panels contenant tout les bouton de mon interface
private JPanel panelBtn;
//Bar d'outil Btn
private JButton BtnTracerLigne;
//créer l'objet Paint_Dessin
private Paint_Dessin espaceDessin = new Paint_Dessin();
public Paint_GUI() {
final int WINDOW_WIDTH = 650;
final int WINDOW_HEIGHT = 450;
setSize(WINDOW_WIDTH, WINDOW_HEIGHT);
setTitle("Paint v.2.0");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
// Appeler la methode qui construit la barre de BTN.
buildPanelBtn();
add(panelBtn, BorderLayout.NORTH);
add(espaceDessin, BorderLayout.CENTER);
// Afficher la fenetre.
setVisible(true);
}
private void buildPanelBtn() {
BtnTracerLigne = new JButton("Ligne");
BtnTracerLigne.addActionListener(new LigneListener());
// Creer le panel.
panelBtn = new JPanel();
// Ajouter les composantes au label
panelBtn.add(BtnTracerLigne);
}
private class LigneListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
espaceDessin.TracerLigne();
}
}
}
import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;
import java.util.*;
import java.awt.image.*;
class Paint_Dessin extends JPanel {
private static final long serialVersionUID = -2110723486099015303L;
private static final Random RAND = new Random();
private BufferedImage buffer = null;
@Override
public void paintComponent(final Graphics g) {
final Graphics2D g2 = (Graphics2D) g;
g2.clearRect(0, 0, getWidth(), getHeight()); // cleanup du composant
g2.drawImage(getBuffer(), null, 0, 0);
}
public void TracerLigne() {
final Graphics2D g2 = getBuffer().createGraphics();
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g2.setColor(Color.BLACK);
// dessin la ligne au pif dans l'espace visible
final int x1 = RAND.nextInt(500); // position en X1
final int y1 = RAND.nextInt(500); // position en Y1
final int x2 = RAND.nextInt(500); // position en X2
final int y2 = RAND.nextInt(500); // position en Y2
g2.drawLine(x1, y1, x2, y2);
Line2D.Double line = new Line2D.Double(x1, y1, x2, y2);
g2.fill(line);
repaint();
}
private BufferedImage getBuffer() {
if (buffer == null) {
buffer = new BufferedImage(getWidth(), getHeight(),
BufferedImage.TYPE_INT_ARGB);
}
return buffer;
}
}
:これを行うためのHow To Write a MouseListener
半擬似コードのようなものです。次回は、正しい形式のソースコードを投稿してください。コードを貼り付けるときは、ウィンドウでコードを選択し、コードボタン(バイナリアイコン)を押します。それは4つのスペースをインデントし、ページをソースコードとしてレンダリングします。 – I82Much