Swing 之 JTable学习(二)

本文介绍了一种使用Java实现的维护表格模型的方法,包括创建表格、选择单元格、添加、修改和删除表格行的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.ethan.table;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;

public class EditTableModelFrame extends JFrame {
	private DefaultTableModel tableModel;
	private JTable table;
	private JTextField jtf1;
	private JTextField jtf2;
	
	public EditTableModelFrame() {
		super();
		setTitle("维护表格模型");
		setBounds(100,100,400,200);
		
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		final JScrollPane scrollPane = new JScrollPane();
		getContentPane().add(scrollPane,BorderLayout.CENTER);
		
		String[] columnNames = {"A","B"};
		
		String[][] tableValues = {{"a1","b1"},{"a2","b2"},{"a3","b3"}};
		
		tableModel = new DefaultTableModel(tableValues,columnNames);
		
		table = new JTable(tableModel);
		
		table.setRowSorter(new TableRowSorter<TableModel>(tableModel));
		
//		table.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
		
		table.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				int selectedRow = table.getSelectedRow();
				int selectedCol = table.getSelectedColumn();
				
				Object oa = tableModel.getValueAt(selectedRow, selectedCol);
				Object ob = tableModel.getValueAt(selectedRow, selectedCol);
				
				jtf1.setText(oa.toString());
				jtf2.setText(ob.toString());
			}
		});
		
		scrollPane.setViewportView(table);
		
		final JPanel panel = new JPanel();
		getContentPane().add(panel,BorderLayout.SOUTH);
		
		panel.add(new JLabel("A: "));
		jtf1 = new JTextField("A4",5);
		panel.add(jtf1);
		
		panel.add(new JLabel("B: "));
		jtf2 = new JTextField("B4",5);
		panel.add(jtf2);
		
		final JButton addButton = new JButton("添加");
		
		addButton.addActionListener(new ActionListener(){

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				//创建表格行数组
				String[] rowValues = {jtf1.getText(),jtf2.getText()};
				tableModel.addRow(rowValues);
				
				int rowCount = table.getRowCount()+1;
				
				jtf1.setText("A"+rowCount);
				jtf2.setText("B"+rowCount);
			}
			
		});
		
		panel.add(addButton);
		
		final JButton upButton = new JButton("修改");
		upButton.addActionListener(new ActionListener() {
			
			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				int selectedRow = table.getSelectedRow();
				int col = 0;
				
				if(selectedRow!=-1) {
					tableModel.setValueAt(jtf1.getText(), selectedRow, col++);
					tableModel.setValueAt(jtf2.getText(), selectedRow, col++);
				} else {
					JOptionPane.showMessageDialog(null, "请选择一行!");
				}
			}
		});
		
		panel.add(upButton);
		
		
		final JButton delButton = new JButton("删除");
		delButton.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				int[] selrows = table.getSelectedRows();
				
				if(selrows!=null&&selrows.length>0) {
					for(int row:selrows) {
						System.out.println(row);
						
							tableModel.removeRow(row);
					}
					JOptionPane.showMessageDialog(null, "删除成功!");
				}
			}
		});
		
		panel.add(delButton);
	}
	
	public static void main(String args[]) {
		EditTableModelFrame a = new EditTableModelFrame();
		a.setVisible(true);
		
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值