小编典典
要在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();
}
});
}
}
2020-11-19