public class KadrPress extends JFrame{
public KadrPress() throws HeadlessException {
super("Кадровая работа");
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.add(lineMenu(),"North");
this.add(osnTabPane(),"Center");
this.setExtendedState(MAXIMIZED_BOTH);
this.setVisible(true);
}
//Создание меню
private JMenuBar lineMenu()
{
//Меню файл
JMenuBar lineMenu=new JMenuBar();
//Меню Файл
JMenu filemenu=new JMenu("Файл");
JMenuItem newFile=new JMenuItem("Создать");
JMenuItem openFile=new JMenuItem("Открыть");
JMenuItem saveFile=new JMenuItem("Сохранить");
filemenu.add(newFile);
filemenu.add(openFile);
filemenu.add(saveFile);
filemenu.addSeparator();
filemenu.add(new ExitAction());
lineMenu.add(filemenu);
return lineMenu;
}
//Создание основной панели с вкладками
private JTabbedPane osnTabPane()
{
JTabbedPane osnTabPane=new JTabbedPane();
osnTabPane.addTab("Общие сведения",osnovSvedeniyaJLabel());
osnTabPane.addTab("Лист 2",new JPanel());
return osnTabPane;
}
//Панель основные сведения
private JPanel osnovSvedeniyaJLabel()
{
JPanel osnovSvedeniyaJLabel=new JPanel();
osnovSvedeniyaJLabel.setLayout(new GridLayout(1,2));
osnovSvedeniyaJLabel.add(levayaJTable());
osnovSvedeniyaJLabel.add(new JLabel("2"));
return osnovSvedeniyaJLabel;
}
//Модель основной таблицы
private JTable levayaJTable ()
{
String[]dannie=new String[]{
"Фамилия","Имя","Отчество","Личный номер","Число, месяц, год рождения",
"Место рождения (согласно паспорта)","Серия и номер паспорта","Дата выдачи","Кем выдан",
"Код подразделения","Серия и номер удост. личности (Военного билета)","Дата выдачи(ВБ)",
"Кем выдано","ИНН"
};
JTable levayaJTable=new JTable(new OsnovTable(dannie));
levayaJTable.setRowHeight(20);
levayaJTable.setOpaque(false);
levayaJTable.getColumnModel().getColumn(1)
.setCellRenderer(new MaskTableCellRenderer());
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);
}
}
//Создание маски таблицы
private class MaskTableCellRenderer extends DefaultTableCellRenderer
{
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
if (table.getModel().getValueAt(row,0).equals("Число, месяц, год рождения")){
//if (dannie[row].equals("Число, месяц, год рождения")){
try {
MaskFormatter dateMask=new MaskFormatter("##.##.####");
dateMask.setPlaceholderCharacter('0');
return new JFormattedTextField(dateMask);
} catch (ParseException e) {
e.printStackTrace();
}
}
return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
}
}
//Команда выхода из приложения
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 KadrPress();
}
});
}
}
请告诉我,上面给出了一个表格模型。输入是一个数组
String[]dannie=new String[]{
"Фамилия","Имя","Отчество","Число, месяц, год рождения",
"Место рождения (согласно паспорта)","Серия и номер паспорта","Дата выдачи","Кем выдан",
"Код подразделения","Серия и номер удост. личности (Военного билета)","Дата выдачи(ВБ)",
"Кем выдано","ИНН"
};
JTable levayaJTable=new JTable(new OsnovTable(dannie));
以下为必填项: 1. 对于“护照系列和号码”这一行,设置类型为 ("#### ######") 的 MaskFormatter 2. 对于“出生年月日”这一行",设置类型的 MaskFormatter ("##.##.####") 告诉我如何最好地实现这个任务。谢谢你。
也许这会有所帮助: