最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java Swing中的表格(JTable)和樹(shù)(JTree)組件使用實(shí)例

 更新時(shí)間:2014年10月13日 10:28:13   投稿:junjie  
這篇文章主要介紹了Java Swing中的表格(JTable)和樹(shù)(JTree)組件使用實(shí)例,本文同時(shí)講解了表格和樹(shù)的基本概念、常用方法、代碼實(shí)例,需要的朋友可以參考下

一:表格(JTable):

1.基本概念:

表格(JTable)是Swing 新增加的組件,主要是為了將數(shù)據(jù)以表格的形式顯示.給顯示大塊數(shù)據(jù)提供了簡(jiǎn)單的機(jī)制.

2.常用構(gòu)造方法:

 * JTable():使用系統(tǒng)默認(rèn)的模型創(chuàng)建一個(gè)JTable 實(shí)例.
 * JTable(int numRows,int numColumns):創(chuàng)建一個(gè)使用DefaultTableModel 指定行、列的空表格。
 * JTable(Object[ ][ ] rowData,Object[ ][ ] columnNames):創(chuàng)建一個(gè)顯示二維數(shù)據(jù)的表格。

可以直接使用表格列名數(shù)組和表格數(shù)據(jù)數(shù)組來(lái)創(chuàng)建表格.

 * JTable(TableModel dm):創(chuàng)建一個(gè)指定數(shù)據(jù)模式和默認(rèn)字段模式的JTable 實(shí)例。

通常用數(shù)據(jù)模型類的對(duì)象來(lái)保存數(shù)據(jù),而表格模型是通過(guò)表格列名數(shù)組和表格數(shù)據(jù)數(shù)組來(lái)創(chuàng)建的.

3.常用方法:

4.綜合案例:

代碼1:

復(fù)制代碼 代碼如下:

public class JTableDemo1 extends JFrame { 
 
    //定義表格 
    JTable table; 
    //定義滾動(dòng)條面板(用以使表格可以滾動(dòng)) 
    JScrollPane scrollPane; 
    //定義數(shù)據(jù)模型類的對(duì)象(用以保存數(shù)據(jù)), 
    DefaultTableModel tableModel; 
 
    public JTableDemo1() { 
        super(); 
        setTitle("表格模型與表格"); 
 
        scrollPane = new JScrollPane(); 
         
        // 定義表格列名數(shù)組 
        String[] columnNames = { "A", "B","C" }; 
        // 定義表格數(shù)據(jù)數(shù)組 
        String[][] tableValues = { { "A1", "B1","C1" }, { "A2", "B2","C2" }, 
                { "A3", "B3","C3" }, { "A4", "B4","C4" } }; 
 
        // 創(chuàng)建指定表格列名和表格數(shù)據(jù)的表格模型類的對(duì)象 
        tableModel = new DefaultTableModel(tableValues, columnNames); 
        // 創(chuàng)建指定表格模型的表格 
        table = new JTable(tableModel); 
 
        //設(shè)置 RowSorter(RowSorter 用于提供對(duì) JTable 的排序和過(guò)濾)。 
        table.setRowSorter(new TableRowSorter<DefaultTableModel>(tableModel)); 
        scrollPane.setViewportView(table); 
        getContentPane().add(scrollPane, BorderLayout.CENTER); 
 
        setBounds(300, 200, 400, 300); 
        setVisible(true); 
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    } 
 
    public static void main(String args[]) { 
        new JTableDemo1(); 
    } 
}

截圖1:

代碼2:

復(fù)制代碼 代碼如下:

import java.awt.*; 
import javax.swing.*; 
 
public class JTableDemo3 { 
 
    JFrame frame; 
    JPanel panel; 
    JScrollPane scrollPane1, scrollPane2, scrollPane3; 
    JTable jtable1, jtable2, jtable3; 
 
