java - JFrame 中不需要的 JPanel 边框

标签 java swing awt

我试图用 JPanel 填充 JFrame 并为 JPanel 着色,但由于某种原因,我在右下边缘出现边框。

我的代码:

public class Main extends JFrame {

    public MyPanel myPanel = new MyPanel();

    public static void main(String args[])
    {
        Main main = new Main();
        main.init();
    }

    public void init()
    {
        this.setSize(300,400);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setContentPane(myPanel);
        this.setVisible(true);
    }

    @Override
    public void paint(Graphics g)
    {
        myPanel.paintComponents(g);
    }

    class MyPanel extends JPanel
    {
        @Override
        public void paintComponents(Graphics g)
        {
            g.fillRect(0, 0, getWidth(), getHeight());
        }
    }
}

演出:

enter image description here

最佳答案

您正在使用此方法使绘制链短路

@Override
public void paint(Graphics g) {
    myPanel.paintComponents(g);
}

这并没有真正做任何有用的事情,因此您可以将其删除。此外,您还需要在 MyPanel

中重写 paintComponent 而不是 paintComponents
    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.fillRect(0, 0, getWidth(), getHeight());
    }

旁白:

  • 您可以简单地创建一个面板并调用 setBackground 来获取此功能

关于java - JFrame 中不需要的 JPanel 边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28726737/

相关文章:

java - Android 媒体播放器错误 1,-1002

java - 使用 JAXB 解析响应 XML

java - Spring 不加载属性

java - 在 JList 中添加并显示对象

java - 在 ActionListener 中调用对象不起作用,但在对象类 main 中起作用

java - 在另一个线程运行时执行任务

Java JFrame BufferStrategy 与 Canvas BufferStrategy

java - 多服务器到单服务器

java - Repaint() 没有在 Java while 循环中被调用

java - 调整大小时重新绘制框架?