swing组件JTabel和JTree使用总结

一:表格(JTabel)

构造方法:
* JTabel():使用系统默认的模型创建一个JTable实例。

* JTabel(int numRows, int numColumns):创建一个使用DefaultTableModel指定行、列的空表格。

* JTabel(Object[][] rowData, Object[][] columnNames):创建一个显示二维数据的表格。可直接使用表格数据数组和表格列名数组来创建表格。

*JTabel(Vector<Vector> rowData, Vector columnNames):创建一个显示二维数据的表格。可直接使用表格数据集合和表格列名集合来创建表格。

* JTabel(TabelModel tm):创建一个指定数据模式和默认字段模式的JTabel实例。

实例代码1:

public class JTableDemo1 extends JFrame {  
  
    //定义表格  
    JTable table;  
    //定义滚动条面板(用以使表格可以滚动)  
    JScrollPane scrollPane;  
    //定义数据模型类的对象(用以保存数据),  
    DefaultTableModel tableModel;  
  
    public JTableDemo1() {  
        super();  
        setTitle("表格模型与表格");  
  
        scrollPane = new JScrollPane();  
          
        // 定义表格列名数组  
        String[] columnNames = { "A", "B","C" };  
        // 定义表格数据数组  
        String[][] tableValues = { { "A1", "B1","C1" }, { "A2", "B2","C2" },  
                { "A3", "B3","C3" }, { "A4", "B4","C4" } };  
  
        // 创建指定表格列名和表格数据的表格模型类的对象  
        tableModel = new DefaultTableModel(tableValues, columnNames);  
        // 创建指定表格模型的表格  
        table = new JTable(tableModel);  
  
        //设置 RowSorter(RowSorter 用于提供对 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();  
    }  
}

实例代码2:

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修饰
				"电话号码", "生日", "工作", "收入", "婚姻状况", "恋爱状况" };
		Object[][] rowData = {
				{ "ddd", "男", "江苏南京", "1378313210", "03/24/1985", "学生", "寄生中",
						"未婚", "没" },
				{ "eee", "女", "江苏南京", "13645181705", "xx/xx/1985", "家教", "未知",
						"未婚", "好象没" },
				{ "fff", "男", "江苏南京", "13585331486", "12/08/1985", "汽车推销员",
						"不确定", "未婚", "有" },
				{ "ggg", "女", "江苏南京", "81513779", "xx/xx/1986", "宾馆服务员",
						"确定但未知", "未婚", "有" },
				{ "hhh", "男", "江苏南京", "13651545936", "xx/xx/1985", "学生", "流放中",
						"未婚", "无数次分手后没有" } };

		jtable2 = new JTable(rowData, columnNames);

		jtable3 = new JTable(rowData, columnNames);
		jtable3.setPreferredScrollableViewportSize(new Dimension(600, 100));// 设置表格的大小
		jtable3.setRowHeight(30);// 设置每行的高度为20
		jtable3.setRowHeight(0, 20);// 设置第1行的高度为15
		jtable3.setRowMargin(5);// 设置相邻两行单元格的距离
		jtable3.setRowSelectionAllowed(true);// 设置可否被选择.默认为false
		jtable3.setSelectionBackground(Color.white);// 设置所选择行的背景色
		jtable3.setSelectionForeground(Color.red);// 设置所选择行的前景色
		jtable3.setGridColor(Color.red);// 设置网格线的颜色
		jtable3.selectAll();// 选择所有行
		jtable3.setRowSelectionInterval(0, 2);// 设置初始的选择行,这里是1到3行都处于选择状态
		jtable3.clearSelection();// 取消选择
		jtable3.setDragEnabled(false);// 不懂这个
		jtable3.setShowGrid(true);// 是否显示网格线
		jtable3.setShowHorizontalLines(true);// 是否显示水平的网格线
		jtable3.setShowVerticalLines(true);// 是否显示垂直的网格线
		jtable3.setValueAt("tt", 0, 0);// 设置某个单元格的值,这个值是一个对象
		jtable3.doLayout();
		jtable3.setBackground(Color.cyan);

		// JTable最好加在JScrollPane上以实现滚动效果
		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();
	}
}

实例代码3:vector集合。

