我是 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 方法中迭代此列表并绘制所有内容。
导入javax.swing。; 导入 java.awt.;
公共类 HeartShape 扩展 JPanel {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
// Đặt màu cho hình trái tim
g.setColor(Color.RED);
// Vẽ hình trái tim
int[] xPoints = { 150, 200, 250, 300, 250, 200 };
int[] yPoints = { 200, 100, 100, 200, 300, 300 };
g.fillPolygon(xPoints, yPoints, xPoints.length);
// Vẽ thêm vòng cung để hoàn thành hình trái tim
g.fillArc(100, 100, 100, 100, 0, 180);
g.fillArc(200, 100, 100, 100, 0, 180);
}
public static void main(String[] args) {
JFrame frame = new JFrame("Vẽ Hình Trái Tim");
HeartShape heartShape = new HeartShape();
frame.add(heartShape);
frame.setSize(400, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}