小编典典
我在您的代码中看到了一些问题:
您正在扩展JFrame,您不应该这样做,因为可以将其读DrawShapesGUI 为a JFrame,JFrame是一个刚性容器,而是基于JPanels创建您的GUI 。有关更多信息,请参见使用Exting vs在类内部调用Java Swing。
您有一个称为的成员,figureID但您从未使用过它,因为每次figureID在每个“ ActionPerformed”方法中创建一个新的局部变量时:
int figureID = 5;
int从每个句子中删除,可能这就是为什么什么都没发生的问题。
您正在覆盖paint()方法,而应该覆盖paintComponent()。但是,我必须祝贺你至少打来电话super.paint(g)。
根本不是问题,但是一种改进是使用Shapes API绘制形状而不是调用g.drawLine()和所有这些调用。
您正在使用java.awt.EventQueue.invokeLater()应将Java 1.3版本更改为SwingUtilities.invokeLater()(再次改进)
ActionListener仅使用其中的一种方法和条件,就可以以更好的方式改进s。
考虑到以上几点,我制作了一个新程序,该程序产生以下输出:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Polygon;
import java.awt.Shape;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.geom.Arc2D;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Line2D;
import java.awt.geom.Rectangle2D;
import javax.swing.ButtonGroup;
import java