Java编辑表_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 algorithmlist = OptAlgorithmManager.getAllAlgorithms();

String[] addrowData = new String[2];

JPanel durationJPanel = new JPanel();

JList 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;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值