当前位置: 首页 > news >正文

java 表格项的删除、编辑、增加 修改版

修改之后的java 代码:

package com.platformda.optimize;

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.Point;
import java.awt.TextField;
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.List;

import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.DefaultListModel;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableModel;
import com.platformda.optimize.algorithm.BFGSSetting;
import com.platformda.optimize.algorithm.BFGSSettingEditor;
import com.platformda.optimize.algorithm.CGSetting;
import com.platformda.optimize.algorithm.CGSettingEditor;
import com.platformda.optimize.algorithm.DFPSetting;
import com.platformda.optimize.algorithm.DFPSettingEditor;
import com.platformda.optimize.algorithm.DifferentialEvolutionSetting;
import com.platformda.optimize.algorithm.DifferentialEvolutionSettingEditor;
import com.platformda.optimize.algorithm.LMSetting;
import com.platformda.optimize.algorithm.LMSettingEditor;
import com.platformda.optimize.algorithm.NewSDSetting;
import com.platformda.optimize.algorithm.NewSDSettingEditor;
import com.platformda.optimize.algorithm.NewTRSetting;
import com.platformda.optimize.algorithm.NewTRSettingEditor;
import com.platformda.optimize.algorithm.PSOSetting;
import com.platformda.optimize.algorithm.PSOSettingEditor;
import com.platformda.optimize.algorithm.PatternSearchSetting;
import com.platformda.optimize.algorithm.PatternSearchSettingEditor;
import com.platformda.optimize.algorithm.SimplexSetting;
import com.platformda.optimize.algorithm.SimplexSettingEditor;
import com.platformda.optimize.algorithm.TRSetting;
import com.platformda.optimize.algorithm.TRSettingEditor;


public class OptmanagerPanel {
	 OptmanagerPanel mOptmanagerPanel ;
	 
	 JButton addButton = new JButton();
	 JButton delButton = new JButton();
	 JButton editButton = new JButton();
	 
	 ImageIcon addIcon = new ImageIcon();
	 ImageIcon delIcon = new ImageIcon();
	 ImageIcon editIcon = new ImageIcon();
	 
	 Button editOkButton     = new Button("   Ok   ");
	 Button editCancleButton = new Button("Cancle");
	 Button addOkButton =  new Button("   Ok   ");
	 Button addCancleButton = new Button("Cancle");
	 JPanel okandCancleJPanel = new JPanel();

	 
	 String[] columnName = { "AlgorithmName", "Duration" }; 
	 String[][] rowData ;
	 String[] rowName;
	 
	 DefaultTableModel model = new DefaultTableModel();
	 JTable table = new JTable();
	 JScrollPane scrollPane = new JScrollPane();
	 
	 JPanel tableJPanel = new JPanel();
	 JPanel headerJPanel = new JPanel();
	 JPanel addJPanel = new JPanel();
	 
	 static OptSettingEditor settingEditor ;
	 static OptSetting setting;
	 
	 int  row;
	 int editRow;
	 int delRow;
	 
	// static JPanel editJPanel ;
	 
	 JFrame disEditFrame = new JFrame();
	 JFrame disaddFrame = new JFrame();
	 
	 Point  mousePoint ;
	 String obName;
	 int[] delSelected ;
	 
	 OptAlgorithmManager manager = new OptAlgorithmManager();
	 List<OptAlgorithm>  algorithmlist =  OptAlgorithmManager.getAllAlgorithms();
	 
	 
	 String[] addrowData = new String[2];
	 
	 JPanel durationJPanel = new JPanel();
	 
	 JList<Object> rowNameList;
	 JScrollPane addScrollPane;
	 String rowListName;
	 String delName;
	 
	 Box Editbox = Box.createVerticalBox();
	 Box addCenterBox = Box.createHorizontalBox();
	 Box addLeftBox = Box.createVerticalBox();
	 Box addBottomBox = Box.createVerticalBox();
	 JPanel addCenterJPanel = new JPanel();
	 
	 //--
	 JPanel bfgsJPanel ,cgJPanel , dfpJPanel , lmJPanel,newSDJPanel ,newTRJPanel, pSJPanel, deJPanel,psoJPanel,splxJPanel,trJPanel;
	 
