要在Swing中绘制矩形,您应该:
- 首先,永远不要直接在Jframe或其他顶级窗口中绘制。
- 而是绘制一个JPanel,JComponent或其他最终从JComponent扩展的类。
- 您应该重写该
paintComponent(Graphics g)
方法。 - 您应该确保调用super方法
- 您应该使用JVM提供给方法的Graphics对象绘制矩形。
- 您应该在Swing教程中阅读绘画。
明确?
例如,
import java.awt.Dimension;import java.awt.Graphics;import javax.swing.*;public class DrawRect extends JPanel { private static final int RECT_X = 20; private static final int RECT_Y = RECT_X; private static final int RECT_WIDTH = 100; private static final int RECT_HEIGHT = RECT_WIDTH; @Override protected void paintComponent(Graphics g) { super.paintComponent(g); // draw the rectangle here g.drawRect(RECT_X, RECT_Y, RECT_WIDTH, RECT_HEIGHT); } @Override public Dimension getPreferredSize() { // so that our GUI is big enough return new Dimension(RECT_WIDTH + 2 * RECT_X, RECT_HEIGHT + 2 * RECT_Y); } // create the GUI explicitly on the Swing event thread private static void createAndShowGui() { DrawRect mainPanel = new DrawRect(); Jframe frame = new Jframe("DrawRect"); frame.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE); frame.getContentPane().add(mainPanel); frame.pack(); frame.setLocationByPlatform(true); frame.setVisible(true); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGui(); } }); }}