    public JTableDemo3() { 
        frame = new JFrame("JTableDemo"); 
 
        jtable1 = new JTable(8, 6); 
 
        final Object[] columnNames = { "姓名", "性別", "家庭地址",// 列名最好用final修飾 
                "電話號(hào)碼", "生日", "工作", "收入", "婚姻狀況", "戀愛(ài)狀況" }; 
        Object[][] rowData = { 
                { "ddd", "男", "江蘇南京", "1378313210", "03/24/1985", "學(xué)生", "寄生中", 
                        "未婚", "沒(méi)" }, 
                { "eee", "女", "江蘇南京", "13645181705", "xx/xx/1985", "家教", "未知", 
                        "未婚", "好象沒(méi)" }, 
                { "fff", "男", "江蘇南京", "13585331486", "12/08/1985", "汽車推銷員", 
                        "不確定", "未婚", "有" }, 
                { "ggg", "女", "江蘇南京", "81513779", "xx/xx/1986", "賓館服務(wù)員", 
                        "確定但未知", "未婚", "有" }, 
                { "hhh", "男", "江蘇南京", "13651545936", "xx/xx/1985", "學(xué)生", "流放中", 
                        "未婚", "無(wú)數(shù)次分手后沒(méi)有" } }; 
 
        jtable2 = new JTable(rowData, columnNames); 
 
        jtable3 = new JTable(rowData, columnNames); 
        jtable3.setPreferredScrollableViewportSize(new Dimension(600, 100));// 設(shè)置表格的大小 
        jtable3.setRowHeight(30);// 設(shè)置每行的高度為20 
        jtable3.setRowHeight(0, 20);// 設(shè)置第1行的高度為15 
        jtable3.setRowMargin(5);// 設(shè)置相鄰兩行單元格的距離 
        jtable3.setRowSelectionAllowed(true);// 設(shè)置可否被選擇.默認(rèn)為false 
        jtable3.setSelectionBackground(Color.white);// 設(shè)置所選擇行的背景色 
        jtable3.setSelectionForeground(Color.red);// 設(shè)置所選擇行的前景色 
        jtable3.setGridColor(Color.red);// 設(shè)置網(wǎng)格線的顏色 
        jtable3.selectAll();// 選擇所有行 
        jtable3.setRowSelectionInterval(0, 2);// 設(shè)置初始的選擇行,這里是1到3行都處于選擇狀態(tài) 
        jtable3.clearSelection();// 取消選擇 
        jtable3.setDragEnabled(false);// 不懂這個(gè) 
        jtable3.setShowGrid(true);// 是否顯示網(wǎng)格線 
        jtable3.setShowHorizontalLines(true);// 是否顯示水平的網(wǎng)格線 
        jtable3.setShowVerticalLines(true);// 是否顯示垂直的網(wǎng)格線 
        jtable3.setValueAt("tt", 0, 0);// 設(shè)置某個(gè)單元格的值,這個(gè)值是一個(gè)對(duì)象 
        jtable3.doLayout(); 
        jtable3.setBackground(Color.cyan); 
 
        // JTable最好加在JScrollPane上以實(shí)現(xiàn)滾動(dòng)效果 
        scrollPane1 = new JScrollPane(jtable1); 
        scrollPane2 = new JScrollPane(jtable2); 
        scrollPane3 = new JScrollPane(jtable3); 
 
        panel = new JPanel(new GridLayout(0, 1)); 
        panel.setPreferredSize(new Dimension(600, 400)); 
        panel.setBackground(Color.black); 
        panel.add(scrollPane1); 
        panel.add(scrollPane2); 
        panel.add(scrollPane3); 
 
        frame.setContentPane(panel); 
        frame.pack(); 
        frame.setVisible(true); 
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    } 
 
    public static void main(String[] args) { 
        new JTableDemo3(); 
    } 
}

截圖2:

二:樹(shù)(JTree):

1.基本概念:

  樹(shù)(JTree):將分層數(shù)據(jù)集顯示為輪廓的控件。