	public void initPanel(){
		mOptmanagerPanel = new OptmanagerPanel();
		
		JFrame mJFrame = new JFrame();
		mJFrame.setLayout(new BorderLayout());
		mJFrame.add(mOptmanagerPanel.tableHeaderJPanel(),BorderLayout.NORTH);
		mJFrame.add(mOptmanagerPanel.tablePanel(), BorderLayout.CENTER);
        mJFrame.setBounds(300, 300, 300, 100); 
        mJFrame.pack();
        mJFrame.setVisible(true);
        mJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);	
	}
	
	
	public JPanel tablePanel(){
		mOptmanagerPanel = new OptmanagerPanel();
		 rowData = mOptmanagerPanel.getAlgorithmData();
		 	
		 model = new  DefaultTableModel(rowData,columnName);
		 table = new JTable(model);
		 table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 
		// table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

		 scrollPane = new JScrollPane(table);
		 scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);		
		
		 //所获取的行,在删除后会自动后移
		table.addMouseListener(new MouseAdapter() {			
				@Override
				public void mouseReleased(MouseEvent e) {
				  mousePoint = e.getPoint();
				  System.out.println(table.rowAtPoint(mousePoint));	
				 
				  obName = table.getValueAt(table.rowAtPoint(mousePoint), 0).toString();
				  System.out.println(obName);
				  				
				}
			});
			
				
		tableJPanel.setLayout(new BoxLayout(tableJPanel,BoxLayout.Y_AXIS));
		tableJPanel.add(Box.createVerticalStrut(10));
		tableJPanel.add(scrollPane);
		tableJPanel.add(Box.createVerticalStrut(10));
		
		return tableJPanel;		
	}
	
	public JPanel tableHeaderJPanel(){
		mOptmanagerPanel = new OptmanagerPanel();
				
		headerJPanel.setLayout(new BoxLayout(headerJPanel, BoxLayout.X_AXIS));				
		
		addIcon = new ImageIcon("Picture/add.png");
		addButton.setIcon(addIcon);
		delIcon = new ImageIcon("Picture/remove.png");
		delButton.setIcon(delIcon);
		editIcon = new ImageIcon("Picture/edit.png");
		editButton.setIcon(editIcon);
		

				
				//存在问题:未选,则点击删除报错,已解决:加try catch
				 delButton.addActionListener(new ActionListener() {			
					@Override
					public void actionPerformed(ActionEvent e) {
						
						try {
							delRow =  table.rowAtPoint(mousePoint);
							if (delRow !=-1 ) {
								int delresponse = JOptionPane.showConfirmDialog(null, "Sure to remove ?", "Warning", JOptionPane.OK_CANCEL_OPTION);													
								if (delresponse == JOptionPane.OK_OPTION) {
									model.removeRow(table.rowAtPoint(mousePoint));							
								}
								
							}
						} catch (Exception e2) {
							JOptionPane.showMessageDialog(null, "please choose before remove ! ","warning",JOptionPane.YES_OPTION);
						}							
					}
				});
				//貌似都是第一个是正确的,但是点击第二次或者之后的可能就存在问题??已解决:box.remove
				 //还存在一个问题,修改过某一个值后,会在之后的修改框中显示同样名字的变量的修改后的值,而不是最开始的值:已解决
				 //不是显示 修改之后的值
				 //存在问题:点击删除后,再点击编辑,还可以编辑。解决:分别获取editRow和delRow
				editButton.addActionListener(new ActionListener() {	
						
						@Override
						public void actionPerformed(ActionEvent arg0) {
							 try {	
								 editRow = table.rowAtPoint(mousePoint);
								 obName =  table.getValueAt(editRow, 0).toString();  
								   if ( editRow !=-1 ) {
										switch (obName) {
										case "BFGS":
											 Editbox.removeAll();
											 Editbox.add(mOptmanagerPanel.bfgsjJPanel());
											 disEditFrame.setTitle("BFGS");
											 break;
										case "CG":
											Editbox.removeAll();
											Editbox.add(mOptmanagerPanel.cgJpanel());
											 disEditFrame.setTitle("CG");
											break;
										case "DFP":
											Editbox.removeAll();
											Editbox.add(mOptmanagerPanel.dfpJpanel());
											disEditFrame.setTitle("DFP");
											break;
										case "LM":
											Editbox.removeAll();
											Editbox.add(mOptmanagerPanel.lmJpanel());
											disEditFrame.setTitle("LM");
											break;
										case "NewTR":
											Editbox.removeAll();
											Editbox.add(mOptmanagerPanel.newTrJpanel());
											disEditFrame.setTitle("NewTR");
											break;
										case "NewSD":
											Editbox.removeAll();
											Editbox.add(mOptmanagerPanel.newSdJpanel());
											disEditFrame.setTitle("NewSD");
											break;
										case "PS":
											Editbox.removeAll();
											Editbox.add(mOptmanagerPanel.psJpanel());
											disEditFrame.setTitle("PS");
											break;
										case "DE":
											Editbox.removeAll();
											Editbox.add(mOptmanagerPanel.deJpanel());
											disEditFrame.setTitle("DE");
											break;
										case "PSO":
											Editbox.removeAll();
											Editbox.add(mOptmanagerPanel.psoJpanel());
											disEditFrame.setTitle("PSO");
											break;
										case "SPLX":
											Editbox.removeAll();
											Editbox.add(mOptmanagerPanel.splxJpanel());
											disEditFrame.setTitle("SPLX");
											break;
										case "TR":
											Editbox.removeAll();
											Editbox.add(mOptmanagerPanel.trJpanel());
											disEditFrame.setTitle("TR");
											break;
										default:
											System.out.println("please choose edit item");
											break;
										}
									}							
										editPanel();					
							 }catch (Exception e) {
								 JOptionPane.showMessageDialog(null, "please choose first !");
									//System.out.println("please choose again !");
								 }				 				
							}							
					}); 				 			 

		
		 
			
		addButton.addActionListener(new ActionListener() {		
			@Override
			public void actionPerformed(ActionEvent arg0) {
				
				addPanel();			
			}
		});		 
				
		headerJPanel.add(addButton);
		headerJPanel.add(delButton);
		headerJPanel.add(editButton);													
		
		return headerJPanel;		
	}

	public void addPanel(){
		addLeftBox.removeAll();
		disaddFrame.setVisible(true);
	
		mOptmanagerPanel = new OptmanagerPanel();
		disaddFrame.setLayout(new BorderLayout());
		addCenterJPanel.setLayout(new BorderLayout());

		DefaultListModel listModel = new DefaultListModel<>();		
		for (OptAlgorithm mAlgorithm :algorithmlist) {
			listModel.addElement(mAlgorithm.getName().toString());
		}		
		rowNameList = new JList(listModel);
		rowNameList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

		addScrollPane = new JScrollPane(rowNameList);
		addScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
		
		
		rowNameList.addMouseListener(new MouseAdapter() {				
				@Override
				public void mouseClicked(MouseEvent e) {
					try {
						 System.out.println(rowNameList.getSelectedIndex());					 
						 rowListName = rowNameList.getSelectedValue().toString();
						 System.out.println(rowListName);	
						 switch (rowListName) {
						 case "BFGS":
							 addCenterBox.removeAll();
							 addCenterBox.add(mOptmanagerPanel.bfgsjJPanel());
							 disaddFrame.validate();
							 break;							 
						 case "CG":
							addCenterBox.removeAll();
							addCenterBox.add(mOptmanagerPanel.cgJpanel());
							disaddFrame.validate();
							break;
						 case "DFP":
								addCenterBox.removeAll();
								addCenterBox.add(mOptmanagerPanel.dfpJpanel());
								disaddFrame.validate();
								break;
						 case "LM":
								addCenterBox.removeAll();
								addCenterBox.add(mOptmanagerPanel.lmJpanel());
								disaddFrame.validate();
								break;
						 case "NewSD":
								addCenterBox.removeAll();
								addCenterBox.add(mOptmanagerPanel.newSdJpanel());
								disaddFrame.validate();
								break;
						 case "NewTR":
								addCenterBox.removeAll();
								addCenterBox.add(mOptmanagerPanel.newTrJpanel());
								disaddFrame.validate();
								break;
						 case "PS":
								addCenterBox.removeAll();
								addCenterBox.add(mOptmanagerPanel.psJpanel());
								disaddFrame.validate();
								break;
						 case "DE":
								addCenterBox.removeAll();
								addCenterBox.add(mOptmanagerPanel.deJpanel());
								disaddFrame.validate();
								break;
						 case "PSO":
								addCenterBox.removeAll();
								addCenterBox.add(mOptmanagerPanel.psoJpanel());
								disaddFrame.validate();
								break;
						 case "SPLX":
								addCenterBox.removeAll();
								addCenterBox.add(mOptmanagerPanel.splxJpanel());
								disaddFrame.validate();
								break;
						 case "TR":
								addCenterBox.removeAll();
								addCenterBox.add(mOptmanagerPanel.trJpanel());
								disaddFrame.validate();
								break;
						default:					
							break;
						}
					} catch (Exception e2) {
						//JOptionPane.showMessageDialog(null, "please choose add item first");
						//System.out.println("again");
					}
					addOkButton.addActionListener(new ActionListener() {
						
						@Override
						public void actionPerformed(ActionEvent arg0) {
							addrowData[0] = rowListName;
							addrowData[1] = String.valueOf(0);
							model.addRow(addrowData);
							disaddFrame.setVisible(false);
							
						}
					});												 
				}
			});	
		
		addCancleButton.addActionListener(new ActionListener() {			
			@Override
			public void actionPerformed(ActionEvent e) {
				disaddFrame.setVisible(false);					
				//System.exit(0);
			}
		});
		
		addLeftBox.add(addScrollPane);		
		addBottomBox.add(initAddOkandCancleJPanel());
		
		addCenterJPanel.add(addCenterBox,BorderLayout.NORTH);
		
		disaddFrame.add(addLeftBox,BorderLayout.WEST);
		disaddFrame.add(addCenterJPanel,BorderLayout.CENTER);
		disaddFrame.add(addBottomBox,BorderLayout.SOUTH);
		disaddFrame.setTitle("Add");
		disaddFrame.setBounds(750,400,300,400);
		//disaddFrame.pack();	
		disaddFrame.setVisible(true);				
	}
	
	public void editPanel(){
			
		//存在关闭后第二次打开有滚动条嵌套和确定取消按钮位置不一致的问题,已解决:box.removeAll();
		editOkButton.addActionListener(new ActionListener() {									
			@Override
			public void actionPerformed(ActionEvent ae) {
				if(settingEditor.stopEditing()){}	
				disEditFrame.setVisible(false);
				Editbox.removeAll();
			}
		});	
		editCancleButton.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent arg0) {
				disEditFrame.setVisible(false);	
				Editbox.removeAll();				
			}
		});

		Editbox.add(initEditOkandCancleJPanel());
		
		disEditFrame.add(Editbox);		
		disEditFrame.setBounds(750,400,300,400);
		disEditFrame.setVisible(true);
		disEditFrame.pack();							
	}
	
	public String[][] getAlgorithmData(){
     
	     rowData = new String[algorithmlist.size()][2];
	     for (int i = 0; i < algorithmlist.size(); i++) {
			rowData[i][0] = algorithmlist.get(i).getName();
			rowData[i][1] = String.valueOf(i);
		}	     
		return rowData;	     
	}
	
	/*public String[] getRowName(){
		rowName = new String[algorithmlist.size()];
		for (int i = 0; i < algorithmlist.size(); i++) {
			rowName[i] = algorithmlist.get(i).getName();
		}
		return rowName;		
	}*/

	public JPanel initAddOkandCancleJPanel(){
		okandCancleJPanel = new JPanel();
		okandCancleJPanel.add(addOkButton);
		okandCancleJPanel.add(addCancleButton);		
		return okandCancleJPanel;		
	}
	public JPanel initEditOkandCancleJPanel(){
		okandCancleJPanel = new JPanel();
		okandCancleJPanel.add(editOkButton);
		okandCancleJPanel.add(editCancleButton);		
		return okandCancleJPanel;		
	}
	/*public JPanel initdurationJPanel(){
		durationJPanel.setLayout(new GridLayout(1, 2,30,10));
		durationJPanel.add(new Label("Duration"));
		durationJPanel.add(new TextField(0));		
		return durationJPanel;		
	}*/

	public JPanel bfgsjJPanel(){
		 setting = new BFGSSetting();
		 settingEditor = new BFGSSettingEditor((BFGSSetting) setting);
		 bfgsJPanel = (JPanel) settingEditor.getEditorComponent();
		return bfgsJPanel;		
	}
	public JPanel cgJpanel(){
		setting = new CGSetting();
		 settingEditor = new CGSettingEditor((CGSetting) setting);
		  cgJPanel = (JPanel) settingEditor.getEditorComponent();
		  return cgJPanel;
	}
	public JPanel dfpJpanel(){
		setting = new DFPSetting() ;
		settingEditor = new DFPSettingEditor((DFPSetting) setting);
		dfpJPanel = (JPanel) settingEditor.getEditorComponent();
		  return dfpJPanel;
	}
	public JPanel lmJpanel(){
		setting = new LMSetting();
		settingEditor = new LMSettingEditor((LMSetting) setting);
		lmJPanel = (JPanel) settingEditor.getEditorComponent();
		  return lmJPanel;
	}
	public JPanel newTrJpanel(){
		setting = new NewTRSetting();
		settingEditor = new NewTRSettingEditor((NewTRSetting) setting);
		newTRJPanel = (JPanel) settingEditor.getEditorComponent();
		  return newTRJPanel;
	}
	public JPanel newSdJpanel(){
		setting = new NewSDSetting();
		settingEditor = new NewSDSettingEditor((NewSDSetting) setting);
		newSDJPanel = (JPanel) settingEditor.getEditorComponent();
		  return newSDJPanel;
	}
	public JPanel psJpanel(){
		setting = new PatternSearchSetting();
		settingEditor = new PatternSearchSettingEditor((PatternSearchSetting) setting);
		pSJPanel = (JPanel) settingEditor.getEditorComponent();
		  return pSJPanel;
	}
	public JPanel deJpanel(){
		setting = new DifferentialEvolutionSetting();
		settingEditor = new DifferentialEvolutionSettingEditor((DifferentialEvolutionSetting) setting);
		deJPanel = (JPanel) settingEditor.getEditorComponent();
		  return deJPanel;
	}
	public JPanel psoJpanel(){
		setting = new PSOSetting();
		settingEditor = new PSOSettingEditor((PSOSetting) setting);
		psoJPanel = (JPanel) settingEditor.getEditorComponent();
		  return psoJPanel;
	}
	public JPanel splxJpanel(){
		setting = new SimplexSetting();
		settingEditor = new SimplexSettingEditor((SimplexSetting) setting);
		splxJPanel = (JPanel) settingEditor.getEditorComponent();
		  return splxJPanel;
	}
	public JPanel trJpanel(){
		setting = new TRSetting();
		settingEditor = new TRSettingEditor((TRSetting) setting);
		trJPanel = (JPanel) settingEditor.getEditorComponent();
		  return trJPanel;
	}
	
}


 

 

 

