【java程序设计课程源码10例】窗口设计、计算矩形面积、简易计算器、模拟QQ程序、学生投票与班级管理等编程实现(老师上课教的)

1.空白窗口的设计(窗体入门)

代码展示

package tuo;
import javax.swing.*;
public class 空白窗口的设计 extends JFrame {  //自定义你的空白窗口

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		new 空白窗口的设计();
	}
	public 空白窗口的设计() {
		setTitle("我的窗口");
		setSize(500,500);  // 在此处设置你的窗口的长和宽
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);		
		
	}

}
//继承方式和非继承方式设计

运行效果:

在这里插入图片描述

2.记事本的创建与文本写入(办公自动化)

代码展示

package tuo;   // 记得package包名要与你的package包名匹配,你没有包的话可以删掉这段直接运行
import java.io.*;  // 导入java的输入输出流

public class 记事本 {  // 记事本的创建与文本写入(办公自动化)
	public static void main(String args[]){  // java主函数的惯例写法
		File file=new File("F:\\","我的文本.txt");  // 此处可以修改你想要读写的记事本文件,可以改成C盘或者D盘
		try {
			if (!file.exists())								// 如果文件不存在
				file.createNewFile();							// 创建新文件
			InputStreamReader isr=new InputStreamReader(System.in);  //创建文件输入流
			BufferedReader br=new BufferedReader(isr);      //Read 读  input输出
			System.out.println("欢迎来到记事本新建与读写程序!");
			System.out.println("请输入你的文本(输入完毕后按回车):");
			String str=br.readLine();  //读取用户输入的内容
			System.out.println("你输入的内容是:"+str);
			System.out.println("已经成功保存在记事本:F:/我的文本.txt");
			System.out.println("运行完毕!");
			FileWriter fos=new FileWriter(file,true); 			//创建文件输出流
			BufferedWriter bw=new BufferedWriter(fos);    //Write 写  file output 输出
			bw.write(str);  //运行,把读取到的内容写入
			br.close();     //关闭文件输入流
			bw.close();     //关闭文件输出流
		} catch (IOException e) {
			e.printStackTrace();  //如果报错,获取错误信息并弹出
		}
	}
}   //注释:TUO图欧君


运行效果

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.计算矩形面积

代码展示

package tuo;

import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;

public class Square {
	private JFrame frame;
	private JTextField textField;
	private JTextField textField_1;
	private JTextField textField_2;
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
	public void run() {
		try {
		Square window = new Square();
		window.frame.setVisible(true);
	} catch (Exception e) {
	e.printStackTrace();
	}
	}
	});
	}
	
	public Square() {
	initialize();
	}
	
	private void initialize() {
	frame = new JFrame();
	frame.setTitle("就算矩形面积");
	frame.setBounds(100, 100, 500, 500);
	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	frame.getContentPane().setLayout(null);
	frame.setResizable(false);
	JLabel label = new JLabel("长:");
	label.setBounds(27, 31, 27, 41);
	frame.getContentPane().add(label);
	textField = new JTextField();
	textField.setBounds(88, 39, 200, 24);
	frame.getContentPane().add(textField);
	textField.setColumns(10);
	JLabel label_1 = new JLabel("宽:");
	label_1.setBounds(27, 85, 27, 41);
	frame.getContentPane().add(label_1);
	textField_1 = new JTextField();
	textField_1.setBounds(88, 93, 200, 24);
	frame.getContentPane().add(textField_1);
	textField_1.setColumns(10);
	JLabel label_2 = new JLabel("面积:");
	label_2.setBounds(27, 154, 43, 18);
	frame.getContentPane().add(label_2);
	textField_2 = new JTextField();
	textField_2.setColumns(10);
	textField_2.setBounds(88, 151, 200, 24);
	frame.getContentPane().add(textField_2);
	JButton button = new JButton("计算");
	button.setBounds(46, 213, 113, 27);
	frame.getContentPane().add(button);
	button.addActionListener(new ActionListener() {
	
	public void actionPerformed(ActionEvent e) {
	try {
	Double d1 = Double.valueOf(textField.getText());
	Double d2 = Double.valueOf(textField_1.getText());
	Double d3 = (int) (d1 * d2 * 1000 + 0.5) / 1000.0;
	
	textField_2.setText(d3.toString());
	} catch (Exception e2) {
	// TODO: handle exception
	textField_2.setText("请输入正确的数字!");
		}
	}
	});
}
}

运行效果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.简易计算器

