java 詳解JFrame結構的分層

2021-09-07 16:49:28 字數 1966 閱讀 9497

frame層次結構圖:

每乙個頂級容器,都有乙個隱藏的中間容器,叫做root pane。root pane 管理著content pane 、menu bar 和 其它一些容器。

例如:

jframe frame=new jframe("測試");

frame.setbackground(color.red);

frame.setsize(300, 300);

frame.setvisible(

true);

當程式執行出來後,會發現背景色並沒有設定成功,這是因為content pane繪製在root pane之上,所以content pane的背景覆蓋了,所以看不見。

把content pane隱藏了就可以了:

jframe frame=new jframe("測試");

frame.getcontentpane().setvisible(

false);//

設定content pane不可見

frame.setbackground(color.red);

frame.setsize(300, 300);

frame.setvisible(

true);

這樣解決並不好,因為設定在content pane上的元件就不可見了,

通常設定為這樣:

jframe frame=new jframe("測試");

jpanel p=new

jpanel();

frame.getcontentpane().setbackground(color.red);

p.setopaque(

false);//

設定透明

frame.add(p);

//在p上新增一些元件...

frame.setsize(300, 300);

frame.setvisible(

true);

上面中的 p.setopaque(false) 表示設定jpane為背景透明的,只有jpane背景透明才可以看見content panel的背景。

上面修改的是content panel的背景,其實也可以修改jpane的背景:

jframe frame=new jframe("測試");

jpanel p=new

jpanel();

frame.add(p);

p.setopaque(

true);//

設定不透明,預設是不透明的

p.setbackground(color.red);//

設定背景

frame.setsize(300, 300);

frame.setvisible(

true);

這裡需要注意的就是jpanel元件是不透明的,也就是isopaque()返回true。不過其它一些元件預設就是透明的,比如jlabel

jframe frame=new jframe("測試");

jpanel p=new

jpanel();

jlabel label=new jlabel("test");

label.setopaque(

true);//

設定不透明

label.setbackground(color.red);//

設定背景

JFrame介面層次結構

學到swing介面的時候,難免會遇到設定背景的情況,那麼如何新增就略是複雜了。原本以為是直接在jframe介面直接新增個就好,可是卻會發現這根本行不通。之後才知道jframe新增有幾個步驟,一般是在layeredpane最底層新增乙個帶的標籤,然後將 contentpane設定為透明,並將上面的部件...

JFrame類的用法

1 jframe 建立乙個無標題的視窗。2 jframe string s 建立乙個標題為s的視窗。3 public void setbounds int a,intb,int width,int heigth 4 public void setsize int width,int heigth 5...

JFrame常用的幾個方法

setextendedstate jframe.maximized both 介面顯示最大化 setundecorated true 去掉視窗的裝飾,刪除標題欄 getrootpane setwindowdecorationstyle jrootpane.none 採用指定的視窗裝飾風格 getro...