转载于:https://www.cnblogs.com/james1207/p/3271303.html

相关文章:

  • 《敏捷个人》周刊 第5期 (可下载)
  • 暂时性死区
  • nginx实现最简单的直播
  • java项目代码上线
  • MySQL引擎之innodb介绍及特点
  • mybatis一级缓存二级缓存
  • 高德,百度,84经纬度坐标系的相互转换
  • 解决 Elasticsearch 超过 10000 条无法查询的问题
  • 链表插入排序、链表归并排序
  • 检测ip代理有效性
  • Java开发笔记(一百二十一)AWT输入框
  • 压缩命令
  • 未能加载文件或程序集“Microsoft.mshtml, Version=7.0.3300.0…………解决方法
  • sql2005-windows身份验证改为sqlserver验证【sa】
  • 初探云原生应用管理(一): Helm 与 App Hub
  • create-react-app项目添加less配置
  • Netty源码解析1-Buffer
  • php ci框架整合银盛支付
  • php中curl和soap方式请求服务超时问题
  • Python 基础起步 (十) 什么叫函数?
  • Shadow DOM 内部构造及如何构建独立组件
  • Vue 重置组件到初始状态
  • vue-router 实现分析
  • webgl (原生)基础入门指南【一】
  • 创建一种深思熟虑的文化
  • 那些被忽略的 JavaScript 数组方法细节
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (3)(3.5) 遥测无线电区域条例
  • (5)STL算法之复制
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (算法设计与分析)第一章算法概述-习题
  • (转) 深度模型优化性能 调参
  • (转)visual stdio 书签功能介绍
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .NET Framework .NET Core与 .NET 的区别
  • .NET MVC、 WebAPI、 WebService【ws】、NVVM、WCF、Remoting
  • .NET MVC第三章、三种传值方式
  • .net MySql
  • .NET Standard / dotnet-core / net472 —— .NET 究竟应该如何大小写?
  • .NET 设计一套高性能的弱事件机制
  • .net 无限分类
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地定义和使用弱事件
  • .net2005怎么读string形的xml,不是xml文件。
  • .netcore 获取appsettings
  • .NetCore项目nginx发布
  • .NET企业级应用架构设计系列之开场白
  • .NET学习教程二——.net基础定义+VS常用设置
  • [Android 13]Input系列--获取触摸窗口
  • [Angular] 笔记 20:NgContent
  • [Angular] 笔记 21:@ViewChild