[英]public void paintComponent(Graphics g) not working
我是Java Swing的初學者。 我的代碼是這樣的:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class LineDrawing extends JComponent
{
public static void main(String[] args)
{
JFrame frame = new JFrame();
JPanel panel = new JPanel();
int startX = 0;
int startY = 0;
int endX = 0;
int endY = 0;
addMouseListener(new MouseListener(){
@Override
public void mousePressed(MouseEvent e)
{
startX = e.getXOnScreen();
startY = e.getYOnScreen();
}
@Override
public void mouseReleased(MouseEvent e)
{
endX = e.getXOnScreen();
endY = e.getYOnScreen();
Draw d = new Draw();
d.lineDraw(startX,startY,endX,endY);
panel.add(d);
frame.add(panel);
}
@Override
public void mouseClicked(MouseEvent e){}
@Override
public void mouseEntered(MouseEvent e){}
@Override
public void mouseExited(MouseEvent e){}
});
addMouseMotionListener(new MouseMotionListener(){
@Override
public void mouseDragged(MouseEvent e)
{
endX = e.getXOnScreen();
endY = e.getYOnScreen();
}
@Override
public void mouseMoved(MouseEvent e){}
});
frame.setSize(500,400);
frame.setResizable(false);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
public class Draw extends JPanel
{
public void lineDraw(int x1,int y1,int x2,int y2)
{
@Override
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
g.setColor(Color.black);
g.drawLine(x1,y1,x2,y2);
}
}
}
}
當我執行此操作時,它給了我這個錯誤:
如何增強此代碼並解決上述錯誤。
我也看過其他代碼,但是paintComponent中發生了錯誤。
如果我將@Override放在paintComponent之前...則會出現此錯誤:
1)';' 聲明遺失。 2)非法開始表達。
就像BackSlash注釋的那樣,您不能在現有的內部聲明方法。
嘗試這個:
public class Draw extends JPanel {
private int[] line = new int[4];
public void lineDraw(int x1,int y1,int x2,int y2) {
line[0] = x1;
line[1] = y1;
line[2] = x2;
line[3] = y2;
repaint();
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.black);
g.drawLine(line[0],line[1],line[2],line[3]);
}
}
要繪制多條線,您需要將線數組添加到另一個數據結構(如ArrayList)中,並在paintComponent方法中迭代此列表並繪制所有內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.