我正在尝试将汽车绘制为摆动的多边形,并在单击按钮时左右移动
问题是我在运行程序时无法在屏幕上显示按钮并且无法使它们工作
而且我不知道如何在使用多边形时实现用户界面内部的按钮
这是我的代码:-
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 );
}
}
谢谢
答案 0 :(得分:1)
许多问题:
变量名不应以大写字符开头。
自定义绘画是通过覆盖 paintComponent()
的 JPanel
方法,然后将面板添加到框架来完成的。阅读 Custom Painting 上的 Swing 教程中的部分,了解更多信息和工作示例,帮助您入门。从工作代码开始,然后根据您的要求对其进行修改。
切勿在绘画方法中创建 Swing 组件。当 Swing 确定需要重新绘制组件时,会不断调用绘制方法,因此您不想继续创建新按钮。
通常要将按钮添加到框架中,您需要创建一个 JPanel 并将按钮添加到面板中。然后使用 frame.add(buttonsPanel, BorderLayout.PAGE_START)
将面板添加到框架中。然后您可以使用 frame.add(paintingPanel, BorderLayout.CENTER)
将您的绘画面板添加到框架中。阅读关于 Layout Managers 的 Swing 教程中的部分,了解更多信息和示例。
与其尝试更新用于创建 Polygon
的数组的值,不如使用 translate()
的 Polygon
方法。
随身携带对 Swing 教程的参考,因为它包含大多数 Swing 基础知识的示例。