`

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();

	}

}

分享到:
评论

相关推荐

    JAVA swing中文离线API文档

    此外,Swing还提供了诸如`JTable`和`JList`这样的组件,用于展示和操作数据表格或列表。 事件处理是Swing应用中的关键部分。通过实现监听器接口,如`ActionListener`,开发者可以响应用户的点击、键盘输入等事件。...

    JavaSwing多人猜拳

    除此之外,开发者可能还使用了JPanel来组织和定制游戏界面,以及JList或JTable来展示玩家列表或者游戏历史记录。 由于该项目描述中提到是“测试版”,这可能意味着它还在开发阶段,可能存在一些未完善的功能或者bug...

    Java Swing 中文Api

    例如,JTable和JList组件可以通过DefaultListModel或DefaultTableModel来管理数据,这样可以方便地更新显示内容。同时,Swing支持事件处理,通过实现EventListener接口,开发者可以为组件添加事件监听器,如...

    Java Swing桌面开发经典案例

    6. **可定制组件**: Swing提供了JTable、JTree和JList等组件,可以方便地展示和操作复杂数据。这些案例可能会展示如何自定义这些组件的行为和外观,比如自定义列渲染器和编辑器。 7. **国际化和可访问性**: Swing...

    JAVA Swing 实现商品列表,数量加减 ,删除整行 Demo

    总的来说,这个Demo涵盖了Java Swing中关于`JTable`的基本操作,包括数据的添加、修改和删除,以及对用户交互的响应。这有助于开发者掌握如何在Swing应用中构建复杂的用户界面,并处理数据操作。通过实践和理解这个...

    java swing管理系统源码 程序 代码 图形界面(11套).zip

    本压缩包包含了11套完整的Java Swing管理系统源码,这些源码对于学习和理解Java GUI编程具有很高的价值。下面我们将深入探讨Java Swing的核心概念、特性以及在开发管理系统中的应用。 1. **Java Swing基本组件** -...

    java swing深入学习例子

    中级阶段还会涉及模型-视图-控制器(MVC)设计模式,Swing中的许多组件遵循这一模式,如JTable和JList,它们的模型可以独立于视图和控制器进行操作。 **高级篇:自定义组件与高级特性** 在高级阶段,学习如何创建...

    java_swingProgram.rar_JavaSwing_java swing_swing

    比如,JTable和JList等组件可以绑定到数据模型,当数据改变时,视图会自动更新,反之亦然。 定制组件是Swing的一大特色,开发者可以通过继承现有的组件类并重写相关方法,创建出符合特定需求的自定义组件。例如,...

    java swing 工具箱

    本篇将深入探讨Java Swing工具箱中的关键概念和技术。 首先,Swing 提供了大量组件(JComponents),这些组件用于构建用户界面,例如按钮(JButton)、文本框(JTextField)、列表(JList)、表格(JTable)和面板...

    swing JList 拖拽

    swing JList 拖拽记录到 JTable

    The Definitive Guide to Java Swing Third Edition

    ### 《Java Swing 终极指南》第三版关键知识点概览 #### 一、书籍基本信息与版权信息 - **书名**:《Java Swing 终极指南》第三版 - **作者**:John Zukowski - **出版社**:本书由Springer-Verlag New York, Inc....

    JavaSwing界面设计(所有控件及示例)

    总结起来,Java Swing 提供了一整套组件和工具,用于创建丰富的图形用户界面,无论是在桌面应用还是轻量级应用中都有广泛的应用。理解和熟练掌握Swing,能够帮助开发者创建出高效、美观且易于使用的应用程序。

    JAVA Swing实例讲解.zip

    例如,JTable和JList组件可以绑定到一个TableModel,动态更新数据时,表格内容也会自动更新。 Swing还引入了轻量级组件的概念,相较于早期的AWT(Abstract Window Toolkit),Swing组件在性能和跨平台兼容性上有...

    Java Swing 组件全演示源代码.rar_java swing_java 组件_java swing_java源代码_

    本资源“Java Swing 组件全演示源代码”包含了Java Swing中的各种组件的完整示例代码,可以帮助开发者深入理解和实际操作这些组件,提升GUI编程能力。 Swing 提供了大量的组件,包括基础组件如按钮(JButton)、...

    java Swing电子相册管理系统 面向对象思想

    Java Swing电子相册管理系统是一个基于面向对象思想设计的桌面应用程序,它允许用户管理和查看他们的照片集合。Swing是Java提供的一种用于创建图形用户界面(GUI)的库,它提供了丰富的组件和工具,使得开发者可以...

    java Swing、SWT分页

    Java Swing和 SWT 是两种在Java中创建图形用户界面(GUI)的库,它们都提供了丰富的组件和工具来构建桌面应用程序。在这篇文章中,我们将深入探讨Java Swing中的分页技术和SWT(Standard Widget Toolkit)的使用,...

    JavaSwing编程demo

    本项目"JavaSwing编程demo"是一个基于Swing的实践应用,旨在帮助初学者了解和掌握Swing的基本用法。 首先,Swing 提供了一系列的组件类,如 JButton、JLabel、JTextField、JTextArea、JCheckBox、JRadioButton等,...

    javaswing详解

    Java Swing是Java编程语言中的一个图形用户界面(GUI)工具包,它是Java Foundation ...在学习过程中,参考《Java Swing图形界面开发与案例详解》等专业书籍,结合中文API文档,能够更深入地理解和运用Java Swing。

    90个java-swing基础例子.zip

    1. **Swing组件**:Swing 提供了许多组件,如按钮(JButton),文本框(JTextField),标签(JLabel),面板(JPanel),滚动窗格(JScrollPane),列表(JList),表格(JTable),树(JTree)等。这些组件是构建用户界面的基本单元...

    java swing界面设计

    - "Java图形用户界面设计(Swing常用组件).ppt"和"JavaSwing界面设计(所有控件及示例).ppt"两个文件中可能包含了各种Swing组件的使用示例和实际应用,建议仔细学习和实践。 9. **学习资源** - Java官方文档:提供...

Global site tag (gtag.js) - Google Analytics