用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - java代码库

JTable的表格维护----增、删、改。

2017-04-25 作者: 陆痴举报

[java]代码库

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableModel;

/**
 * 维护表格模型
 * 实现向JTable表格中添加新数据行,修改表格中某一单元格的值,
 * 以及从表格中删除指定的数据行
 */
public class JTableDemo extends JFrame{
	private JTextField aTextField;
	private JTextField bTextField;
	private JTextField cTextField;
	int selectedRow;
	
	public static void main(String[] args) {
		new JTableDemo().setVisible(true);
	}
	
	/**
	 * 构造方法
	 */
	public JTableDemo(){
		this.setTitle("JTable表格的增、删、改");
		this.setVisible(true);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setSize(700, 450);
		//JFrame窗体居中
		this.setLocationRelativeTo(null);
		
		//创建JScrollPane(滚动面板)
		final JScrollPane scrollPane = new JScrollPane();
		this.getContentPane().add(scrollPane, BorderLayout.CENTER);
		//设置JTable中的列名
		Vector<String> columnNames = new Vector<>();
		columnNames.add("Row-one");
		columnNames.add("Row-tow");
		columnNames.add("Row-three");
		//设置JTable的表格数据
		Vector<Vector<String>> tableValues = new Vector<>();
		for(int row=1; row<6; row++){
			Vector<String> rowV = new Vector<>();
			rowV.add("A"+ row);
			rowV.add("B"+ row);
			rowV.add("C"+ row);
			tableValues.add(rowV);
		}
		//创建JTable (表格)
		JTable table = new JTable();
		//创建表格模型
		DefaultTableModel defaultTableModel = new DefaultTableModel(tableValues, columnNames);
		//设置JTable的表格模型
		table.setModel(defaultTableModel);
		/*
		 * 将JTable添加到JScrollPane中,
		 * */
		scrollPane.setViewportView(table);
		
		final JPanel panel = new JPanel();
		panel.setBackground(Color.gray);
		this.getContentPane().add(panel, BorderLayout.SOUTH);
		panel.add(new JLabel("A: "));
		aTextField = new JTextField("A-one", 10);
		panel.add(aTextField);
		panel.add(new JLabel("B: "));
		bTextField = new JTextField("B-tow", 10);
		panel.add(bTextField);
		panel.add(new JLabel("C: "));
		cTextField = new JTextField("C-three", 10);
		panel.add(cTextField);
		
		JButton insertButton = new JButton("添加");
		JButton deleteButton = new JButton("删除");
		JButton updateButton = new JButton("修改");
		panel.add(insertButton);
		panel.add(deleteButton);
		panel.add(updateButton);
		
		//设置表格的选择模式---为单选模式
		table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		
		
		/**
		 * 点击JScrollPane滚动面板,取消选中的行
		 */
		scrollPane.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				//取消掉选中行,但是选中行的索引值还是在的,没有取消掉
				table.clearSelection();
				//显示选中行的索引值。
				System.out.println("-----------------"+selectedRow);
				
				
				//设置JTextField的默认值
				aTextField.setText("A-one");
				bTextField.setText("B-two");
				cTextField.setText("C-three");
			}
		});
		
		
		/**
		 * 将选中的JTable行的的信息传递给--aTestField、bTextField、cTextField
		 */
		table.addMouseListener(new MouseAdapter() {

			@Override
			public void mouseClicked(MouseEvent e) {
				//获取到JTable中选定行的---索引值
				selectedRow = table.getSelectedRow();
				//获取到指定单元格的值
				Object oa = defaultTableModel.getValueAt(selectedRow, 0);
				Object ob = defaultTableModel.getValueAt(selectedRow, 1);
				Object oc = defaultTableModel.getValueAt(selectedRow, 2);
				//将获取去到的DefaultTableModel中指定单元格的值,传递给JTextField
				aTextField.setText(oa.toString());
				bTextField.setText(ob.toString());
				cTextField.setText(oc.toString());
			}
		});
		
		
		/**
		 * 删除
		 */
		insertButton.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				//设置要添加到DefaultTableModel中的---行数据内容
				String[] rowValues = {aTextField.getText(), 
							bTextField.getText(), cTextField.getText()};
				//在DefaultTableModel---添加行
				defaultTableModel.addRow(rowValues);
				
				//设置JTextField的默认值
				aTextField.setText("A-one");
				bTextField.setText("B-two");
				cTextField.setText("C-three");
			}
		});
		
		
		/**
		 * 添加
		 */
		deleteButton.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				//获取到JTable中选定行的---索引值
				selectedRow = table.getSelectedRow();
				//JTable中行的索引值是从0,1,2.3...开始的,
				//只有选中行时,才能修改内容
				if(selectedRow != -1){
					//删除DefaultTableModel中---指定索引值得行
					defaultTableModel.removeRow(selectedRow);
				}
			}
		});
		
		
		/**
		 * 修改
		 */
		updateButton.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				//获取到JTable中选定行的---索引值
				selectedRow = table.getSelectedRow();
				//JTable中行的索引值是从0,1,2.3...开始的,
				//只有选中行时,才能修改内容
				if(selectedRow != -1){
					//通过获取到JTextField的中的值,来修改指定单元格的内容
					defaultTableModel.setValueAt(aTextField.getText(), selectedRow, 0);
					defaultTableModel.setValueAt(bTextField.getText(), selectedRow, 1);
					defaultTableModel.setValueAt(cTextField.getText(), selectedRow, 2);
				}
			}
		});
		
	}
	
}

[代码运行效果截图]


JTable的表格维护----增、删、改。


网友评论    (发表评论)

共2 条评论 1/1页

发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...