2.常用構(gòu)造方法:

   JTree():返回帶有示例模型的JTree。

   JTree(Object[] value):返回JTree,指定數(shù)組的每個(gè)元素作為不被顯示的新根節(jié)點(diǎn)的子節(jié)點(diǎn)。

   //只有這個(gè)構(gòu)造函數(shù)可以創(chuàng)建多個(gè)根結(jié)點(diǎn)
   JTree(Object[] value):返回 JTree,指定數(shù)組的每個(gè)元素作為不被顯示的新根節(jié)點(diǎn)的子節(jié)點(diǎn)。

   JTree(TreeNode root):返回 JTree,指定的 TreeNode 作為其根,它顯示根節(jié)點(diǎn)。

   JTree(TreeNode root, boolean asksAllowsChildren):返回 JTree,指定的 TreeNode 作為其根,
   它用指定的方式顯示根節(jié)點(diǎn),并確定節(jié)點(diǎn)是否為葉節(jié)點(diǎn)。(true設(shè)置為可添加孩子結(jié)點(diǎn),再添加孩子結(jié)點(diǎn)).

3.代碼演示:

示例1:

復(fù)制代碼 代碼如下:

public class JTreeDemo1 { 
     
    JFrame f;  
    Box box; 
    JTree jTree1,jTree2; 
     
    public JTreeDemo1() 
    { 
        f = new JFrame(" JTreeDemo1 "); 
        box = Box.createHorizontalBox(); //創(chuàng)建Box 類對(duì)象 
         
        jTree1 = new JTree(); 
        jTree2 = new JTree(); 
         
        //向此組件添加任意的鍵/值 
        jTree1.putClientProperty("JTree.lineStyle", "Angled");  
         
        //向Box 容器添加滾動(dòng)面板 
        box.add(new JScrollPane(jTree1), BorderLayout.WEST); 
        box.add(new JScrollPane(jTree2), BorderLayout.EAST); 
         
        f.getContentPane().add(box, BorderLayout.CENTER); 
         
        f.setSize(300, 240); 
        //f.pack(); 
        f.setLocation(300, 200); 
        f.setVisible(true); 
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    } 
     
    public static void main(String[] args) { 
        new JTreeDemo1(); 
    } 
}

截圖1:

示例2:

復(fù)制代碼 代碼如下:

public class JTreeDemo2 { 
 
    JFrame f;  
    JPanel p;  
    JTree jTree1,jTree2,jTree3,jTree4,jTree5,jTree6,jTree7; 
     
