把一辆车画成多边形,让它在java swing中移动

jv2fixgn  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(310)

我试图画一辆车作为一个多边形的摆动和移动它左右时,点击按钮
问题是我不能在运行程序时在屏幕上显示按钮,也不能使它们工作
我不知道在使用多边形时如何实现用户界面中的按钮
这是我的code:-

package java2d;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Java2D extends JFrame{

    int xValues[];
    int yValues[];
    private JButton Right, Left;

    public Java2D() {
        super( "Drawing lines, rectangles and ovals" );
        setSize( 500, 300 );
        setVisible( true );
    }

    public void paint( Graphics g ) {

        int xValues[] = { 40, 100, 130, 230, 260, 320, 320, 40 };
        int yValues[] = { 120, 120, 40, 40, 120, 120, 170, 170 };
        Polygon polygon1 = new Polygon( xValues, yValues, 8 );
        g.setColor(Color.blue);
        g.drawPolygon( polygon1 );

        Right = new JButton("Right");
        Left = new JButton("Left");

        Right.setSize(50, 50);
        Left.setSize(50, 50);

        Right.setLocation(100, 200);
        Left.setLocation(200, 200);

        g.add(Right);
        g.add(Left);

    }

    public void actionPerformed(ActionEvent event) {
        if(event.getActionCommand().equals("Right")){
            for (int i=0; i<xValues.length;i++) {
            xValues[i] = xValues[i] + 10;
            yValues[i] = yValues[i] + 10;
            }
        }

        if(event.getActionCommand().equals("Left")){
            for (int i=0; i<xValues.length;i++) {
            xValues[i] = xValues[i] + 10;
            yValues[i] = yValues[i] + 10;
            }
        }

    repaint();
    }

    public static void main(String[] args) {
        Java2D application = new Java2D();
        application.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    }
}

谢谢

wgxvkvu9

wgxvkvu91#

许多问题:
变量名不应以大写字符开头。
自定义绘制是通过覆盖 paintComponent() a方法 JPanel 然后将面板添加到框架中。阅读swing教程中有关自定义绘制的部分,了解更多信息和工作示例,以便开始使用。从工作代码开始,根据您的需求修改它。
切勿在绘制方法中创建swing组件。当swing确定组件需要重新绘制时,会不断调用painting方法,因此您不希望继续创建新按钮。
通常,要将按钮添加到框架中,您需要创建一个jpanel并将按钮添加到面板中。然后使用将面板添加到框架中 frame.add(buttonsPanel, BorderLayout.PAGE_START) . 然后您可以使用 frame.add(paintingPanel, BorderLayout.CENTER) . 有关更多信息和示例,请阅读swing教程中有关布局管理器的部分。
而不是尝试更新用于创建 Polygon 你应该使用 translate() 方法 Polygon .
请随时参考swing教程,因为它包含了大多数swing基础知识的示例。

相关问题