import java.util.Vector;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ScrollPaneConstants;
import javax.swing.table.DefaultTableModel;

public class test {
	
	
	public static void main(String[] args) {
		
		Vector v1 = new Vector();
		Vector v2 = new Vector();
		
		for(int i=0;i<5;i++){
			v2.add(i);
			v1.add(v2);
		}
		System.out.println(v1);
		Vector<String> namesVector = new Vector<String>();
		namesVector.addElement("AAA");
		namesVector.addElement("BBB");
		namesVector.addElement("CCC");
		namesVector.addElement("DDD");
		namesVector.addElement("EEE");
		
		JFrame frame = new JFrame();
		frame.setTitle("Vector集合数据和Vector集合列表名");
		frame.setSize(500, 300);
		frame.setLocationRelativeTo(null);//居中显示
		
		DefaultTableModel model = new DefaultTableModel(v1, namesVector);
		JTable table = new JTable(model);
		
		JScrollPane panel = new JScrollPane(table,ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
		frame.add(panel);
		frame.setVisible(true);
	}
}

二:树(JTree)

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

* JTree(Object[] value):返回JTree,指定数组的每个元素作为不被显示的新根节点的子节点。

//只有这个构造函数可以创建多个根结点

    * JTree(Object[] value):返回 JTree,指定数组的每个元素作为不被显示的新根节点的子节点。

    * JTree(TreeNode root):返回 JTree,指定的 TreeNode 作为其根,它显示根节点。

    *JTree(TreeNode root, boolean asksAllowsChildren):返回 JTree,指定的 TreeNode 作为其根,它用指定的方式显示根节点,并确定节点是否为叶节点。(true设置为可添加孩子结点,再添加孩子结点)。


实例代码1:

public class JTreeDemo1 {
	
	JFrame f; 
	Box box;
	JTree jTree1,jTree2;
	
	public JTreeDemo1()
	{
		f = new JFrame(" JTreeDemo1 ");
		box = Box.createHorizontalBox(); //创建Box 类对象
		
		jTree1 = new JTree();
		jTree2 = new JTree();
		
		//向此组件添加任意的键/值
		jTree1.putClientProperty("JTree.lineStyle", "Angled"); 
		
		//向Box 容器添加滚动面板
		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();
	}
}

实例代码2:

public class JTreeDemo2 {

	JFrame f; 
	JPanel p; 
	JTree jTree1,jTree2,jTree3,jTree4,jTree5,jTree6,jTree7;
	
	public JTreeDemo2() {
		
		f = new JFrame(" JTreeDemo2 ");
		
		// 构造函数:JTree()
		jTree1 = new JTree();
		
		// 构造函数:JTree(Object[] value)
		Object[] letters = { " a ", " b ", " c ", " d ", " e " };
		jTree2 = new JTree(letters);

		// 构造函数:JTree(TreeNode root)(TreeNode空)
		// 用空结点创建树
		DefaultMutableTreeNode node1 = new DefaultMutableTreeNode(); // 定义树结点
		jTree3 = new JTree(node1); // 用此树结点做参数调用 JTree的构造函数创建含有一个根结点的树

		// 构造函数:JTree(TreeNode root)(同上,只是TreeNode非空)
		// 用一个根结点创建树
		DefaultMutableTreeNode node2 = new DefaultMutableTreeNode(" Color ");
		jTree4 = new JTree(node2); // 结点不可以颜色,默认为白面黑字
		jTree4.setBackground(Color.lightGray);

		
		// 构造函数:JTree(TreeNode root, boolean
		// asksAllowsChildren)(同上,只是TreeNode又有不同)
		// 使用DefaultMutableTreeNode类先用一个根结点创建树,设置为可添加孩子结点,再添加孩子结点
		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);

        
		// 构造函数:JTree(TreeNode root)(同上,只是TreeNode非空)
		// 通过逐个添加结点创建树
		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();

		
		// 构造函数:JTree(TreeModel newModel)
		// 用DefaultMutableTreeNodel类定义一个结点再用这个结点做参数定义一个用DefaultTreeMode
		// 创建一个树的模型,再用JTree的构造函数创建一个树
		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();
	
	}
}






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值