我是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;
}
}
任何有关如何让按钮工作的帮助将非常感激。提前谢谢。
答案 0 :(得分:3)
JApplet
而是在JPanel
上绘制并覆盖paintComponent
方法并调用super.paintComponet(g)
@Override
protected void paintComponent(Graphic g){
super.paintComponent(g);
...
}
请勿在{{1}}方法内拨打repaint()
。在paint()
3号是你最可怕的问题
答案 1 :(得分:3)
不要覆盖paint()。不要在绘制方法中调用repaint(),这会导致无限循环。
查看Custom Painting Approaches了解自定义paintint的两种常用方法的工作示例:
答案 2 :(得分:3)
您无法获取该行的原因是repaint()
发布了重新绘制该组件的请求。您正在使用它,就像它以某种方式刷新视图。您需要在代码中更改三件事,所有内容都在paint()
中:
repaint()
paint()
而不是paintComponent()
,以便在以后应该使用它们时绘制边框。 paint()
中调用super.paintComponent()
为您做一些初始化。对于未来的这种简单但良好的实践,这可能是不行的。以下是代码的样子:
paintComponent()