package ui;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Locale;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTabbedPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.UIManager;
import javax.swing.border.EmptyBorder;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
import javax.swing.table.TableModel;
import org.apache.poi.ss.usermodel.Cell;
import parser.ExpParser;
import core.DetectRepairSmell;
import core.ExtractCellArray;
import core.Formula;
import core.StructDefine;
import file.Metadata;
import file.ReadWriteFile;
import file.SheetReader;
public class MainUI extends JFrame {
private static final long serialVersionUID = 1L;
public static final int MAXROW = 700;
public static final int MAXCOLUMN = 52;
private JTextField textField_fileName;
private JList<String> list_sheetList;
private JTable table, table_snippet, table_cellArray, table_smell;
private JButton button_switchValueFormula;
private JTabbedPane tabbedPane;
private JTextArea textArea_repairAdvise;
private JButton button_ignore, button_apply, button_manualUpdate;
private JButton btn_selectAllSnippet, btn_unselectAllSnippet, btn_addSnippet, btn_deleteSnippet, btn_alterSnippet, btn_submitSnippet;
private JButton btn_selectAllCellArray, btn_unselectAllCellArray, btn_addCellArray, btn_deleteCellArray, btn_alterCellArray, btn_submitCellArray;
private ArrayList<SheetReader> sheetReaders = new ArrayList<>();
private ArrayList<ExtractCellArray> extractCellArrays = new ArrayList<>();
private ArrayList<DetectRepairSmell> detectRepairSmells = new ArrayList<>();
private int currentSheetIndex = -1;
private Color[][] snippetColors = new Color[MAXROW][MAXCOLUMN], cellArrayColors = new Color[MAXROW][MAXCOLUMN], smellColors = new Color[MAXROW][MAXCOLUMN];
private String lastPath = System.getProperty("user.dir");
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e1) {
e1.printStackTrace();
}
Locale.setDefault(Locale.ENGLISH);
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
MainUI frame = new MainUI();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public MainUI() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(1350, 700);
setLocationRelativeTo(null);
setTitle("AmCheck");
JPanel contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(new BorderLayout(10, 10));
JPanel openFilePanel = createOpenFilePanel();
contentPane.add(openFilePanel, BorderLayout.PAGE_START);
JPanel sheetListPanel = createSheetListPanel();
contentPane.add(sheetListPanel, BorderLayout.LINE_START);
JPanel tablePanel = createTabelPanel();
JPanel tabbedPanel = createTabbedPanel();
JSplitPane splitPane = new JSplitPane();
splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, tablePanel, tabbedPanel);
splitPane.setDividerLocation(800);
splitPane.setResizeWeight(1.0);
splitPane.setBorder(null);
contentPane.add(splitPane, BorderLayout.CENTER);
clearSnippets();
}
private JPanel createOpenFilePanel() {
JPanel openFilePanel = new JPanel();
openFilePanel.setLayout(new FlowLayout(FlowLayout.LEFT, 10, 10));
JButton btn_openFile = new JButton("Open file");
btn_openFile.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JFileChooser fileChooser_openFile = new JFileChooser(lastPath);
FileNameExtensionFilter filter = new FileNameExtensionFilter("Excel File(*.xlsx,.xls)", "xlsx", "xls");
fileChooser_openFile.setFileFilter(filter);
int openFile = fileChooser_openFile.showOpenDialog(null);
if (openFile == JFileChooser.APPROVE_OPTION) {
String filename = fileChooser_openFile.getSelectedFile().toString();
lastPath = new File(filename).getParent();
try {
sheetReaders = ReadWriteFile.readExcelFile(filename);
if(sheetReaders == null){
JOptionPane.showMessageDialog(null, "Open file failed!");
return;
}
for(SheetReader sheetReader : sheetReaders) {
System.err.println(sheetReader.getRowCount() + "," + sheetReader.getColumnCount());
if(sheetReader.getRowCount() > MAXROW || sheetReader.getColumnCount() > MAXCOLUMN) {
JOptionPane.showMessageDialog(null, "File is too large!");
return;
}
}
extractCellArrays.clear();
for(SheetReader sheetReader : sheetReaders) {
extractCellArrays.add(new ExtractCellArray(sheetReader));
}
loadSheetList();
currentSheetIndex = -1;
button_switchValueFormula.setVisible(false);
} catch (Exception e1) {
e1.printStackTrace();
}
textField_fileName.setText(filename);
}
}
});
openFilePanel.add(btn_openFile);
textField_fileName = new JTextField();
textField_fileName.setEnabled(false);
openFilePanel.add(textField_fileName);
textField_fileName.setColumns(80);
button_switchValueFormula = new JButton("Click to view formula");
button_switchValueFormula.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
if(button_switchValueFormula.getText().equals("Click to view formula")) {
button_switchValueFormula.setText("Click to view value");
loadSheetFormula();
}
else {
button_switchValueFormula.setText("Click to view formula");
loadSheetValue();
}
}
});
button_switchValueFormula.setVisible(false);
openFilePanel.add(button_switchValueFormula);
return openFilePanel;
}
private JPanel createSheetListPanel() {
JPanel sheetListPanel = new JPanel();
sheetListPanel.setPreferredSize(new Dimension(160, HEIGHT));
sheetListPanel.setLayout(new BorderLayout(5, 5));
JLabel lblSheetList = new JLabel("Sheet list");
sheetListPanel.add(lblSheetList, BorderLayout.NORTH);
JScrollPane scrollPane_sheetList = new JScrollPane();
sheetListPanel.add(scrollPane_sheetList, BorderLayout.CENTER);
list_sheetList = new JList<>();
list_sheetList.addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent arg0) {
if (list_sheetList.getValueIsAdjusting()) return;
currentSheetIndex = list_sheetList.getSelectedIndex();
loadSheetValue();
clearSnippets();
button_switchValueFormula.setVisible(true);
button_switchValueFormula.setText("Click to view formula");
tabbedPane.setSelectedIndex(0);
}
});
list_sheetList.setSelectionMode(ListSelectionModel.SINGLE_SELECT
没有合适的资源?快使用搜索试试~ 我知道了~
本科毕业设计:电子表格错误检测和修复工具.zip
共70个文件
java:52个
jar:7个
dll:6个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 174 浏览量
2023-10-05
01:23:21
上传
评论
收藏 12.07MB ZIP 举报
温馨提示
本科毕业设计
资源推荐
资源详情
资源评论
收起资源包目录
本科毕业设计:电子表格错误检测和修复工具.zip (70个子文件)
Graduation Design
lib
msvcr110.dll 842KB
dom4j-1.6.1.jar 307KB
poi-ooxml-schemas-3.9-20121203.jar 4.58MB
poi-ooxml-3.9-20121203.jar 915KB
poi-3.9-20121203.jar 1.78MB
com.microsoft.z3.jar 132KB
vcomp110.dll 113KB
xmlbeans-2.3.0.jar 2.54MB
libz3java.dll 80KB
msvcp110.dll 522KB
org.apache.commons.io.jar 82KB
libz3.dll 6.1MB
Microsoft.Z3.dll 177KB
.classpath 847B
.settings
org.eclipse.jdt.core.prefs 670B
org.eclipse.core.resources.prefs 72B
src
file
SheetReader.java 4KB
ReadWriteFile.java 5KB
MyCellStyle.java 3KB
Metadata.java 5KB
core
DetectRepairSmell.java 17KB
ExtractCellArray.java 17KB
AutoDetectSmell.java 7KB
StructDefine.java 7KB
Formula.java 12KB
synthesis
basic
Type.java 304B
ProgramAbstract.java 3KB
Result.java 244B
Lval2Prog.java 3KB
IOType.java 103B
ProgramInstance.java 1KB
Specification.java 752B
Program.java 2KB
IOPair.java 2KB
BasicSynthesis.java 7KB
VarType.java 81B
SpecSynthesis.java 9KB
component
MinusComponent.java 972B
Component.java 1KB
Components.java 2KB
PlusComponent.java 933B
SumComponent.java 1KB
AbsComponent.java 979B
MultComponent.java 935B
ConstantComponent.java 569B
io
IOSynthesis.java 6KB
util
Z3Util.java 996B
study
Recorder.java 8KB
OneRecord.java 2KB
parser
FormulaParser.java 5KB
FuncCalculation.java 3KB
ConvertFormula.java 4KB
ExpParser.java 14KB
Calculate.java 3KB
test
PoiWriter.java 1KB
TestCellWriter.java 1KB
TestEqui.java 1KB
testCompatible.java 4KB
XSSFReader.java 3KB
testConstant.java 968B
ui
FileFilter_FileWithFormula.java 6KB
WaitDialog.java 1KB
AutoDetectUI.java 6KB
ManualUpdate.java 3KB
MyTableModel.java 2KB
FileFilter_ApachePOI.java 6KB
MainUI.java 60KB
FileFilter_TableWithFormula.java 7KB
.project 383B
.gitignore 5B
共 70 条
- 1
资源评论
学术菜鸟小晨
- 粉丝: 1w+
- 资源: 5001
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功