原始畫面:

由于原來(lái)的程序使用的是AWT中的Panel,而這個(gè)控件我們沒(méi)有設(shè)置titleBorder的方法。
現(xiàn)在將更新為Swing中的JPanel面板,代碼分別為:
舊代碼:
Panel pRoboCtrl=new Panel();
pRoboCtrl.setLayout(new GridLayout(5, 1, 2, 5));
// Robot控制面板的第一排,面板的標(biāo)題
Panel pR1=new Panel();
pR1.setLayout(new GridLayout(1, 1, 2, 3));
//Row One
pR1.add(new Label("Robot Control",Label.CENTER));
新代碼:pRoboCtrl.setLayout(new GridLayout(5, 1, 2, 5));
// Robot控制面板的第一排,面板的標(biāo)題
Panel pR1=new Panel();
pR1.setLayout(new GridLayout(1, 1, 2, 3));
//Row One
pR1.add(new Label("Robot Control",Label.CENTER));
JPanel pRoboCtrl=new JPanel();
pRoboCtrl.setLayout(new GridLayout(4, 1, 2, 5));
Border titleBorder1=BorderFactory.createTitledBorder("Robot Control");
pRoboCtrl.setBorder(titleBorder1);
原來(lái)的處理方式是將一個(gè)Label放到Panel中,然后將這個(gè)Panel放到外層的Panel中,新方式是將外層Panel定義成JPanel,然后設(shè)置Border的值為BorderFactory產(chǎn)生的一個(gè)實(shí)例。pRoboCtrl.setLayout(new GridLayout(4, 1, 2, 5));
Border titleBorder1=BorderFactory.createTitledBorder("Robot Control");
pRoboCtrl.setBorder(titleBorder1);

解決這個(gè)問(wèn)題后,新問(wèn)題又來(lái)了,兩個(gè)JPanel中的內(nèi)容不一樣,上面多,下面少,但是現(xiàn)在面板卻是一樣大,要改成面板高度自動(dòng)適應(yīng)。
其實(shí)這只需要修改一行代碼就可以了,代碼如下:
舊代碼:

CP.setLayout(new BoxLayout(CP, BoxLayout.Y_AXIS)); // 沿垂直方向布置組件
舊代碼的處理方式是網(wǎng)格布局,新代碼的方式是用BoxLayout布局管理器,它會(huì)按要求垂直或水平分布。
以下代碼創(chuàng)建了一個(gè)JPanel容器,它采用垂直 BoxLayout,在這個(gè)容器中包含兩個(gè)Button,這兩個(gè)Button沿垂直方向分布,并且保持像素為 5 的固定垂直間隔。
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));// 沿垂直方向布置組件
panel.add(new JButton("Button1"));
panel.add(Box.createVerticalStrut(5));
panel.add(new JButton("Button2"));
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));// 沿垂直方向布置組件
panel.add(new JButton("Button1"));
panel.add(Box.createVerticalStrut(5));
panel.add(new JButton("Button2"));
源代碼:下載
posted on 2008-04-29 16:16 CoderDream 閱讀(15620) 評(píng)論(2) 編輯 收藏 所屬分類: 經(jīng)驗(yàn)點(diǎn)滴 、學(xué)習(xí)筆記