Java-AWT小程序-如何在我的程序中更改形状的大小?

Java-AWT小程序-如何在我的程序中更改形状的大小?,java,applet,awt,Java,Applet,Awt,此程序设计为采用用户决定的形状,并根据输入更改其大小 我有两个问题。一个是,用户必须将其作为字符串输入,但大小值是整数。如果我将整数转换为字符串,则转换时会出现null异常。(java.lang.Integer.parseInt(未知源)异常) 另一个问题是我不知道在actionperformed方法中添加什么。因为所有信息只需要转到绘制方法。如何将整数值传递到Paint方法中 import java.io.*; import java.util.*; import java.text.*;

此程序设计为采用用户决定的形状,并根据输入更改其大小

我有两个问题。一个是,用户必须将其作为字符串输入,但大小值是整数。如果我将整数转换为字符串,则转换时会出现null异常。(java.lang.Integer.parseInt(未知源)异常)

另一个问题是我不知道在actionperformed方法中添加什么。因为所有信息只需要转到绘制方法。如何将整数值传递到Paint方法中

import java.io.*;
import java.util.*;
import java.text.*;

import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.applet.Applet;


public class ChangeSize extends Applet
    implements ActionListener
{
    Button bttn1 = new Button ("Circle");
    Button bttn2 = new Button ("Square");
    Button bttn3 = new Button ("Triangle");
    Button bttn4 = new Button ("Rectangle");

    Label lab1; // text within applet
    TextField t1; // where user inputs text
    String input;

    int choice;

    public void init ()
    {
        this.setSize (500, 300);

        setBackground (Color.lightGray);

        lab1 = new Label ("Insert the size of the shape:");
        //int Size = Integer.parseInt (input);
        add (lab1);
        t1 = new TextField ();
        add (t1);

        bttn1.addActionListener (this); // circle button
        bttn2.addActionListener (this); // square button
        bttn3.addActionListener (this); // triangle button
        bttn4.addActionListener (this); // rectangle button

        add (bttn1);
        add (bttn2);
        add (bttn3);
        add (bttn4);

    }
    public void paint (Graphics g)
    {
        int xpoints[] = {25, 145, 25, 145, 25}; \
        int ypoints[] = {25, 25, 145, 145, 25};
        int npoints = 5;

        switch (choice)
        {
            case 1:
                if (choice == 1)
                    g.setColor (Color.red);
                g.fillOval (30, 40, 20, 20); // I want it to be (30,40, 20, size). Instead


            case 2:
                if (choice == 2)
                    g.fillRect (20, 40, 100, 100);
            case 3:
                if (choice == 3)
                    g.fillPolygon (xpoints, ypoints, npoints);
            case 4:
                if (choice == 4)
                    g.fillRect (20, 40, 50, 100);

                break;
        }

        showStatus ("Please seclect an option.");
    }
    public void actionPerformed (ActionEvent evt)
    {
        if (evt.getSource () == bttn1)
            choice = 1;
        else if (evt.getSource () == bttn2)
            choice = 2;
        else if (evt.getSource () == bttn3)
            choice = 3;
        else if (evt.getSource () == bttn4)
            choice = 4;

          Size = t1.getText ();

          // I dont know what to put here

        repaint ();
    }

}

您已经接近一个解决方案和您的注释,
//我希望它是(30,40,20,大小)。相反
握住钥匙

  • 为应用程序指定一个或多个int类字段以保持图形大小
  • 使用该大小在绘制例程中设置形状的大小
  • 允许用户更改actionPerformed方法中的大小
  • 您得到的文本将是一个字符串,您需要将其解析为int,然后才能通过
    Integer.parseInt(…)
    方法使用它
关于:

我有两个问题。一个是,用户必须将其作为字符串输入,但大小值是整数。如果我将整数转换为字符串,则转换时会出现null异常。(java.lang.Integer.parseInt(未知源)异常)


问题在于您试图解析int。您是在init方法中完成的,init方法是创建和构建小程序的方法,这是在用户有时间将输入添加到文本字段之前完成的。最好使用actionPerformed方法进行解析。

为什么要在2013年使用AWT?Swing是第三个千年开始时使用的GUI工具包<代码>this.setSize(500300)不要在小程序中这样做(无论是
applet
还是
JApplet
),大小都是用HTML设置的(可能是由JavaScript编写的)。