【发布时间】:2021-08-01 21:56:23
【问题描述】:
我正在尝试在我的音乐播放器应用程序中添加类似 this 的东西。
我尝试向BorderLayout.SOUTH 添加一个矩形,但它从未出现在屏幕上。这是我所做的:
public class MyDrawPanel extends JPanel {
@Override
public void paintComponent(Graphics g) {
g.setColor(Color.GREEN);
g.fillRect(200,200,200,200);
}
public static void main(String[] args) {
JFrame frame = new JFrame();
MyDrawPanel a = new MyDrawPanel();
frame.getContentPane().add(BorderLayout.SOUTH,a);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(1000,1000);
frame.setVisible(true);
}
}
我只是没有尝试 200,200,200,200,但我尝试了很多值,即使在 for 循环的帮助下,它也从未出现在屏幕上。如果我使用CENTER 而不是SOUTH,它就会出现。我阅读了文档以检查 fillRect 的工作原理,但它只是说它添加了 x+width 和 y+height。点(0,0) 是左上角。我通过在CENTER 布局中添加一个矩形来检查这一点。我该怎么做?
我没有分享输出,因为它只是一个空白屏幕。
【问题讨论】:
-
我已将矩形添加到 JPanel 并将 JPanel 添加到 JFrame
-
在添加绘图面板之前,您需要将
LayoutManager设置为框架的ContentPane,即frame.getContentPane().setLayoutManager(new BorderLayout())。 -
JFrame默认是边框布局,所以不需要添加
-
自定义绘制的组件需要返回一个足够大的首选尺寸以显示其呈现的内容,作为对布局管理器的提示。侧边栏:在覆盖绘制方法时,始终首先调用
super方法。侧边栏 2:将frame.setSize(1000,1000);替换为frame.pack();..
标签: java swing jframe jpanel paintcomponent