Java 试图画线时按钮不起作用
我是Java新手,自学并尝试构建这个程序。它会在鼠标点击时创建点,但在按下按钮时不会画线。(最终这条线会把这些点连接起来,但我还没到那里。)首先,我只需要让它在按下时画一些东西,然后从那里开始工作。我尝试了很多方法,但都没能成功。这是我的密码:Java 试图画线时按钮不起作用,java,button,awt,paint,Java,Button,Awt,Paint,我是Java新手,自学并尝试构建这个程序。它会在鼠标点击时创建点,但在按下按钮时不会画线。(最终这条线会把这些点连接起来,但我还没到那里。)首先,我只需要让它在按下时画一些东西,然后从那里开始工作。我尝试了很多方法,但都没能成功。这是我的密码: public void init() { LineDrawListener listener = new LineDrawListener (); addMouseListener (listener); Button line
public void init()
{
LineDrawListener listener = new LineDrawListener ();
addMouseListener (listener);
Button lineGraph = new Button("Graph Line");
lineGraph.addActionListener (this);
add (lineGraph, BorderLayout.EAST);
setBackground (Color.yellow);
setSize (APPLET_WIDTH, APPLET_HEIGHT);
}
public void paint(Graphics g)
{
// draws dots on screen
g.setColor(Color.blue);
if (current != null)
{
xcoordinates.addElement (current.x);
ycoordinates.addElement (current.y);
count++;
g.fillOval (current.x-4, current.y-4, 10, 10);
repaint();
}
if (push == true)
{
g.drawLine (5, 5, 30 , 30);
repaint();
}
}
class LineDrawListener extends MouseAdapter
{
public void mouseClicked (MouseEvent event)
{
current = event.getPoint();
repaint();
}
}
public void actionPerformed (ActionEvent event)
{
Object action = event.getSource();
if(action==lineGraph)
{
push = true;
}
}
任何关于如何使按钮工作的帮助都将不胜感激。提前谢谢
JApplet
JPanel
上绘制,覆盖paintComponent
方法并调用super.paintComponet(g)
paint()
方法内部调用repaint()
。在actionPerformed()中调用它
JApplet
JPanel
上绘制,覆盖paintComponent
方法并调用super.paintComponet(g)
paint()
方法内部调用repaint()
。在actionPerformed()中调用它
无法获取要绘制的线的原因是
repaint()
发布了重新绘制组件的请求。您正在使用它,就好像它以某种方式刷新了视图一样。您需要更改代码中的三项内容,全部在paint()
:
paint()
paintComponent()
而不是paint()
,这样,如果以后需要绘制边框,就会绘制边框李>
paintComponent()
中调用super.paintComponent()
,为您进行一些初始化。也许不去做这么简单的事情是可以的,但将来要有好的实践public void paintComponent(Graphics g)
{
super.paintComponent(g);
// draws dots on screen
g.setColor(Color.blue);
if (current != null)
{
xcoordinates.addElement (current.x);
ycoordinates.addElement (current.y);
count++;
g.fillOval (current.x-4, current.y-4, 10, 10);
}
if (push == true)
{
g.drawLine (5, 5, 30 , 30);
}
}
无法获取要绘制的线的原因是
repaint()
发布了重新绘制组件的请求。您正在使用它,就好像它以某种方式刷新了视图一样。您需要更改代码中的三项内容,全部在paint()
:
paint()
paintComponent()
而不是paint()
,这样,如果以后需要绘制边框,就会绘制边框李>
paintComponent()
中调用super.paintComponent()
,为您进行一些初始化。也许不去做这么简单的事情是可以的,但将来要有好的实践public void paintComponent(Graphics g)
{
super.paintComponent(g);
// draws dots on screen
g.setColor(Color.blue);
if (current != null)
{
xcoordinates.addElement (current.x);
ycoordinates.addElement (current.y);
count++;
g.fillOval (current.x-4, current.y-4, 10, 10);
}
if (push == true)
{
g.drawLine (5, 5, 30 , 30);
}
}
1) 为了更快地获得更好的帮助,请发布一个。2) 请不要忘记在问题中添加“?”!有些人在页面中搜索“?”,如果“问题”中不存在,则直接转到行中的下一个(实际)问题。3) 请对代码、输入/输出和结构化文档(如HTML或XML)使用代码格式。要做到这一点,请选择样本并单击消息发布/编辑表单上方的
{}
按钮。标签错误。这是awt,不是swing,是button,不是jbutton。public void paint(Graphics g){…repaint();
将导致一个无限循环。无论您使用什么资源来学习编程,摆脱它们,直接进入Java教程。我认为,您需要特别关注..setSize(小程序宽度、小程序高度);
也不要这样做。小程序的大小在加载它的HTML中设置。顺便说一下-1)为什么要编写小程序?如果是因为老师的规范,请参考他们。2)为什么要使用AWT而不是Swing?关于放弃使用AWT组件的许多好理由,请参阅我的答案。如果您需要支持较旧的基于AWT的API,请参阅。1)为了尽快获得更好的帮助,请发布一条。2)请不要忘记在问题中添加“?”。有些人在“?”的页面,如果“问题”中不存在,则直接转到第行中的下一个(实际)问题。3)请对代码、输入/输出和结构化文档(如HTML或XML)使用代码格式。为此,请选择示例并单击{}
消息发布/编辑表单上方的按钮。标记错误。这是awt,不是swing,是button,不是jbutton。公共无效绘制(图形g){…重新绘制()
将导致无限循环。无论您使用什么资源来学习编程,请摆脱它们并直接转到Java教程。我认为,您需要特别关注..设置大小(小程序宽度,小程序高度)
也不要这样做。小程序的大小是在加载它的HTML中设置的。顺便说一句-1)为什么要编写小程序?如果是由于老师的规范,请参考他们。2)为什么要使用AWT而不是Swing?请参阅我的答案,以获得放弃使用AWT组件的许多好理由。如果需要支持旧的基于AWT的API,请参阅。@misssdavid您有什么问题吗我真的很想看到他们。不是说你错了,但我真的很想看到一些有效的证据sources@MistressDavid这些都是无效的信息来源。这是谷歌搜索。其中一些结果引出了一个问题,我问自己这些好处