欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

一:表格(JTable):

1.基本概念:

表格(JTable)是Swing 新增加的組件,主要是為了將數(shù)據(jù)以表格的形式顯示.給顯示大塊數(shù)據(jù)提供了簡單的機(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ù)組來創(chuàng)建表格.

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

通常用數(shù)據(jù)模型類的對(duì)象來保存數(shù)據(jù),而表格模型是通過表格列名數(shù)組和表格數(shù)據(jù)數(shù)組來創(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 的排序和過濾)。 
        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)碼", "生日", "工作", "收入", "婚姻狀況", "戀愛狀況" }; 
        Object[][] rowData = { 
                { "ddd", "男", "江蘇南京", "1378313210", "03/24/1985", "學(xué)生", "寄生中", 
                        "未婚", "沒" }, 
                { "eee", "女", "江蘇南京", "13645181705", "xx/xx/1985", "家教", "未知", 
                        "未婚", "好象沒" }, 
                { "fff", "男", "江蘇南京", "13585331486", "12/08/1985", "汽車推銷員", 
                        "不確定", "未婚", "有" }, 
                { "ggg", "女", "江蘇南京", "81513779", "xx/xx/1986", "賓館服務(wù)員", 
                        "確定但未知", "未婚", "有" }, 
                { "hhh", "男", "江蘇南京", "13651545936", "xx/xx/1985", "學(xué)生", "流放中", 
                        "未婚", "無數(shù)次分手后沒有" } }; 
 
        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:

二:樹(JTree):

1.基本概念:

  樹(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)建樹 
        DefaultMutableTreeNode node1 = new DefaultMutableTreeNode(); // 定義樹結(jié)點(diǎn) 
        jTree3 = new JTree(node1); // 用此樹結(jié)點(diǎn)做參數(shù)調(diào)用 JTree的構(gòu)造函數(shù)創(chuàng)建含有一個(gè)根結(jié)點(diǎn)的樹 
 
        // 構(gòu)造函數(shù):JTree(TreeNode root)(同上,只是TreeNode非空) 
        // 用一個(gè)根結(jié)點(diǎn)創(chuàng)建樹 
        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è)置為可添加孩子結(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非空) 
        // 通過逐個(gè)添加結(jié)點(diǎn)創(chuàng)建樹 
        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è)樹的模型,再用JTree的構(gòu)造函數(shù)創(chuàng)建一個(gè)樹 
        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)文章

  • spring mvc使用@InitBinder標(biāo)簽對(duì)表單數(shù)據(jù)綁定的方法

    spring mvc使用@InitBinder標(biāo)簽對(duì)表單數(shù)據(jù)綁定的方法

    這篇文章主要介紹了spring mvc使用@InitBinder標(biāo)簽對(duì)表單數(shù)據(jù)綁定的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-03-03
  • Java list如何根據(jù)id獲取子節(jié)點(diǎn)

    Java list如何根據(jù)id獲取子節(jié)點(diǎn)

    這篇文章主要介紹了Java list如何根據(jù)id獲取子節(jié)點(diǎn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Java一個(gè)簡單的紅包生成算法

    Java一個(gè)簡單的紅包生成算法

    今天小編就為大家分享一篇關(guān)于Java一個(gè)簡單的紅包生成算法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • 深入了解JAVA Jersey框架

    深入了解JAVA Jersey框架

    這篇文章主要介紹了JAVA Jersey的概念以及使用方法,文中講解非常詳細(xì),對(duì)大家的學(xué)習(xí)工作有所幫助,感興趣的朋友可以參考下
    2020-06-06
  • Java創(chuàng)建多線程的幾種方式實(shí)現(xiàn)

    Java創(chuàng)建多線程的幾種方式實(shí)現(xiàn)

    這篇文章主要介紹了Java創(chuàng)建多線程的幾種方式實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • SpringBoot實(shí)現(xiàn)單文件與多文件上傳

    SpringBoot實(shí)現(xiàn)單文件與多文件上傳

    本次例子不基于第三方存儲(chǔ)(如七牛云對(duì)象存儲(chǔ)、阿里云對(duì)象存儲(chǔ)、騰訊云對(duì)象存儲(chǔ)等),僅基于本地存儲(chǔ)。本文主要內(nèi)容如下:公共文件存儲(chǔ)代碼;單文件上傳代碼;多文件上傳代碼
    2021-05-05
  • Java編程中最基礎(chǔ)的文件和目錄操作方法詳解

    Java編程中最基礎(chǔ)的文件和目錄操作方法詳解

    這篇文章主要介紹了Java編程中最基礎(chǔ)的文件和目錄操作方法詳解,是Java入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-11-11
  • Java實(shí)現(xiàn)計(jì)算一個(gè)月有多少天和多少周

    Java實(shí)現(xiàn)計(jì)算一個(gè)月有多少天和多少周

    這篇文章主要介紹了Java實(shí)現(xiàn)計(jì)算一個(gè)月有多少天和多少周,本文直接給出實(shí)例代碼,需要的朋友可以參考下
    2015-06-06
  • 一天時(shí)間用Java寫了個(gè)飛機(jī)大戰(zhàn)游戲,朋友直呼高手

    一天時(shí)間用Java寫了個(gè)飛機(jī)大戰(zhàn)游戲,朋友直呼高手

    前兩天我發(fā)現(xiàn)論壇有兩篇飛機(jī)大戰(zhàn)的文章異?;鸨?但都是python寫的,竟然不是我大Java,說實(shí)話作為老java選手,我心里是有那么一些失落的,難道我大java打飛機(jī)不行?今天特地整理了這篇文章,需要的朋友可以參考下
    2021-05-05
  • java實(shí)現(xiàn)簡單銀行家算法

    java實(shí)現(xiàn)簡單銀行家算法

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡單銀行家算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12

最新評(píng)論