gpt4 book ai didi

Java Applet 通过用户输入绘制形状

转载 作者:行者123 更新时间:2023-12-01 09:59:35 25 4
gpt4 key购买 nike

这就是我想做的。有一个文本字段,用户输入他想要的内容。例如“矩形”或“矩形”、“圆形”或“圆形”之类的。然后用户按下按钮。之后该程序绘制用户在下面写下的形状。我无法使用“绘画”功能本身。不知怎的,情况变得更糟了。所以我使用了“paintRec”等。但我认为根据OOP,这不是真的。所以请告诉我解决这个问题的合法方法。那里有很多错误的编码。这是肯定的。告诉我如何才能做到这一点。我哪里做错了。谢谢。

public class extends Applet implements ActionListener{
TextField tf;
Button draw;

public void init(){
tf = new TextField(10);
draw = new Button("Draw");
draw.addActionListener(this);
add(tf);
add(draw);
}

public void actionPerformed(ActionEvent e) {
String shape = tf.getText();
if (shape.equals("rectangle") || shape.equals("RECTANGLE"))
{
paintRec(null);
}
if (shape.equals("circle") || shape.equals("CIRCLE"))
{
paintCirc(null);
}
}

public void paintRec(Graphics g){
g.drawRect(30,30,50,60);
}
public void paintCirc(Graphics g){
g.drawOval(30, 30, 50, 60);
}
}

最佳答案

问题出在这里:

public void actionPerformed(ActionEvent e) {
String shape = tf.getText();
if (shape.equals("rectangle") || shape.equals("RECTANGLE"))
{
paintRec(null);//passing null value to a method which has Graphics class instance and using it for drawing
}
if (shape.equals("circle") || shape.equals("CIRCLE"))
{
paintCirc(null);//same here
}
}

更好的方法是始终使用paint()方法并调用repaint()方法。使用下面的代码:

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

/*
<applet code = "Demo.class" width = 400 height = 200> </applet>
*/

public class Demo extends Applet implements ActionListener{
TextField tf;
Button draw;
String shape = "rectangle";//drawing rectangle by default

public void init(){
tf = new TextField(10);
draw = new Button("Draw");
draw.addActionListener(this);
add(tf);
add(draw);
}

public void actionPerformed(ActionEvent e) {
shape = tf.getText();
repaint();
}

public void paint(Graphics g){
super.paint(g);
if (shape.equals("rectangle") || shape.equals("RECTANGLE"))
{
g.drawRect(30,30,50,60);
}
if (shape.equals("circle") || shape.equals("CIRCLE"))
{
g.drawOval(30, 30, 50, 60);
}
else
{
//notify to enter the correct input
}
}
}

关于Java Applet 通过用户输入绘制形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36920124/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com