gpt4 book ai didi

java - 为什么这段代码没有画线?

转载 作者:行者123 更新时间:2023-12-02 08:04:23 25 4
gpt4 key购买 nike

我不知道为什么我的代码不起作用,但这让我发疯。

这是我的类,应该绘制按钮并创建要绘制的区域:

第二组代码是我需要制作 4 个 Canvas 的驱动程序,当我单击两次鼠标时,它会在两次单击之间绘制一条线,然后如果我尝试再次单击 Canvas ,则会重新绘制。

我收到以下错误:错误:方法声明无效;需要返回类型 添加鼠标监听器(这个); ^ 错误:类型的非法开始 添加鼠标监听器(这个); ^

public class Scribble extends JPanel implements MouseListener
{
addMouseListener(this);
int x, x1, y, y1;
boolean flag = false;

protected void paintComponent(Graphics g) {
super.paintComponent(g);

g.drawLine(x, y, x1, y1);
}


public void mouseReleased(MouseEvent e)
{

if (!flag){
x = e.getX();
y = e.getY();
flag = true;
}
else{
x1 = e.getX();
y1 = e.getY();
flag = false;
repaint();
}
}



public void mouseExited(MouseEvent e){}
public void mouseClicked(MouseEvent e){}
public void mousePressed(MouseEvent e){}
public void mouseMoved(MouseEvent e){}
public void mouseEntered(MouseEvent e){}

}



public class Lab8Draw extends JFrame{

public Lab8Draw(){
Color c = new Color(100, 10, 200);
setTitle("Lab 8 - Application #1");
setLayout(new GridLayout(2,2));
Scribble s = new Scribble();
s.setBackground(Color.WHITE);
add(s);
Scribble s1 = new Scribble();
s1.setBackground(Color.RED);
add(s1);
Scribble s2 = new Scribble();
s2.setBackground(c);
add(s2);
Scribble s3 = new Scribble();
s.setBackground(Color.BLUE);
add(s3);

}


public static void main (String[] args){


Lab8Draw frame = new Lab8Draw();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(800, 800);
frame.setVisible(true);
}
}

最佳答案

您必须实现MouseListener

public class Scribble extends JPanel implements MouseListener

并注册

Scribble s = new Scribble();
s.addMouseListener(s);

Java tutorials提供编写 MouseListener 的有用指南。

或者,您可以定义一个扩展 MouseInputAdapter 的内部类因为它已经有 MouseListener 方法的空实现。

关于java - 为什么这段代码没有画线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8394767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com