有才華的人,別忘記給滋潤你的那塊土壤施肥

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            28 隨筆 :: 5 文章 :: 147 評論 :: 0 Trackbacks

                  下周完我就工作滿一年啦。回想大部分的時間都被好奇心給占去了,這個組件好玩弄一下,那個好玩也弄一下,最后手里還是什么都沒得,而本身的工作是基于swing,倒是沒花多少精力,最后也是對swing一知半解,今天想研究研究下talbe,卻發現被這么個問題給卡住了。
                 是這樣的給TableModel傳入表頭和內容,但是直接將table加到frame中去,table顯示不了表頭如圖1,但是將table放到JScrollPane中去,卻能顯示,如圖2。

                 

                                               圖一      
                       
                                       圖二                                                              
              為什么這樣?實在是弄不明白,不知道有那位高手指點下不?
               源碼如下:

          package kissJava.JTable;

          import javax.swing.*;
          import javax.swing.table.*;
          import java.awt.*;
          public class TestSortedTable {
              
          public static void main(String args[]){
                  JFrame frame 
          = new JFrame("JTable的header測試");
                  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                  Object rows[][] 
          ={
                          
          "王明""中國"44 },
                          
          "姚明""中國"25 },
                          
          "趙子龍""西蜀"1234 },
                          
          "曹操""北魏"2112 },
                          
          "Bill Gates""美國"45 },
                          
          "Mike""英國"33 } }
          ;
                  String columns[] 
          = "姓名""國籍""年齡" };
                  TableModel model 
          = new DefaultTableModel(rows, columns);
                  JTable table 
          = new JTable(model);
                  
                  RowSorter
          <TableModel> sorter = new TableRowSorter<TableModel>(model);
                  table.setRowSorter(sorter);
                  
                  JScrollPane pane 
          = new JScrollPane(table);
                  frame.add(pane, BorderLayout.CENTER);
          //顯示header        
              
          //    frame.add(table, BorderLayout.CENTER);//不顯示header    
                  frame.setSize(300150);
                  frame.setVisible(
          true);
            }

          }

          posted on 2008-03-21 12:31 kissjava 閱讀(1022) 評論(6)  編輯  收藏 所屬分類: swing

          評論

          # re: 關于JTable,為何這樣? 2008-03-21 13:52 枯寬
          剛找了下,發現不用JScrollPane的時候,加上frame.getContentPane().add(table.getTableHeader(), BorderLayout.NORTH); 也能顯示header,可swing為什么要這樣???  回復  更多評論
            

          # re: 關于JTable,為何這樣? 2008-03-21 15:42 枯寬
          呼呼。找了jdk。上面說就那樣要么用JScollPane要么add(table.getTableHeader())

          看了源代碼流程是這樣的:
          JTable-->initializeLocalVars()-->setTableHeader(createDefaultTableHeader());

          JTable-->addNotify()-->configureEnclosingScrollPane()-->(JScollPane)setColumnHeaderView(Component view)-->setView(Component view)

          ...............................  回復  更多評論
            

          # re: 關于JTable,為何這樣? 2008-03-21 17:20 林子
          技術高手..小M來捧捧場了.  回復  更多評論
            

          # re: 關于JTable,為何這樣? 2008-03-30 09:38 even
          我也來逛逛, 現在完全聽不懂了。 重新編輯博客更好吧,為什么放在評論里,老江多出手啊!博客就是要經常更新才行,像我家那塊地,已經是死水了,好比政府網站,萬年不變,后來自己都不愿看了,對了,放點自拍啊!  回復  更多評論
            

          # re: 關于JTable,為何這樣? 2009-03-14 15:39 hwl
          @枯寬
          你好!看了你的帖子受益匪淺,我也正有這方面的疑問。
          1.你說你找了jdk,上面說就那樣,要么用jscrollpane要么用add()。我也去找了一下,怎么我沒找到?我用的是Java 2 SE 6 Documentation.是不是我用的jdk不對,我甚至都沒看到有關信息,這還是我在寫代碼時發現的。
          2.你所列的源代碼流程是怎樣弄到的,是看src.zip嗎?
          真的希望你能發封email給我,給我指點迷津。我的email是
          hwljava@163.com
          期待你的回復!謝謝!  回復  更多評論
            

          # re: 關于JTable,為何這樣? 2009-03-14 15:52 hwl
          不好意思,剛才第一個問題搞錯了,jdk里有這個說明的。我想問的是為什么java要弄成這樣?這不是多此一舉嗎?我剛用JTable(Object[][],Object[]columnname)時,看到這個構造方法里說按照指定的columnname構造表格時還以為這表格就已經包含有表頭了。  回復  更多評論
            

          主站蜘蛛池模板: 盐源县| 固原市| 临西县| 桐乡市| 湟源县| 宝丰县| 驻马店市| 江北区| 三穗县| 凭祥市| 黄石市| 长春市| 米泉市| 江北区| 淮滨县| 济南市| 沁源县| 宜宾县| 东台市| 元阳县| 靖江市| 晴隆县| 固镇县| 泸定县| 油尖旺区| 海门市| 雅安市| 白河县| 宝清县| 博白县| 永胜县| 林周县| 平罗县| 花莲市| 凌海市| 彩票| 永靖县| 林周县| 鄂州市| 汤原县| 玉屏|