代码展示

package tuo;

import java.awt.BorderLayout;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;

import javax.swing.*;

public class 简易的计算器 extends JFrame {
	private JTextField t1,t2;
	private JButton b1,b2;
	private JLabel l,result;
	private JComboBox op;
	
public 简易的计算器 (){
	this.setTitle("简易的计算器");
	this.setSize(500, 250);
	this.setResizable(false);
	this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	t1=new JTextField("请输入第一个计算数据");
	t2=new JTextField("请输入第二个计算数据");
	l=new JLabel("=");
	result=new JLabel("计算结果");
	String s[]={"+","-","*","/"};
	op=new JComboBox(s);
	b1=new JButton("计算");
	b2=new JButton("清除");
	JPanel p1=new JPanel();
	JPanel p2=new JPanel();
	p1.add(t1);
	p1.add(op);
	p1.add(t2);
	p1.add(l);
	p1.add(result);
	p2.add(b1);
	p2.add(b2);
	this.add(p1,BorderLayout.CENTER);
	this.add(p2,BorderLayout.SOUTH);
	t1.setToolTipText("请输入第一个计算数据");
	t2.setToolTipText("请输入第二个计算数据");
		t1.addFocusListener(new FocusAdapter(){
		public void focusGained(FocusEvent e) {
			// TODO Auto-generated method stub
			t1.setText("");
			t1.setColumns(10);
			t1.setToolTipText("请输入第一个计算数据");//设置提示文本
			}		
	});
t2.addFocusListener(new FocusAdapter(){
	public void focusGained(FocusEvent e) {
		// TODO Auto-generated method stub
		t2.setText("");
		t2.setColumns(10);
		t2.setToolTipText("请输入第二个计算数据");//设置提示文本
	}	
});

}
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
简易的计算器 frame=new 简易的计算器();
frame.setVisible(true);
frame.requestFocus();
	}

}

运行效果

在这里插入图片描述
在这里插入图片描述

5.模拟QQ登录小程序

代码展示

package bilibili_tuo;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;
import javax.swing.border.Border;
public class QQ登录 implements ActionListener{  //extends JFrame {
	static JPasswordField psd=new JPasswordField(18);
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		init();
	}
public static void init() {
	JFrame frame=new JFrame();
	frame.setTitle("窗口测试");
	frame.setSize(288,200);
	frame.setLocation(400,200);
	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	JLabel l1=new JLabel("QQ登录");
	l1.setHorizontalAlignment(JLabel.CENTER);
	Font font=new Font("华文琥珀",Font.BOLD,16);
	l1.setFont(font);
	l1.setForeground(Color.RED);
	JLabel l2=new JLabel("用户名:");
	JLabel l3=new JLabel("密   码:");
	JTextField username=new JTextField(18);//约定用户名和密码都是123
	psd.setEchoChar('*');
	JButton login=new JButton("登录");
	JButton exit=new JButton("退出");
	JPanel p1=new JPanel();
	JPanel p2=new JPanel();
	p1.add(l2);
	p1.add(username);
	p1.add(l3);
	p1.add(psd);
	p2.add(login);
	p2.add(exit);
	frame.add(l1,BorderLayout.NORTH);
	frame.add(p1,BorderLayout.CENTER);
	frame.add(p2,BorderLayout.SOUTH);
	login.addActionListener(new ActionListener() {
		@Override
		public void actionPerformed(ActionEvent arg0) {
			// TODO Auto-generated method stub
			if(username.getText().equalsIgnoreCase("123")&&psd.getText().equalsIgnoreCase("123")) {
				frame.dispose();
				QQ主界面  qqframe = new QQ主界面 ();
				qqframe.setVisible(true);
			}
			else {
				JOptionPane.showMessageDialog(frame, "登录失败");
			}
		}
		
	});
	exit.addActionListener(new QQ登录());
	frame.setResizable(false);
	frame.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
	// TODO Auto-generated method stub
	JOptionPane.showMessageDialog(null, psd.getText());
}
}

6.模拟QQ主界面程序

代码展示

package tuo;
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;
import javax.swing.tree.*;

public class QQ主界面 extends JFrame {
	private JTextField textField;	
	private DefaultTreeModel treeModel;	
	private JTree tree;
	
	public static void main(String args[]) {
		QQ主界面  frame = new QQ主界面 ();
		frame.setVisible(true);
	}
	
