從制造到創造
          軟件工程師成長之路
          posts - 292,  comments - 96,  trackbacks - 0
          需求:用實線把各個面板圈起來,然后把面板的名字寫在圈圈的左上角。

          原始畫面:


          由于原來的程序使用的是AWT中的Panel,而這個控件我們沒有設置titleBorder的方法。
          現在將更新為Swing中的JPanel面板,代碼分別為:
          舊代碼:
              Panel pRoboCtrl=new Panel();
              pRoboCtrl.setLayout(
          new GridLayout(5125));
              
              
          // Robot控制面板的第一排,面板的標題
                  Panel pR1=new Panel(); 
                  pR1.setLayout(
          new GridLayout(1123));
               
                  
          //Row One
              pR1.add(new Label("Robot Control",Label.CENTER));
          新代碼:
              JPanel pRoboCtrl=new JPanel();
              pRoboCtrl.setLayout(
          new GridLayout(4125));
              Border titleBorder1
          =BorderFactory.createTitledBorder("Robot Control");            
              pRoboCtrl.setBorder(titleBorder1);   
          原來的處理方式是將一個Label放到Panel中,然后將這個Panel放到外層的Panel中,新方式是將外層Panel定義成JPanel,然后設置Border的值為BorderFactory產生的一個實例。



          解決這個問題后,新問題又來了,兩個JPanel中的內容不一樣,上面多,下面少,但是現在面板卻是一樣大,要改成面板高度自動適應。
          其實這只需要修改一行代碼就可以了,代碼如下:
          舊代碼:
          CP.setLayout(new GridLayout(3125));  
          新代碼:
          CP.setLayout(new BoxLayout(CP, BoxLayout.Y_AXIS)); // 沿垂直方向布置組件
          舊代碼的處理方式是網格布局,新代碼的方式是用BoxLayout布局管理器,它會按要求垂直或水平分布。

          以下代碼創建了一個JPanel容器,它采用垂直 BoxLayout,在這個容器中包含兩個Button,這兩個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"));

          源代碼:下載
          posted on 2008-04-29 16:16 CoderDream 閱讀(15623) 評論(2)  編輯  收藏 所屬分類: 經驗點滴學習筆記

          FeedBack:
          # re: Java中為面板(JPanel)添加標題
          2008-07-09 23:12 | azack
          panel.setBorder(BorderFactory.createTitledBorder("標題"));


          BorderFactory中的方法:
          static TitledBorder createTitledBorder(Border border)
          創建一個空標題的新標題邊框,使其具有指定的邊框對象、默認的文本位置(位于頂線上)、默認的調整 (leading),以及默認的字體和文本顏色(由當前外觀確定)。

          static TitledBorder createTitledBorder(Border border, String title)
          向現有邊框添加一個標題,使其具有默認的位置(位于頂線上)、默認的調整 (leading),以及默認的字體和文本顏色(由當前外觀確定)。

          static TitledBorder createTitledBorder(Border border, String title, int titleJustification, int titlePosition)
          向現有邊框添加一個標題,使其具有指定的位置和默認字體和文本顏色(由當前外觀確定)。

          static TitledBorder createTitledBorder(Border border, String title, int titleJustification, int titlePosition, Font titleFont)
          向現有邊框添加一個標題,使其具有指定的位置和默認的文本顏色(由當前外觀確定)。

          static TitledBorder createTitledBorder(Border border, String title, int titleJustification, int titlePosition, Font titleFont, Color titleColor)
          向現有邊框添加一個標題,使其具有指定的位置、字體和顏色。
            回復  更多評論
            
          # 面板的嵌套
          2014-06-09 15:15 |
          謝謝  回復  更多評論
            

          <2008年4月>
          303112345
          6789101112
          13141516171819
          20212223242526
          27282930123
          45678910

          常用鏈接

          留言簿(9)

          我參與的團隊

          隨筆分類(245)

          隨筆檔案(239)

          文章分類(3)

          文章檔案(3)

          收藏夾(576)

          友情鏈接

          搜索

          •  

          積分與排名

          • 積分 - 458892
          • 排名 - 114

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 伊宁县| 佛教| 渭源县| 平塘县| 剑阁县| 西充县| 山阴县| 天镇县| 汕尾市| 抚宁县| 平阴县| 富源县| 漠河县| 浦县| 南岸区| 永仁县| 图木舒克市| 万州区| 西昌市| 易门县| 沅陵县| 横峰县| 蓬莱市| 饶河县| 宁河县| 福泉市| 桐柏县| 武强县| 嵩明县| 汤原县| 嘉义县| 陆河县| 林甸县| 湘潭县| 晋州市| 新昌县| 衡山县| 新津县| 青海省| 陵川县| 丰县|