美好的一天,告诉我,在我创建的表格中,在编辑单元格时,之前的值下降了,怎么办,当你用鼠标输入它时,之前的值在 Excel 中会保持什么样的状态?
public class PP extends JFrame {
public PP() throws HeadlessException {
super("Кадровая работа");
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setExtendedState(MAXIMIZED_BOTH);
add(levayaJTable());
this.setVisible(true);
}
//Модель основной таблицы
private JTable levayaJTable() {
String[] dannie = new String[]{
"1. Фамилия", "2. Имя", "3. Отчество", "4. Личный номер", "5. Число, месяц, год рождения",
"6. Место рождения (согласно паспорта)", "7. Серия и номер паспорта", "8. Дата выдачи", "9. Кем выдан",
};
JTable levayaJTable = new JTable(new OsnovTable(dannie))
{
@Override
public void changeSelection(int rowIndex, int columnIndex, boolean toggle, boolean extend) {
super.changeSelection(rowIndex, 1, toggle, extend);
}
};
levayaJTable.setRowHeight(20);
levayaJTable.setOpaque(false);
levayaJTable.getColumnModel().getColumn(1)
.setCellEditor(new MaskEditor());
return levayaJTable;
}
//Модель основной таблицы
private class OsnovTable extends AbstractTableModel {
String[] dannie;
HashMap<String, String> data = new HashMap<>();
public OsnovTable(String[] dannie) {
this.dannie = dannie;
}
@Override
public int getRowCount() {
return dannie.length;
}
@Override
public int getColumnCount() {
return 2;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
if (columnIndex == 0) return dannie[rowIndex];
if (columnIndex == 1) return data.get(dannie[rowIndex]);
return null;
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
if (columnIndex == 0) return false;
if (columnIndex == 1) return true;
return false;
}
@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
data.put(dannie[rowIndex], (String) aValue);
fireTableCellUpdated(rowIndex, columnIndex);
}
}
//Создание редактора таблицы
private class MaskEditor extends AbstractCellEditor
implements TableCellEditor {
private JFormattedTextField editor;
public MaskEditor() {
}
@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
MaskFormatter dateMask = null;
try {
if (table.getModel().getValueAt(row, 0).equals("5. Число, месяц, год рождения")
|| table.getModel().getValueAt(row, 0).equals("8. Дата выдачи")
|| table.getModel().getValueAt(row, 0).equals("12. Дата регистрации"))
{
dateMask = new MaskFormatter("##.##.####");
} else if (table.getModel().getValueAt(row, 0).equals("7. Серия и номер паспорта")) {
dateMask = new MaskFormatter("#### ######");
}else if (table.getModel().getValueAt(row, 0).equals("Код подразделения"))
{dateMask = new MaskFormatter("###-###");}
} catch (ParseException e) {
e.printStackTrace();
}
editor = new JFormattedTextField(dateMask);
editor.setBorder(new LineBorder(null, 0));
editor.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
stopCellEditing();
table.changeSelection(row+1,column,false,false);
}
});
return editor;
}
@Override
public Object getCellEditorValue() {
return editor.getText();
}
}
//Команда выхода из приложения
class ExitAction extends AbstractAction {
public ExitAction() {
putValue(NAME, "Выход");
}
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new PP();
}
});
}
}
当你重新创造时,你会失去价值
JFormattedTextField