	public QQ主界面 () {
		super();
		setTitle("模拟QQ");
		setSize(500, 375);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setLocation(200,200);
		JScrollPane scrollPane = new JScrollPane();
		getContentPane().add(scrollPane, BorderLayout.CENTER);
		
		DefaultMutableTreeNode root = new DefaultMutableTreeNode("模拟QQ");		
		DefaultMutableTreeNode nodeA = new DefaultMutableTreeNode("朋友");
		root.add(nodeA);
		nodeA.add(new DefaultMutableTreeNode("吴代兴"));
		nodeA.add(new DefaultMutableTreeNode("刘得多"));
		nodeA.add(new DefaultMutableTreeNode("唐果"));
		
		DefaultMutableTreeNode nodeB = new DefaultMutableTreeNode("同事");
		root.add(nodeB);
		nodeB.add(new DefaultMutableTreeNode("蓊风"));
		
		DefaultMutableTreeNode nodeC = new DefaultMutableTreeNode("同学");
		root.add(nodeC);
		nodeC.add(new DefaultMutableTreeNode("张小明"));
		nodeC.add(new DefaultMutableTreeNode("李朋"));
		
		DefaultMutableTreeNode nodeD = new DefaultMutableTreeNode("家人");
		root.add(nodeD);
		nodeD.add(new DefaultMutableTreeNode("戴小花"));
		nodeD.add(new DefaultMutableTreeNode("罗大估"));
		
		DefaultMutableTreeNode nodeE = new DefaultMutableTreeNode("工作群");
		root.add(nodeE);
		nodeE.add(new DefaultMutableTreeNode("谢心怡"));
		nodeE.add(new DefaultMutableTreeNode("李刚"));
		
		treeModel = new DefaultTreeModel(root, true);
		
		tree = new JTree(treeModel);
		tree.setSelectionPath(new TreePath(root));//  取得树的root节点的位置并设置为选中状态
		scrollPane.setViewportView(tree);
		tree.addMouseListener(new MouseAdapter() {

			@Override
			public void mouseClicked(MouseEvent arg0) {
				// TODO Auto-generated method stub
				if (arg0.getClickCount()==2 && arg0.getButton()==MouseEvent.BUTTON1) {
					//右键双击的事件处理
					DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree
							.getLastSelectedPathComponent();// 获得选中的欲删除节点
					// 查看欲删除的节点是否为根节点,根节点不允许删除
					if (node.isLeaf()) {
					SwingUtilities.invokeLater(聊天::createAndShowGUI);
					}
					}
			}
		});
		
		final JPanel panel = new JPanel();
		getContentPane().add(panel, BorderLayout.SOUTH);
		
		final JLabel label = new JLabel();
		label.setText("名称:");
		panel.add(label);
		
		textField = new JTextField();
		textField.setColumns(8);
		textField.setText("测试");
		panel.add(textField);
		
		final JButton addButton = new JButton("添加");
		addButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				DefaultMutableTreeNode node = new DefaultMutableTreeNode(
						textField.getText());// 创建欲添加节点
				TreePath selectionPath = tree.getSelectionPath();// 获得选中的父节点路径
				DefaultMutableTreeNode parentNode = (DefaultMutableTreeNode) selectionPath
						.getLastPathComponent();// 获得选中的父节点
				treeModel.insertNodeInto(node, parentNode, parentNode
						.getChildCount());// 插入节点到所有子节点之后
				TreePath path = selectionPath.pathByAddingChild(node);// 获得新添加节点的路径
				if (!tree.isVisible(path))
					tree.makeVisible(path);// 如果该节点不可见则令其可见
			}
		});
		panel.add(addButton);
		
		final JButton updButton = new JButton("修改");
		updButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				// 获得选中的欲修改节点的路径
				TreePath selectionPath = tree.getSelectionPath();
				DefaultMutableTreeNode node = (DefaultMutableTreeNode) selectionPath
						.getLastPathComponent();// 获得选中的欲修改节点
				node.setUserObject(textField.getText());// 修改节点的用户标签
				treeModel.nodeChanged(node);// 通知树模型该节点已经被修改
				tree.setSelectionPath(selectionPath);// 选中被修改的节点
			}
		});
		panel.add(updButton);
		
		final JButton delButton = new JButton("删除");
		delButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree
						.getLastSelectedPathComponent();// 获得选中的欲删除节点
				// 查看欲删除的节点是否为根节点,根节点不允许删除
				if (!node.isRoot()) {
					DefaultMutableTreeNode nextSelectedNode = node
							.getNextSibling();// 获得下一个兄弟节点,以备选中
					if (nextSelectedNode == null)// 查看是否存在兄弟节点
						nextSelectedNode = (DefaultMutableTreeNode) node
								.getParent();// 如果不存在则选中其父节点
					treeModel.removeNodeFromParent(node);// 删除节点
					tree.setSelectionPath(new TreePath(nextSelectedNode
							.getPath()));// 选中节点
				}
			}
		});
		panel.add(delButton);
		//
	}
}