    public JTreeDemo2() { 
         
        f = new JFrame(" JTreeDemo2 "); 
         
        // 構(gòu)造函數(shù):JTree() 
        jTree1 = new JTree(); 
         
        // 構(gòu)造函數(shù):JTree(Object[] value) 
        Object[] letters = { " a ", " b ", " c ", " d ", " e " }; 
        jTree2 = new JTree(letters); 
 
        // 構(gòu)造函數(shù):JTree(TreeNode root)(TreeNode空) 
        // 用空結(jié)點(diǎn)創(chuàng)建樹(shù) 
        DefaultMutableTreeNode node1 = new DefaultMutableTreeNode(); // 定義樹(shù)結(jié)點(diǎn) 
        jTree3 = new JTree(node1); // 用此樹(shù)結(jié)點(diǎn)做參數(shù)調(diào)用 JTree的構(gòu)造函數(shù)創(chuàng)建含有一個(gè)根結(jié)點(diǎn)的樹(shù) 
 
        // 構(gòu)造函數(shù):JTree(TreeNode root)(同上,只是TreeNode非空) 
        // 用一個(gè)根結(jié)點(diǎn)創(chuàng)建樹(shù) 
        DefaultMutableTreeNode node2 = new DefaultMutableTreeNode(" Color "); 
        jTree4 = new JTree(node2); // 結(jié)點(diǎn)不可以顏色,默認(rèn)為白面黑字 
        jTree4.setBackground(Color.lightGray); 
 
         
        // 構(gòu)造函數(shù):JTree(TreeNode root, boolean 
        // asksAllowsChildren)(同上,只是TreeNode又有不同) 
        // 使用DefaultMutableTreeNode類先用一個(gè)根結(jié)點(diǎn)創(chuàng)建樹(shù),設(shè)置為可添加孩子結(jié)點(diǎn),再添加孩子結(jié)點(diǎn) 
        DefaultMutableTreeNode color = new DefaultMutableTreeNode(" Color ", 
                true); 
         
        DefaultMutableTreeNode gray = new DefaultMutableTreeNode(" Gray "); 
        gray.add(new DefaultMutableTreeNode(" Lightgray ")); 
        gray.add(new DefaultMutableTreeNode(" Darkgray ")); 
         
        color.add(gray); 
         
        color.add(new DefaultMutableTreeNode(" Red ")); 
        color.add(new DefaultMutableTreeNode(" Green ")); 
 
        jTree5 = new JTree(color); 
 
         
        // 構(gòu)造函數(shù):JTree(TreeNode root)(同上,只是TreeNode非空) 
        // 通過(guò)逐個(gè)添加結(jié)點(diǎn)創(chuàng)建樹(shù) 
        DefaultMutableTreeNode biology = new DefaultMutableTreeNode(" Biology "); 
        DefaultMutableTreeNode animal = new DefaultMutableTreeNode(" Animal "); 
        DefaultMutableTreeNode mammal = new DefaultMutableTreeNode(" Mammal "); 
        DefaultMutableTreeNode horse = new DefaultMutableTreeNode(" Horse "); 
        mammal.add(horse); 
        animal.add(mammal); 
        biology.add(animal); 
         
        jTree6 = new JTree(biology); 
        horse.isLeaf(); 
        horse.isRoot(); 
 
         
        // 構(gòu)造函數(shù):JTree(TreeModel newModel) 
        // 用DefaultMutableTreeNodel類定義一個(gè)結(jié)點(diǎn)再用這個(gè)結(jié)點(diǎn)做參數(shù)定義一個(gè)用DefaultTreeMode 
        // 創(chuàng)建一個(gè)樹(shù)的模型,再用JTree的構(gòu)造函數(shù)創(chuàng)建一個(gè)樹(shù) 
        DefaultMutableTreeNode root = new DefaultMutableTreeNode(" Root1 "); 
        DefaultMutableTreeNode child1 = new DefaultMutableTreeNode(" Child1 "); 
        DefaultMutableTreeNode child11 = new DefaultMutableTreeNode(" Child11 "); 
        DefaultMutableTreeNode child111 = new DefaultMutableTreeNode( 
                " Child111 "); 
        root.add(child1); 
        child1.add(child11); 
        child11.add(child111); 
 
        DefaultTreeModel model = new DefaultTreeModel(root); 
 
        jTree7 = new JTree(model); 
 
         
        p = new JPanel(); 
        p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS)); 
        p.setPreferredSize(new Dimension(700, 400)); 
         
        // JTree必須放在JScrollPane上 
        p.add(new JScrollPane(jTree1));  
        p.add(new JScrollPane(jTree2)); 
        p.add(new JScrollPane(jTree3)); 
        p.add(new JScrollPane(jTree4)); 
        p.add(new JScrollPane(jTree5)); 
        p.add(new JScrollPane(jTree6)); 
        p.add(new JScrollPane(jTree7)); 
 
         
        f.setContentPane(p); 
        f.pack(); 
        f.setLocation(300, 200); 
        f.setVisible(true); 
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    } 
 
    public static void main(String[] args) { 
         
        new JTreeDemo2(); 
     
    } 
}

截圖2:

