如何在Java 中透過點擊按鈕在JPanel 中繪製一條線
給定的程式碼提供了一個圖形使用者介面(GUI )一個JPanel 和幾個按鈕。目標是單擊按鈕時在 JPanel 上繪製線條。
繪製線條
要在JPanel 上繪製線條,可以使用drawLine() 方法Graphics 物件的:
public void paint(Graphics graphics) { graphics.drawLine(10, 20, 300, 310); }
此程式碼從點(10, 20) 到點(300, 310)。您可以修改這些座標以在不同位置和方向繪製線條。
使用滑鼠事件進行事件處理
處理使用者交互,例如按鈕點擊和滑鼠移動,您可以使用事件偵聽器。在本例中,您將使用滑鼠偵聽器來偵測使用者何時點擊 JPanel。
public class MouseHandler extends MouseAdapter { @Override public void mouseClicked(MouseEvent arg0) { ///////////// } }
在 mouseClicked 方法中,您可以編寫程式碼以根據使用者的點擊繪製線條。
與 GUI 整合
要將畫線程式碼與 GUI 集成,您需要需要在 JPanel 中新增一個按鈕。單擊按鈕時,應觸發 MouseHandler 的 mouseClicked 方法並繪製線條。
JLabel label = new JLabel("New label"); label.addMouseListener(new MouseHandler() { @Override public void mouseClicked(MouseEvent arg0) { ///////////// } }); contentPane.add(label);
在此範例中,名為「New label」的按鈕被加入到 JPanel 中。當單擊時,它會呼叫 MouseHandler 的 mouseClicked 方法。您可以修改 mouseClicked 方法以包含繪製線條的程式碼。
處理多條線
如果要繪製多條線,可以儲存點擊的點由使用者繪製並在它們之間畫線。您可以使用清單
範例實作
這裡有一個完整的範例,示範了在JPanel 上繪製多條線:按鈕點擊次數:
import java.awt.BasicStroke; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.EventQueue; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Point; import java.awt.RenderingHints; import java.awt.event.ActionEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.ArrayList; import java.util.List; import javax.swing.AbstractAction; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.KeyStroke; public class Main { private ArrayList<Point> points = new ArrayList<>(); private boolean drawing; public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { new Main().display(); } }); } private void display() { JFrame f = new JFrame("LinePanel"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel panel = new JPanel(); panel.setPreferredSize(new Dimension(640, 480)); panel.addMouseListener(new MouseHandler()); panel.addMouseMotionListener(new MouseHandler()); f.add(panel); JButton clearButton = new JButton("Clear"); clearButton.addActionListener(new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { points.clear(); panel.repaint(); } }); f.add(clearButton, BorderLayout.SOUTH); f.pack(); f.setLocationRelativeTo(null); f.setVisible(true); } private class MouseHandler extends MouseAdapter { @Override public void mousePressed(MouseEvent e) { drawing = true; points.add(e.getPoint()); panel.repaint(); } @Override public void mouseReleased(MouseEvent e) { drawing = false; panel.repaint(); } @Override public void mouseDragged(MouseEvent e) { if (drawing) { points.add(e.getPoint()); panel.repaint(); } } } }
此範例建立一個帶有JPanel 和「清除」按鈕的JFrame。當使用者點擊 JPanel 時,它開始繪製一條線。當滑鼠移動時,線會延伸。放開滑鼠後,線條就完成了。 「清除」按鈕可用於清除所有行並重新開始。
以上是如何在 Java 中使用按鈕點擊在 JPanel 上畫線?的詳細內容。更多資訊請關注PHP中文網其他相關文章!