7.模拟QQ窗口聊天程序

代码展示

package tuo;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;
public class 聊天{
	public static void createAndShowGUI() {
		// 创建一个JFrame聊天窗口
		JFrame f = new JFrame("聊天窗口");
		f.setLayout(new BorderLayout());
		f.setSize(500, 450);
		f.setLocation(300, 200);
		f.setVisible(true);
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		// 创建一个JTextArea文本域,用来显示多行聊天信息
		JTextArea showArea = new JTextArea(18, 34);
		// 创建一个JScrollPane滚动面板组件,将JTextArea文本域作为其显示组件
		JScrollPane scrollPane = new JScrollPane(showArea);
		showArea.setEditable(false); 				// 设置文本域不可编辑
		// 创建一个JTextField文本框,用来输入单行聊天信息
		JTextArea inputField = new JTextArea(3, 30);
		JScrollPane scrollPane2 = new JScrollPane(inputField);
		JButton btn = new JButton("发送"); 
		// 为按钮添加监听事件
		btn.addActionListener(new ActionListener() {		
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				String content = inputField.getText();
				// 判断输入的信息是否为空
				if (content != null && !content.trim().equals("")) {
					// 如果不为空,将输入的文本追加到到聊天窗口
					showArea.append("本人输入信息:" + content + "\n");
				} else {
					// 如果为空,提示聊天信息不能为空
					showArea.append("聊天信息不能为空!!!" + "\n");
				}
				inputField.setText(""); // 将输入的文本域内容置为空
			}			
		});
		// 创建一个JPanel面板组件
		JPanel panel = new JPanel();
		JLabel label = new JLabel("聊天信息");   // 创建一个标签
		panel.add(label);                   		// 将标签组件添加到JPanel面板
		panel.add(scrollPane2);             		// 将文本框添加到JPanel面板
		panel.add(btn);                     		// 将按钮添加到JPanel面板
	// 向JFrame聊天窗口的顶部和尾部分别加入面板组件JScrollPane和JPanel
		f.add(scrollPane, BorderLayout.PAGE_START);
		f.add(panel, BorderLayout.PAGE_END);
	}
	public static void main(String[] args) {
	// 使用SwingUtilities工具类调用createAndShowGUI()方法并显示GUI程序
		SwingUtilities.invokeLater(聊天::createAndShowGUI);
	}
}

8.班级管理系统

代码展示

