日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JFrame中使用jpanel来布局

發布時間:2025/3/18 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JFrame中使用jpanel来布局 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>


????????通俗的講jframe相當與桌子,而jpanel相當桌布,jbutton,jlabel等相當于杯子,碗筷等,杯子,碗筷雖然可以直接放到桌子上但不是很規范,應該放到桌布上才對。
以前我沒有用jpanel來布局。直接就是jframe.add(jlabel1);然后就是jlabel1.setbound();這種做法不妥,雖然窗口可以正常顯示,但是還是不規范,有事后會有點小問題,當組件更改的時候會有點問題,會有陰影(以前遇到過這種問題)。

正確的做法是
1.使用Container content=this.getContentPane();得到容器
2.實例化一個jpanel 例如JPanel? panel1=new?? javax.swing.JPanel();
3.實例化組件比如JButton等
4.使用panel1.add()方法添加組件
5.定位比如說JButton1.setbound(0,0,23,34);注意這里的坐標是相對于其所在的容器panel1
6.使用例如content.add(panel,BorderLayout.CENTER);方法把“桌布”(panel1)放到“桌子”content上。(JFrame的默認布局是BorderLayout)

示例代碼如下:

import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel;public class NewClass extends JFrame {public NewClass() {init();}public void init() {// 實例化JPanel等一些組件JPanel pan1 = new JPanel();JButton jb1 = new JButton("one in pan1");JButton jb2 = new JButton("two in pan1");JButton jb3 = new JButton("one out panel");JButton jb4 = new JButton("two out panel");// setBound()坐標是相對于pan1而言的jb1.setBounds(0, 0, 100, 30);jb2.setBounds(0, 200, 100, 30);// 得到容器為什么不需要實例化?可能是因為每個窗口都有這個對象Container cont = getContentPane();// 將pan1添加到容器中cont.add(pan1, BorderLayout.CENTER);cont.add(jb4, BorderLayout.WEST);cont.add(jb3, BorderLayout.EAST);// 將組件添加到pan1中,并對pan1做一些初始化pan1.setLocation(70, 70);pan1.setLayout(null);//注意此處的nullpan1.add(jb1);pan1.add(jb2);pan1.setBackground(Color.ORANGE);this.setBounds(0, 0, 400, 400);this.setVisible(true);}public static void main(String arg[]) {NewClass test = new NewClass();}}


問題1:做窗口程序時候

Container cont=getContentPane();

cont.add(pan1,BorderLayout.CENTER);//如何定位pan1位置?如何把pan1放到指定的坐標?
答:可以使用pan1.setbound()方法,相應的要設置cont.setLayout(null);????注意JPanel的默認布局是FlowLayout
  如果沒有設置cont.setLayout(null);系統會使用默認的布局管理器,那么pan1.setbound()就不會起作用,比如說上例cont沒有設置布局管理器為空。
  容器包含關系JFrame ?=>? Container ?=> ?JPanel ?=>(各種組件)

轉載于:https://my.oschina.net/u/2391658/blog/702631

總結

以上是生活随笔為你收集整理的JFrame中使用jpanel来布局的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。