繁体   English   中英

Swing:无法绘制矩形

[英]Swing: can't paint rectangle

我有这个简单的代码: JFrame添加了自定义Jpanel ,它覆盖了paintComponent方法来绘制矩形。 然而,window 上没有任何显示:

import javax.swing.*;

import java.awt.*;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class TestGui extends JFrame  {
    public TestGui()  {
        setLayout(new FlowLayout());

        JPanel panel = new JPanel();

        panel.add(new JLabel("H E L L O"));
        getContentPane().add(panel);

        getContentPane().add(new MyPanel());

        setSize(100, 100);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        repaint();
        revalidate();
        setVisible(true);
    }

    class MyPanel extends JPanel {
        private int squareX = 50;
        private int squareY = 50;
        private int squareW = 20;
        private int squareH = 20;

        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            g.setColor(Color.RED);
            g.fillRect(squareX,squareY,squareW,squareH);
        }
    }

    public static void main(String[] args) {
        TestGui gui = new TestGui();
    }
}

默认情况下,空的JPanel的大小为0x0 ,因此当您将其添加到 UI 时,布局管理器(在这种情况下)会接受它的请求并将其设为0x0

首先添加...

@Override
public Dimension getPreferredSize() {
    return new Dimension(100, 100);
}

到我的MyPanel

此外, repaintrevalidate调用不会做任何事情,因为 window 尚未附加到本机对等点(渲染表面)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM