Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在矩形中创建矩形?_Java_Swing_Drawrect_Graphics2d_Paintcomponent - Fatal编程技术网

Java 如何在矩形中创建矩形?

Java 如何在矩形中创建矩形?,java,swing,drawrect,graphics2d,paintcomponent,Java,Swing,Drawrect,Graphics2d,Paintcomponent,在我的paintComponent中,我有drawRect,它绘制一个矩形。然而,我想使矩形的轮廓变厚,但我不知道如何做。所以我想在现有的矩形内再做一个矩形。我尝试放置另一个drawRect,但矩形不在中心 谢谢那些愿意帮忙的人 g2d.setStroke(new BasicStroke(6)); 传递给Swing组件的paintComponent(Graphics)方法的参数实际上应该是Graphics2D实例。它可以被铸造成一个 请参见此示例,其中3个笔划是分层的 import java

在我的paintComponent中,我有drawRect,它绘制一个矩形。然而,我想使矩形的轮廓变厚,但我不知道如何做。所以我想在现有的矩形内再做一个矩形。我尝试放置另一个drawRect,但矩形不在中心

谢谢那些愿意帮忙的人

g2d.setStroke(new BasicStroke(6));

传递给Swing组件的
paintComponent(Graphics)
方法的参数实际上应该是
Graphics2D
实例。它可以被铸造成一个

请参见此示例,其中3个笔划是分层的

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吗?谢谢,我已经成功完成了。