package tuo;
import java.awt.BorderLayout;
import javax.swing.*;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.table.DefaultTableModel;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreePath;
import javax.swing.tree.TreeSelectionModel;
public class 班级管理 {
	private JTree tree;	
	private JFrame f;
	private String columnName[]={"班级","姓名","性别","年龄","政治面貌"};  //表格列标题
	private JTable table;
	private  Object data[][];
	private DefaultTableModel tableModel;
public 班级管理(){
	f=new JFrame();
	f.setSize(600,400);
	f.setTitle("班级管理");
	f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	DefaultMutableTreeNode root;// 创建树的跟节点
	root = new DefaultMutableTreeNode("计算机学院");
	DefaultMutableTreeNode nodeA;
	// 创建树的一级子节点
	nodeA = new DefaultMutableTreeNode("计算机科学与技术");
	// 向一级子节点添加二级子节点
	nodeA.add(new DefaultMutableTreeNode("19计科", false));
	nodeA.add(new DefaultMutableTreeNode("18计科", false));
	nodeA.add(new DefaultMutableTreeNode("20计科", false));
	nodeA.add(new DefaultMutableTreeNode("21计科", false));
	root.add(nodeA);// 将一级子结点添加到跟结点
	
	DefaultMutableTreeNode nodeB;
	// 创建树的一级子节点
	nodeB = new DefaultMutableTreeNode("物联网工程");
	// 向一级子节点添加二级子节点
	nodeB.add(new DefaultMutableTreeNode("19物联网工程", false));
	nodeB.add(new DefaultMutableTreeNode("18物联网工程", false));
	nodeB.add(new DefaultMutableTreeNode("20网络工程", false));
	nodeB.add(new DefaultMutableTreeNode("18网络工程", false));
	root.add(nodeB);// 将一级子结点添加到跟结点
	
	DefaultTreeModel treeModel = new DefaultTreeModel(root, true);
	tree = new JTree(treeModel);// 通过树模型创建树
	TreeSelectionModel treeSelectionModel;// 获得树的选择模型
	treeSelectionModel = tree.getSelectionModel();
	// 设置树的选择模式为连选
	treeSelectionModel.setSelectionMode(TreeSelectionModel.CONTIGUOUS_TREE_SELECTION);
	tree.addTreeSelectionListener(new TreeSelectionListener() {
		public void valueChanged(TreeSelectionEvent e) {
			if (!tree.isSelectionEmpty()) {// 查看是否存在被选中的节点
				// 获得被选中节点的路径
				TreePath treePath= tree.getSelectionPath();	//treePath=[计算机学院, 物联网工程, 20网络工程]	
					// 以Object数组的形式返回该路径中所有节点的对象
					Object[] path = treePath.getPath();
					if(path[path.length-1].toString().equalsIgnoreCase("19计科")){
						Object data[][]={{"19计科","陈峰","男",new Integer(19),"党员"},  //表格中数据
								{"19计科","田一飞","男",new Integer(18),"团员"},
								{"19计科","胡锦","女",new Integer(19),"党员"}};
						   tableModel.setDataVector(data, columnName);						
					}
					if(path[path.length-1].toString().equalsIgnoreCase("20网络工程")){
						Object data[][]={{"20网络工程","李大家","男",new Integer(20),"党员"},  //表格中数据
								{"20网络工程","吴一赠","男",new Integer(18),"团员"},
								{"20网络工程","谢谢","女",new Integer(18),"群众"}};
						tableModel.setDataVector(data, columnName);											
					}
					if(path[path.length-1].toString().equalsIgnoreCase("20计科")){
						Object data[][]={{"20计科","陈大峰","男",new Integer(19),"党员"},  //表格中数据
								{"20计科","田大飞","男",new Integer(18),"团员"},
								{"20计科","胡大锦","女",new Integer(19),"党员"}};
						   tableModel.setDataVector(data, columnName);						
					}
					if(path[path.length-1].toString().equalsIgnoreCase("19物联网工程")){
						Object data[][]={{"19物联网工程","李不","男",new Integer(20),"党员"},  //表格中数据
								{"19物联网工程","张兴","男",new Integer(18),"团员"},
								{"19物联网工程","刘言","女",new Integer(18),"群众"}};
						tableModel.setDataVector(data, columnName);											
					}
				}	
			}
	});
	tableModel = new DefaultTableModel(data,columnName);		
	table = new JTable(tableModel);// 创建指定表格模型的表格
	table.setRowHeight(25);                //设置行高
	JScrollPane  pane=new JScrollPane(table);                  //添加滚动条
	f.add(pane,BorderLayout.CENTER);		
	f.add(tree,BorderLayout.WEST);
	f.setVisible(true);
	
}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		班级管理 frame=new 班级管理();
		
	}

}

9.表格生成器

代码展示

package tuo;
import java.awt.*;
import java.awt.event.*;
import java.util.Iterator;
import java.util.Vector;

import javax.swing.*;
import javax.swing.table.*;

public class 表格 extends JFrame {
	private DefaultTableModel tableModel;// 定义表格模型对象
	private JTable table;// 定义表格对象
	private JTextField aTextField;
	private JTextField bTextField;
	
	public static void main(String args[]) {
		表格 frame = new 表格();
		frame.setVisible(true);
	}
	
