如何在一个矩形中创建另一个矩形?

3
在我的paintComponent中,我使用drawRect绘制了一个矩形。然而,我想要使矩形的轮廓更加粗,但是我不知道如何实现。所以我想在现有的矩形内部再画一个矩形。我尝试使用另一个drawRect,但矩形不在中心位置。
感谢那些能够提供帮助的人!
1个回答

4
g2d.setStroke(new BasicStroke(6));

Swing组件的paintComponent(Graphics)方法中传递的参数应该是一个Graphics2D实例。可以将其强制转换为此类型。

请参见此示例,其中有3个笔画被叠加。

Stroke It

import javax.swing.*;
import java.awt.*;

class StrokeIt {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                StrokePanel sp = new StrokePanel();
                sp.setPreferredSize(new Dimension(400,100));
                sp.setBackground(Color.BLUE);
                JOptionPane.showMessageDialog(null, sp);
            }
        });
    }
}

class StrokePanel extends JPanel {

    int pad = 12;

    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2d = (Graphics2D)g;

        g2d.setColor(Color.RED);
        g2d.setStroke(new BasicStroke(10));
        g2d.drawRect( 0+pad, 0+pad,
            getWidth()-(2*pad), getHeight()-(2*pad) );

        g2d.setColor(Color.YELLOW);
        g2d.setStroke(new BasicStroke(6));
        g2d.drawRect( 0+pad, 0+pad,
            getWidth()-(2*pad), getHeight()-(2*pad) );

        g2d.setColor(Color.ORANGE);
        g2d.setStroke(new BasicStroke(2));
        g2d.drawRect( 0+pad, 0+pad,
            getWidth()-(2*pad), getHeight()-(2*pad) );
    }
}

这只适用于Graphics2D吗?你需要为Graphics2D放置super.paintComponent吗? - alicedimarco
谢谢,我已经成功完成了。 - alicedimarco

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接