我已经用Java编程了大约六个月了,并且在JPanels和JFrames中完成了许多与Graphics相关的工作。但最近我遇到了问题。我之前制作的所有JFrame总是setUndecorated(false)
,但我需要创建一个setUndecorated(true)
。所以我像往常一样尝试将frame.setUndecorated(true)
放在所有frame
的规格之上,所以它看起来像这样:
public static void main(String[] args){
JFrame frame = new JFrame("Frame");
frame.setUndecorated(true);
frame.setSize(600, 800);
frame.setVisible(true);
frame.add(new custompanel());
}
custompanel
类:
public class custompanel{
public void paintComponent(Graphics g){
g.fillRect(100, 100, 100, 100);
}
}
g
中的custompanel
不会绘制任何内容。
但是,如果我删除frame.setUndecorated(true)
或将其更改为frame.setUndecorated(false)
,则会绘制一个矩形。
有什么想法吗?
答案 0 :(得分:5)
假设CustomPanel
延伸JComponent
或JPanel
,请在添加CustomPanel
后使框架可见。调用super.paintComponent(g)
是绘制任何背景组件的好主意。
frame.setVisible(true);