從制造到創造
          軟件工程師成長之路
          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 閱讀(15625) 評論(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)

          友情鏈接

          搜索

          •  

          積分與排名

          • 積分 - 459265
          • 排名 - 114

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 宣威市| 宝鸡市| 专栏| 渝北区| 肃宁县| 酒泉市| 枝江市| 新建县| 吴江市| 武宣县| 珠海市| 北流市| 昔阳县| 睢宁县| 图们市| 越西县| 常德市| 油尖旺区| 五台县| 辽宁省| 新沂市| 南开区| 浦县| 孟州市| 华安县| 瑞昌市| 沧州市| 中方县| 吉林省| 赤水市| 桐庐县| 海晏县| 农安县| 天柱县| 正定县| 宁陵县| 湘潭县| 北川| 海原县| 鞍山市| 信宜市|