	public 表格() {
		super();
		setTitle("维护表格模型");
		setBounds(100, 100, 800, 375);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		final JScrollPane scrollPane = new JScrollPane();
		getContentPane().add(scrollPane, BorderLayout.CENTER);
		this.setResizable(false);		
		//创建表格
		String[] columnNames = { "学号", "姓名" };// 定义表格列名数组
		String[][] tableValues = { { "20210101", "张三" }, { "20210102", "李四" },
				{ "20210105", "王五" } };// 定义表格数据数组
		// 创建指定表格列名和表格数据的表格模型
		tableModel = new DefaultTableModel(tableValues, columnNames);		
		table = new JTable(tableModel);// 创建指定表格模型的表格
		scrollPane.setViewportView(table);
		
		//表格编辑
		table.setRowSorter(new TableRowSorter(tableModel));// 设置表格的排序器,单击列标题可以实现排序功能
		// 设置表格的选择模式为单选
		table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		table.setSelectionForeground(Color.red);
		table.setSelectionBackground(Color.BLUE);
		table.setRowHeight(30);
		
		
		// 为表格添加鼠标事件监听器,将选择的行数据显示在组件中
		table.addMouseListener(new MouseAdapter() {
			// 发生了点击事件
			public void mouseClicked(MouseEvent e) {
				// 获得被选中行的索引
				int selectedRow = table.getSelectedRow();
				// 从表格模型中获得指定单元格的值
				Object oa = tableModel.getValueAt(selectedRow, 0);
				// 从表格模型中获得指定单元格的值
				Object ob = tableModel.getValueAt(selectedRow, 1);
				aTextField.setText(oa.toString());// 将值赋值给文本框
				bTextField.setText(ob.toString());// 将值赋值给文本框
			}
		});
	
		final JPanel panel = new JPanel();
		getContentPane().add(panel, BorderLayout.SOUTH);
		panel.add(new JLabel("学号:"));
		aTextField = new JTextField(10);
		panel.add(aTextField);
		panel.add(new JLabel("姓名:"));
		bTextField = new JTextField(10);
		panel.add(bTextField);
		final JButton addButtonrow = new JButton("添加行");
		final JButton addButtoncol = new JButton("添加列");
		final JButton delButtonrow = new JButton("删除行");
		final JButton delButtoncol = new JButton("删除列");
		final JButton updButton = new JButton("修改");
		
		/*
		 *  增加一行:addRow(Vector data);insertRow(int r,Vector data);
 		          删除一行:removeRow(int r); 
			增加一列:addColumn(Object columnname,Vector data);表格末尾增加一列
			 */
		addButtonrow.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				String[] rowValues = { aTextField.getText(),
						bTextField.getText() };// 创建表格行数组
				tableModel.addRow(rowValues);// 向表格模型中添加一行
				JOptionPane.showMessageDialog(null, "添加成功!");
			}
		});
		addButtoncol.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				String colname=JOptionPane.showInputDialog("请输入列标题");
				tableModel.addColumn(colname);
				JOptionPane.showMessageDialog(null, "添加成功!");
				
			}
		});
		delButtonrow.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				int selectedRow = table.getSelectedRow();// 获得被选中行的索引
				if (selectedRow != -1)// 判断是否存在被选中行
					// 从表格模型当中删除指定行
					tableModel.removeRow(selectedRow);
				JOptionPane.showMessageDialog(null, "删除成功!");
			}
		});
		delButtoncol.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				int col = table.getSelectedColumn();
				/*
				 * 删除一列:先通过getColumnName()获取列名,
				 * 再通过getDataVector()获取存储表格数据的向量,
				 * 然后直接操作列名向量和表格数据向量,删除指定的列,
				 * 最后通过setDataVector()更新表格;
				 */
				String name=table.getColumnName(col);
				int s=tableModel.getColumnCount();
				Vector colv=new Vector();
				for(int i=0;i<s;i++) {
					if(i!=col)
					colv.add(tableModel.getColumnName(i));
				}
				Vector data=tableModel.getDataVector();
				Iterator it=data.iterator();
				for (int r=0; r<data.size(); r++) {
					Vector row = (Vector)data.get(r);
					row.removeElementAt(col);
					}
				tableModel.setDataVector(data,colv);
			}
		});		

		updButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				int selectedRow = table.getSelectedRow();// 获得被选中行的索引
				if (selectedRow != -1) {// 判断是否存在被选中行
					tableModel.setValueAt(aTextField.getText(),
							selectedRow, 0);// 修改表格模型当中的指定值
					tableModel.setValueAt(bTextField.getText(),
							selectedRow, 1);// 修改表格模型当中的指定值
				}
			}
		});
		panel.add(addButtonrow);
		panel.add(addButtoncol);
		panel.add(delButtonrow);
		panel.add(delButtoncol);
		panel.add(updButton);
		
	}
}


更多代码展示:

【Java课程源码大分享】建议背诵全文!窗口设计、记事本读写、简易计算器、班级管理、模拟QQ登录和聊天等上课老师教的代码合集(期末考前复习必备)

B站视频地址传送门

感谢你的点赞!

  • 7
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

图欧科技团队

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值