相關(guān)文章

  • InterlliJ IDEA2020新建java web項(xiàng)目找不到Static Web的解決

    InterlliJ IDEA2020新建java web項(xiàng)目找不到Static Web的解決

    這篇文章主要介紹了InterlliJ IDEA2020新建java web項(xiàng)目找不到Static Web的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 整理Java的MyBatis框架中一些重要的功能及基本使用示例

    整理Java的MyBatis框架中一些重要的功能及基本使用示例

    這篇文章主要介紹了Java的MyBatis框架中一些重要的功能及基本使用示例整理,MyBatis可以幫助Java程序進(jìn)行強(qiáng)大的數(shù)據(jù)庫(kù)操作,需要的朋友可以參考下
    2016-04-04
  • 詳解Java對(duì)象序列化為什么要使用SerialversionUID

    詳解Java對(duì)象序列化為什么要使用SerialversionUID

    這篇文章主要介紹了詳解Java對(duì)象序列化為什么要使用SerialversionUID,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • springboot接入微信app支付的方法

    springboot接入微信app支付的方法

    本文使用springboot集成微信支付服務(wù),包含微信統(tǒng)一支付訂單接口,以及支付回調(diào)接口等,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • 對(duì)java for 循環(huán)執(zhí)行順序的詳解

    對(duì)java for 循環(huán)執(zhí)行順序的詳解

    今天小編就為大家分享一篇對(duì)java for 循環(huán)執(zhí)行順序的詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • SpringBoot整合RedisTemplate實(shí)現(xiàn)緩存信息監(jiān)控的基本操作

    SpringBoot整合RedisTemplate實(shí)現(xiàn)緩存信息監(jiān)控的基本操作

    SpringBoot中的 redistemplate 是一個(gè)用于操作 Redis 數(shù)據(jù)庫(kù)的高級(jí)模板類,它提供了一組方法,可以方便地執(zhí)行常見(jiàn)的 Redis 操作,如存儲(chǔ)、檢索和刪除數(shù)據(jù),本文給大家介紹了SpringBoot整合RedisTemplate實(shí)現(xiàn)緩存信息監(jiān)控的基本操作,需要的朋友可以參考下
    2025-02-02
  • 詳解SpringBoot如何統(tǒng)一后端返回格式

    詳解SpringBoot如何統(tǒng)一后端返回格式

    今天我們來(lái)聊一聊在基于SpringBoot前后端分離開(kāi)發(fā)模式下,如何友好的返回統(tǒng)一的標(biāo)準(zhǔn)格式以及如何優(yōu)雅的處理全局異常,感興趣的可以了解一下
    2021-07-07
  • Mybatis關(guān)聯(lián)查詢結(jié)果集對(duì)象嵌套的具體使用

    Mybatis關(guān)聯(lián)查詢結(jié)果集對(duì)象嵌套的具體使用

    在查詢時(shí)經(jīng)常出現(xiàn)一對(duì)多”的關(guān)系,所有會(huì)出現(xiàn)嵌套對(duì)象的情況,本文主要介紹了Mybatis關(guān)聯(lián)查詢結(jié)果集對(duì)象嵌套的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 深入解析Java反射之基礎(chǔ)篇

    深入解析Java反射之基礎(chǔ)篇

    JAVA反射機(jī)制是在運(yùn)行狀態(tài)中,對(duì)于任意一個(gè)類,都能夠知道這個(gè)類的所有屬性和方法,這篇文章主要給大家介紹了關(guān)于Java反射之基礎(chǔ)篇的相關(guān)資料,需要的朋友可以參考下
    2021-11-11
  • Java springboot壓縮文件上傳,解壓,刪除壓縮包方式

    Java springboot壓縮文件上傳,解壓,刪除壓縮包方式

    這篇文章主要介紹了Java springboot壓縮文件上傳,解壓,刪除壓縮包方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04

最新評(píng)論

阳曲县| 南漳县| 洛川县| 普定县| 达孜县| 三原县| 崇信县| 唐海县| 景谷| 高阳县| 孟村| 桓仁| 中江县| 西华县| 枣强县| 南华县| 平度市| 娱乐| 鄯善县| 浦城县| 清原| 岳西县| 和硕县| 抚州市| 噶尔县| 光山县| 叶城县| 虹口区| 大悟县| 甘谷县| 庄河市| 兰考县| 堆龙德庆县| 涞水县| 栖霞市| 砚山县| 湟中县| 卓资县| 万安县| 梁河县| 盈江县|