gpt4 book ai didi

java - 想要创建一个接受鼠标输入的框架并实现drawLines()

转载 作者:行者123 更新时间:2023-11-30 03:22:56 26 4
gpt4 key购买 nike

我正在尝试创建一个从鼠标获取输入的框架,并使用drawLines()在框架上制作x/o网格。但我只能做到两者之一。

这是我的代码:

public class Test extends JPanel {
public static void main(String[] args) {

Test t = new Test();
t.dispFrame();

}

public static void dispFrame()
{
JFrame frame = new JFrame("My New Frame");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setPreferredSize(new Dimension(300, 300));

frame.setResizable(false);

JPanel panel=new JPanel();
panel.addMouseListener(new MouseListener()
{
@Override
public void mouseClicked(MouseEvent e) {
System.out.println(":MOUSE_CLICK_EVENT:");
}

@Override
public void mousePressed(MouseEvent e) {
System.out.println("\n:MOUSE_PRESSED_EVENT:");
}

@Override
public void mouseReleased(MouseEvent e) {
System.out.println(":MOUSE_RELEASED_EVENT:");
}

@Override
public void mouseEntered(MouseEvent e) {
System.out.println(":MOUSE_ENTER_EVENT:");
}

@Override
public void mouseExited(MouseEvent e) {
System.out.println(":MOUSE_EXITED_EVENT:");
}

});
frame.add(panel);
frame.pack();
frame.setVisible(true);
}

@Override
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawLine(30,100,270,100);
g.drawLine(30,200,270,200);
g.drawLine(100,35,100,250);
g.drawLine(200,35,200,250);
}
}

最佳答案

如果你想重写面板上的 paintComponent() 方法,你应该这样做,

JPanel panel = new JPanel() {
@Override
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawLine(30,100,270,100);
g.drawLine(30,200,270,200);
g.drawLine(100,35,100,250);
g.drawLine(200,35,200,250);
}
};

在您的代码中,您将重写 Test 类中的 paintComponent(),如果您的 Test ,这将引发编译时错误类本身不是子类Component

关于java - 想要创建一个接受鼠标输入的框架并实现drawLines(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30909702/

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