`

java swing之JTable和JList

阅读更多
1、JTable
JTable构造方法:
JTable(TableModel dm)
JTable(object[][]rowData,object[]columnNames)
JTable(Vector  rowData,Vector  columnNames)

JTable类常用的方法有:
getModel() //获得表格的数据来源对象
getSelectedRow() //获得选中的行数
例子1:
import java.awt.Dimension;
import java.util.Date;
import java.util.Vector;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

public class TableJFrame extends JFrame {
	public TableJFrame() {
		init();

		this.setTitle("表格的例子");
		this.setSize(new Dimension(400, 450));
		this.setLocationRelativeTo(null);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setVisible(true);
	}

	private void init() {
//		// 1.二维数组初始化
//		String[] columnHeader = { "编号", "姓名", "年龄", "地址" };
//		String[][] data = new String[][] { { "user1", "小明", "26", "福州鼓楼" },
//				{ "user2", "小明2", "28", "福州鼓楼2" },
//				{ "user3", "小明3", "33", "福州鼓楼" },
//				{ "user4", "小明4", "26", "福州鼓楼" } };

//		
//		//2、实现了tableModel接口
//		DefaultTableModel defaultTableModel = new DefaultTableModel(data,columnHeader);
		//设置模型方式
//		table.setModel(defaultTableModel);
	
		
		
		//3、vector
		Vector<String> colHeader = new Vector<String>();
		colHeader.add("编号");
		colHeader.add("名字");
		colHeader.add("性别");
		colHeader.add("日期");
		
		Vector<Vector<String>> dataVec = new Vector<Vector<String>>();
		Vector<String> row1 = new Vector<String>();
		row1.add("0001");
		row1.add("旺财");
		row1.add("男");
		row1.add(new Date().toString());
		Vector<String> row2 = new Vector<String>();
		row2.add("0002");
		row2.add("小强");
		row2.add("男");
		row2.add(new Date().toString());
		Vector<String> row3 = new Vector<String>();
		row3.add("0003");
		row3.add("韦小宝");
		row3.add("女");
		row3.add(new Date().toString());
		Vector<String> row4 = new Vector<String>();
		row4.add("0004");
		row4.add("零零七");
		row4.add("男");
		row4.add(new Date().toString());
		
		dataVec.add(row1);
		dataVec.add(row2);
		dataVec.add(row3);
		dataVec.add(row4);
		
		JTable table = new JTable(dataVec,colHeader);
		//要显示表头必须要加入到滚动面板 滚动面板加入到窗体
//		JScrollPane scrollPane = new JScrollPane(table);
		JScrollPane scrollPane = new JScrollPane();
		scrollPane.setViewportView(table);
		this.add(scrollPane);

	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		new TableJFrame();

	}

}



例子2:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.util.Date;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.DefaultTableModel;

public class TableJFrame2 extends JFrame {
	
	JButton buttonAlt = new JButton("修改");
	
	JButton buttonDel = new JButton("删除");
//	/表格方法使用
	public TableJFrame2() {
		init();

		this.setTitle("表格的例子2");
		this.setSize(new Dimension(400, 450));
		this.setLocationRelativeTo(null);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setVisible(true);
	}

	private void init() {	
		
		Vector<String> colHeader = new Vector<String>();
		colHeader.add("编号");
		colHeader.add("名字");
		colHeader.add("性别");
		colHeader.add("日期");
		
		Vector<Vector<String>> dataVec = new Vector<Vector<String>>();
		Vector<String> row1 = new Vector<String>();
		row1.add("0001");
		row1.add("旺财");
		row1.add("男");
		row1.add(new Date().toString());
		Vector<String> row2 = new Vector<String>();
		row2.add("0002");
		row2.add("小强");
		row2.add("男");
		row2.add(new Date().toString());
		Vector<String> row3 = new Vector<String>();
		row3.add("0003");
		row3.add("韦小宝");
		row3.add("女");
		row3.add(new Date().toString());
		Vector<String> row4 = new Vector<String>();
		row4.add("0004");
		row4.add("零零七");
		row4.add("男");
		row4.add(new Date().toString());
		
		dataVec.add(row1);
		dataVec.add(row2);
		dataVec.add(row3);
		dataVec.add(row4);
		
		final JTable table = new JTable(dataVec,colHeader){
			//1单元格不可以编辑
			@Override
			public boolean isCellEditable(int row, int column) {
				// TODO Auto-generated method stub
				return false;
			}
		};
		
		//2设置表头行高
		table.getTableHeader().setPreferredSize(new Dimension(0,30));
		//3设置表内容行高
		table.setRowHeight(25);
		//4设置单选模式
		table.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		//5设置单元格不可拖动
		table.getTableHeader().setReorderingAllowed(false);
		//6设置不可改变列宽
		table.getTableHeader().setResizingAllowed(false);
		
		//7设置列宽
		table.getColumnModel().getColumn(0).setPreferredWidth(45);
		table.getColumnModel().getColumn(1).setPreferredWidth(55);
		table.getColumnModel().getColumn(2).setPreferredWidth(40);
		table.getColumnModel().getColumn(3).setPreferredWidth(305);
//		table.getColumnModel().getColumn(4).setPreferredWidth(305);//注意索引越界
		int rowIndex = table.getSelectedRow();
		System.out.println("suoyin:"+rowIndex);
		//监听事件
		table.getSelectionModel().addListSelectionListener(new ListSelectionListener(){

			public void valueChanged(ListSelectionEvent e) {
				
				if(e.getValueIsAdjusting()){//连续操作
					int rowIndex = table.getSelectedRow();
					if(rowIndex!=-1){
						System.out.println("表格行被选中"+rowIndex);
						buttonAlt.setEnabled(true);
						buttonDel.setEnabled(true);
					}					
				}
				
			}});
		
		
		
		JScrollPane scrollPane = new JScrollPane();
		scrollPane.setViewportView(table);
		this.add(scrollPane);
		
		buttonDel.setEnabled(false);
		buttonAlt.setEnabled(false);
		
		JPanel panel = new JPanel();
		panel.add(buttonAlt);
		panel.add(buttonDel);
		this.add(panel,BorderLayout.SOUTH);

	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		new TableJFrame2();

	}

}



2、JList
JList:
public JList(ListModel lm);
public void setModel(ListModel lm);
getSelectionModel().addListSelectionListener(ListSelectionListener lsl); //JList上的选择事件和JTabel相同
DefaultListModel:
public void addElement(Object o); //加入节点
public void removeElement(Object o); //移除节点
public int getSelectedIndex(); //获取被选中项的索引
public int[] getSelectedIndices(); //获取被选中项的索引
public Object getElementAt(int i);
public void setSelectedValue(Object o);
例子:
import java.awt.Dimension;
import java.util.Date;
import java.util.Vector;

import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.DefaultTableModel;

public class TestJListJFrame extends JFrame {
	public TestJListJFrame() {
		init();

		this.setTitle("JList例子");
		this.setSize(new Dimension(200, 450));
		this.setLocationRelativeTo(null);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setVisible(true);
	}

	private void init() {
		final JList list = new JList();
		DefaultListModel defaultListModel = new DefaultListModel();
		
		defaultListModel.addElement("黄飞鸿");
		defaultListModel.addElement("霍元甲");
		defaultListModel.addElement("姚家兴");
		defaultListModel.addElement("陈真");
		defaultListModel.addElement("叶问");
		defaultListModel.addElement("李小龙");
		defaultListModel.addElement("方世玉");
		
		list.setModel(defaultListModel);
		
		//单选
		list.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		//加入选择事件
		list.getSelectionModel().addListSelectionListener(new ListSelectionListener(){

			public void valueChanged(ListSelectionEvent e) {
				if(e.getValueIsAdjusting()){
					int index = list.getSelectedIndex();
					System.out.println(index);
					String selectedItem = list.getSelectedValue().toString();
					System.out.println("选中值:"+selectedItem);
					
				}
				
			}});		

		JScrollPane scrollPane = new JScrollPane();
		scrollPane.setViewportView(list);
		this.add(scrollPane);

	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		new TestJListJFrame();

	}

}

分享到:
评论

相关推荐

    swing JList 拖拽

    swing JList 拖拽记录到 JTable

    Java Swing实例源码包.rar

    Java Swing实例源码包,包括了JComboBox 、Border、JList、JMenu、JSlider、JTabbedPane、JTable、JToolTip、JTree等常用Swing组件的用法示例,对Java编写界面来说,Swing确实是个不错的选择,希望这些示例能让你更...

    Java学习指南(Swing入门篇)

    对话框,及自定义对话框- 菜单和工具栏- 自定义绘图- JList 列表框的用法,以及单元格的自定义显示- JTable 表格的用法,以及单元格的自定义显示- 一个基于 JTable 和 JSON 的学生管理系统- Java Swing应用程序的...

    oracle jdk自带swing 代码示例swingset3

    swing入门必看示例( oracle 官方swingset3示例) ...组件:JTable/JTree/JList 基本组件:ToggleButtons/JButton/JComboBox/ProgressBar/Slider/Spinner/TextFeild/JEditorPane 选择器:JColorChooser/JOptionPane

    JAVA课程设计驾校管理系统

    3)负责人可以在软件中浏览学员、教练和车辆的信息概况(JTable或JList),可以查看选中记录的详细信息;可以编辑更新记录信息。 4)负责人可以通过软件为一个或一批学员新建学车记录,即为学员安排教练、车辆、练车...

    驾校管理系统课程设计JAVA

    3)负责人可以在软件中浏览学员、教练和车辆的信息概况(JTable或JList),可以查看选中记录的详细信息;可以编辑更新记录信息。 4)负责人可以通过软件为一个或一批学员新建学车记录,即为学员安排教练、车辆、练车...

    疯狂JAVA讲义

    学生提问:为什么有栈内存和堆内存之分? 93 4.6.2 基本类型数组的初始化 95 4.6.3 引用类型数组的初始化 96 4.6.4 没有多维数组 99 学生提问:我是否可以让图4.13中灰色覆盖的数组元素再次指向另一个数组?这样...

    Hibernate4+Spring Data JPA+Spring4+Swing+MySql5 可运行的进销存管理系统

    用到了:JTree(支持增删改,支持无限级分类管理),JTable(支持增删改,各种查询,以及与JTree,JList之间的通信),JPopuMenu,自定义FORM,JList 有兴趣的朋友,可以参考.. 数据库参数在db.properties文件中配置(默认MySql帐号...

    Java开发技术大全 电子版

    第7章Java的输入和输出237 7.1文件和输入输出流237 7.2InputStream类和OutputStream类的使用238 7.2.1InputStream中的方法238 7.2.2OutputStream中的方法239 7.2.3文件输入流FileInputStream239 7.2.4文件输出...

    javaSE代码实例

    第6章 对象和类——Java世界的细胞 77 6.1 面向对象概述 77 6.1.1 面向对象程序设计思想的诞生 77 6.1.2 面向过程与面向对象思想的对比 78 6.1.3 面向对象技术的背景和特点 79 6.2 类的定义与对象的创建...

Global site tag (gtag.js) - Google Analytics