【发布时间】:2014-01-18 15:03:30
【问题描述】:
我是 Java 新手,自学并尝试构建这个程序。单击鼠标时它将创建点,但按下按钮时不会画线。 (最终这条线将连接点,但我还没有到那里。)首先,我只需要让它在被推动并从那里工作时绘制一些东西。我尝试了多种方法,但无法正常工作。这是我的代码:
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;
}
}
任何有关如何使按钮工作的帮助将不胜感激。提前致谢。
【问题讨论】:
-
1) 为了尽快获得更好的帮助,请发帖 SSCCE。 2)请不要忘记添加“?”提问!有些人在页面中搜索“?”如果“问题”中不存在,则直接转到下一个(实际)问题。 3) 请对代码、输入/输出和结构化文档(如 HTML 或 XML)使用代码格式。为此,请选择示例并单击消息发布/编辑表单上方的
{}按钮。 -
标签错误。这是awt,不是swing,是button,不是jbutton。
-
public void paint(Graphics g) { ... repaint();会导致无限循环。无论您使用什么资源来学习编程,摆脱它们并直接转到 Java 教程。据我所知,您需要特别关注Performing Custom Painting.. -
setSize (APPLET_WIDTH, APPLET_HEIGHT);也不要那样做。小程序的大小在加载它的 HTML 中设置。 -
BTW - 1) 为什么要编写小程序?如果是由于规范。老师请发给Why CS teachers should stop teaching Java applets。 2) 为什么选择 AWT 而不是 Swing?请参阅我在 Swing extras over AWT 上的回答,因为有很多放弃使用 AWT 组件的充分理由。如果您需要支持较旧的基于 AWT 的 API,请参阅 Mixing Heavyweight and Lightweight Components。