package dell_suanfa; import targets.GroupManagement; import javax.swing.*; import javax.swing.border.EmptyBorder; import javax.swing.table.*; import dell_system.Dell_company; import java.awt.*; import java.sql.SQLException; import java.text.SimpleDateFormat; import java.util.*; import java.util.List; public class GroupManagementPanel extends JPanel { private static final long serialVersionUID = 1L; // ÐòÁл¯°æ±¾ºÅ private JTable groupTable; // С×é±í¸ñ private DefaultTableModel tableModel; // ±í¸ñÄ£ÐÍ private List allGroups; // ËùÓÐС×éÁбí private ResourceBundle messages; // ¹ú¼Ê»¯×ÊÔ´Êø private JTextField searchField; // ËÑË÷Îı¾¿ò @SuppressWarnings("serial") public GroupManagementPanel(ResourceBundle messages) { this.messages = messages; // ³õʼ»¯×ÊÔ´Êø setLayout(new BorderLayout()); // ÉèÖñ߽粼¾Ö setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); // ÉèÖÿձ߿ò // ´´½¨¶¥²¿Ãæ°å JPanel topPanel = new JPanel(new BorderLayout(5, 5)); // ´´½¨¶¥²¿Ãæ°å topPanel.setBorder(BorderFactory.createTitledBorder(getMessage("GROUP_SETTINGS"))); // ÉèÖôø±êÌâµÄ±ß¿ò // ´´½¨ËÑË÷ÊäÈëÃæ°å JPanel searchInputPanel = new JPanel(new FlowLayout(FlowLayout.LEFT, 5, 0)); // ´´½¨ËÑË÷Ãæ°å JLabel searchLabel = new JLabel(getMessage("SEARCH") + ":"); // ËÑË÷±êÇ© searchField = new JTextField(20); // ËÑË÷Îı¾¿ò JButton searchButton = new JButton(getMessage("SEARCH")); // ËÑË÷°´Å¥ JButton resetButton = new JButton(getMessage("RESET")); // ÖØÖð´Å¥ searchInputPanel.add(searchLabel); // Ìí¼ÓËÑË÷±êÇ© searchInputPanel.add(searchField); // Ìí¼ÓËÑË÷¿ò searchInputPanel.add(searchButton); // Ìí¼ÓËÑË÷°´Å¥ searchInputPanel.add(resetButton); // Ìí¼ÓÖØÖð´Å¥ // ´´½¨²Ù×÷°´Å¥Ãæ°å JPanel actionPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT, 5, 0)); // ´´½¨²Ù×÷Ãæ°å JButton addButton = new JButton(getMessage("ADD")); // Ìí¼Ó°´Å¥ JButton editButton = new JButton(getMessage("EDIT")); // ±à¼­°´Å¥ JButton deleteButton = new JButton(getMessage("DELETE")); // ɾ³ý°´Å¥ JButton refreshButton = new JButton(getMessage("REFRESH")); // ˢа´Å¥ actionPanel.add(addButton); // Ìí¼ÓÌí¼Ó°´Å¥ actionPanel.add(editButton); // Ìí¼Ó±à¼­°´Å¥ actionPanel.add(deleteButton); // Ìí¼Óɾ³ý°´Å¥ actionPanel.add(refreshButton); // Ìí¼Óˢа´Å¥ // ½«ËÑË÷ºÍ²Ù×÷Ãæ°åÌí¼Óµ½¶¥²¿Ãæ°å topPanel.add(searchInputPanel, BorderLayout.CENTER); // ËÑË÷Ãæ°å·ÅÔÚÖмä topPanel.add(actionPanel, BorderLayout.EAST); // ²Ù×÷Ãæ°å·ÅÔÚÓÒ±ß // ´´½¨±í¸ñÁÐÃû String[] columnNames = { getMessage("INDEX"), // ÐòºÅ getMessage("GROUP_NUMBER"), // ×é±àºÅ getMessage("BELONG_LAYER"), // ËùÊô²ã getMessage("ALGORITHM"), // Ëã·¨ getMessage("OUTDOOR_GROUP"), // ÊÒÍâ×é getMessage("MUST_PASS_GROUP"), // ±Ø¾­×é getMessage("CROSS_MULTILAYER"), // ×é¿ç¶à²ã getMessage("GROUP_WIDTH"), // ×é¿í¶È getMessage("VALID_AREA"), // ÓÐÐ§ÇøÓò getMessage("COMPANY"), // ¹«Ë¾ getMessage("ADD_TIME"), // ÐÞ¸ÄΪÖÐÎÄ"Ìí¼Óʱ¼ä" }; // ´´½¨±í¸ñÄ£ÐÍ tableModel = new DefaultTableModel(columnNames, 0) { // ³õʼ»¯±í¸ñÄ£ÐÍ private static final long serialVersionUID = 1L; // ÐòÁл¯°æ±¾ºÅ @Override public boolean isCellEditable(int row, int column) { return false; // ËùÓе¥Ôª¸ñ²»¿É±à¼­ } }; // ´´½¨±í¸ñ groupTable = new JTable(tableModel); // ´´½¨±í¸ñ groupTable.setAutoCreateRowSorter(true); // ÆôÓÃÐÐÅÅÐò groupTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); // ÉèÖõ¥Ñ¡Ä£Ê½ // ÉèÖÃÁпí TableColumnModel columnModel = groupTable.getColumnModel(); // »ñÈ¡ÁÐÄ£ÐÍ columnModel.getColumn(0).setPreferredWidth(50); // ÐòºÅ columnModel.getColumn(1).setPreferredWidth(100); // ×é±àºÅ columnModel.getColumn(2).setPreferredWidth(100); // ËùÊô²ã columnModel.getColumn(3).setPreferredWidth(80); // Ëã·¨ columnModel.getColumn(4).setPreferredWidth(80); // ÊÒÍâ×é columnModel.getColumn(5).setPreferredWidth(80); // ±Ø¾­×é columnModel.getColumn(6).setPreferredWidth(100); // ×é¿ç¶à²ã columnModel.getColumn(7).setPreferredWidth(80); // ×é¿í¶È columnModel.getColumn(8).setPreferredWidth(100); // ÓÐÐ§ÇøÓò columnModel.getColumn(9).setPreferredWidth(150); // ËùÊô¹«Ë¾ columnModel.getColumn(10).setPreferredWidth(150); // Ìí¼Óʱ¼ä // ÉèÖñíÍ·Ñùʽ JTableHeader header = groupTable.getTableHeader(); // »ñÈ¡±íÍ· header.setBackground(Color.GRAY); // ±³¾°É« header.setForeground(Color.WHITE); // ǰ¾°É« header.setFont(header.getFont().deriveFont(Font.BOLD)); // ´ÖÌå // ´´½¨±íÍ·äÖȾÆ÷ DefaultTableCellRenderer headerRenderer = new DefaultTableCellRenderer() { { setHorizontalAlignment(SwingConstants.LEFT); // ×ó¶ÔÆë setBackground(Color.GRAY); // ±³¾°É« setForeground(Color.WHITE); // ǰ¾°É« setFont(getFont().deriveFont(Font.BOLD)); // ´ÖÌå } }; // Ó¦ÓñíÍ·äÖȾÆ÷ for (int i = 0; i < groupTable.getColumnCount(); i++) { groupTable.getColumnModel().getColumn(i).setHeaderRenderer(headerRenderer); // ÉèÖÃÿÁеÄäÖȾÆ÷ } JScrollPane scrollPane = new JScrollPane(groupTable); // ´´½¨¹ö¶¯Ãæ°å scrollPane.setPreferredSize(new Dimension(1100, 400)); // ÉèÖÃÊ×Ñ¡´óС // Ìí¼Ó×é¼þµ½Ö÷Ãæ°å add(topPanel, BorderLayout.NORTH); // ¶¥²¿Ãæ°å add(scrollPane, BorderLayout.CENTER); // ±í¸ñÔÚÖмä // ¼ÓÔØÊý¾Ý loadGroupData(); // ¼ÓÔØÐ¡×éÊý¾Ý // Ìí¼Óʼþ¼àÌýÆ÷ addButton.addActionListener(e -> addNewGroup()); // Ìí¼Ó°´Å¥Ê¼þ editButton.addActionListener(e -> editSelectedGroup()); // ±à¼­°´Å¥Ê¼þ deleteButton.addActionListener(e -> deleteSelectedGroups()); // ɾ³ý°´Å¥Ê¼þ refreshButton.addActionListener(e -> loadGroupData()); // ˢа´Å¥Ê¼þ searchButton.addActionListener(e -> searchGroups()); // ËÑË÷°´Å¥Ê¼þ resetButton.addActionListener(e -> resetSearch()); // ÖØÖð´Å¥Ê¼þ } // ¼ÓÔØÐ¡×éÊý¾Ý private void loadGroupData() { try { allGroups = Dell_GroupManagement.getAllGroups(); // »ñÈ¡ËùÓÐС×é updateTable(allGroups); // ¸üбí¸ñ } catch (SQLException ex) { showErrorDialog("DATA_LOAD_ERROR", ex.getMessage()); // ÏÔʾ´íÎó } } // ¸üбí¸ñÊý¾Ý private void updateTable(List groups) { tableModel.setRowCount(0); // Çå¿Õ±í¸ñ int index = 1; // ÐòºÅ´Ó1¿ªÊ¼ for (GroupManagement group : groups) { tableModel.addRow(new Object[]{ // Ìí¼ÓÐÐÊý¾Ý index++, // ÐòºÅ group.getGroupNumber(), // ×é±àºÅ group.getBelongLayer(), // ËùÊô²ã algorithmCodeToText(group.getAlgorithm()), // Ëã·¨ÃèÊö booleanToText(group.getOutdoorGroup()), // ÊÒÍâ×é booleanToText(group.getMustPassGroup()), // ±Ø¾­×é booleanToText(group.getCrossMultilayer()), // ×é¿ç¶à²ã group.getGroupWidth(), // ×é¿í¶È group.getValidArea(), // ÓÐÐ§ÇøÓò group.getCompany(), // ¹«Ë¾ group.getAddTime() // Ìí¼Óʱ¼ä }); } } // Ëã·¨´úÂëתÎı¾ private String algorithmCodeToText(String code) { if (code == null) return ""; // ¿ÕÖµ´¦Àí switch (code) { case "0": return getMessage("ALGORITHM_0"); // Áã½× case "1": return getMessage("ALGORITHM_1"); // Ò»½× case "2": return getMessage("ALGORITHM_2"); // ¶þ½× case "3": return getMessage("ALGORITHM_3"); // Èý½× default: return code; // ĬÈÏ·µ»ØÔ­Öµ } } // ²¼¶ûֵתÎı¾ private String booleanToText(String value) { if (value == null) return ""; // ¿ÕÖµ´¦Àí return "1".equals(value) ? getMessage("YES") : getMessage("NO"); // 1תÊÇ£¬0ת·ñ } // ËÑË÷С×é private void searchGroups() { String keyword = searchField.getText().trim(); // »ñÈ¡¹Ø¼ü´Ê if (keyword.isEmpty()) { updateTable(allGroups); // ¿Õ¹Ø¼ü´ÊÏÔʾȫ²¿ return; } List filtered = new ArrayList<>(); // ¹ýÂ˽á¹ûÁбí for (GroupManagement group : allGroups) { if (group.getGroupNumber().toLowerCase().contains(keyword.toLowerCase())) { // Æ¥Åä×é±àºÅ filtered.add(group); // Ìí¼Óµ½½á¹û } } if (filtered.isEmpty()) { JOptionPane.showMessageDialog(this, getMessage("SEARCH_NO_RESULTS"), // ÏÔʾÎÞ½á¹û getMessage("INFO"), JOptionPane.INFORMATION_MESSAGE); } updateTable(filtered); // ¸üбí¸ñ } // ÖØÖÃËÑË÷ private void resetSearch() { searchField.setText(""); // Çå¿ÕËÑË÷¿ò updateTable(allGroups); // ÏÔʾËùÓÐÊý¾Ý } // Ìí¼ÓÐÂС×é private void addNewGroup() { GroupEditDialog dialog = new GroupEditDialog( // ´´½¨Ìí¼Ó¶Ô»°¿ò (Frame) SwingUtilities.getWindowAncestor(this), messages, true, null ); dialog.setVisible(true); // ÏÔʾ¶Ô»°¿ò if (dialog.isConfirmed()) { // È·ÈϲÙ×÷ GroupManagement newGroup = dialog.getGroup(); // »ñȡС×é¶ÔÏó // ÑéÖ¤ÊäÈë if (validateInput(newGroup)) { // ¼ì²é×é±àºÅÊÇ·ñΨһ if (isGroupNumberExists(newGroup.getGroupNumber())) { showErrorDialog("GROUP_NUMBER_EXISTS", null); // ÏÔʾ´íÎó return; } // ±£´æµ½Êý¾Ý¿â if (saveGroupToDatabase(newGroup)) { // ¸üÐÂÄÚ´æÊý¾Ý allGroups.add(newGroup); // Ìí¼Óµ½Áбí updateTable(allGroups); // ¸üбí¸ñ } } } } // ±à¼­Ñ¡ÖÐС×é private void editSelectedGroup() { int selectedRow = groupTable.getSelectedRow(); // »ñȡѡÖÐÐÐ if (selectedRow == -1) { showWarningDialog("SELECT_GROUP_TO_EDIT"); // ÌáʾѡÔñС×é return; } // »ñȡѡÖеÄС×é int modelRow = groupTable.convertRowIndexToModel(selectedRow); // ת»»ÎªÄ£ÐÍË÷Òý String groupNumber = (String) tableModel.getValueAt(modelRow, 1); // »ñÈ¡×é±àºÅ GroupManagement group = findGroupByNumber(groupNumber); // ²éÕÒС×é if (group == null) { showErrorDialog("GROUP_NOT_FOUND", null); // С×é²»´æÔÚ return; } GroupEditDialog dialog = new GroupEditDialog( // ´´½¨±à¼­¶Ô»°¿ò (Frame) SwingUtilities.getWindowAncestor(this), messages, false, group ); dialog.setVisible(true); // ÏÔʾ¶Ô»°¿ò if (dialog.isConfirmed()) { // È·ÈϲÙ×÷ GroupManagement updatedGroup = dialog.getGroup(); // »ñÈ¡¸üкóµÄС×é // ÑéÖ¤ÊäÈë if (validateInput(updatedGroup)) { // ¸üÐÂС×éÐÅÏ¢ group.setBelongLayer(updatedGroup.getBelongLayer()); // ËùÊô²ã group.setAlgorithm(updatedGroup.getAlgorithm()); // Ëã·¨ group.setOutdoorGroup(updatedGroup.getOutdoorGroup()); // ÊÒÍâ×é group.setMustPassGroup(updatedGroup.getMustPassGroup()); // ±Ø¾­×é group.setCrossMultilayer(updatedGroup.getCrossMultilayer()); // ×é¿ç¶à²ã group.setGroupWidth(updatedGroup.getGroupWidth()); // ×é¿í¶È group.setValidArea(updatedGroup.getValidArea()); // ÓÐÐ§ÇøÓò group.setCompany(updatedGroup.getCompany()); // ¹«Ë¾ // ¸üÐÂÊý¾Ý¿â if (updateGroupInDatabase(group)) { updateTable(allGroups); // ¸üбí¸ñ } } } } // ɾ³ýÑ¡ÖÐС×é private void deleteSelectedGroups() { int[] selectedRows = groupTable.getSelectedRows(); // »ñȡѡÖÐÐÐ if (selectedRows.length == 0) { showWarningDialog("SELECT_GROUP_TO_DELETE"); // ÌáʾѡÔñС×é return; } int confirm = JOptionPane.showConfirmDialog(this, getMessage("CONFIRM_DELETE_GROUPS").replace("{0}", String.valueOf(selectedRows.length)), // È·ÈÏÏûÏ¢ getMessage("CONFIRM"), JOptionPane.YES_NO_OPTION); // È·È϶Ի°¿ò if (confirm == JOptionPane.YES_OPTION) { // Óû§È·ÈÏ Arrays.sort(selectedRows); // ÅÅÐòÐÐË÷Òý for (int i = selectedRows.length - 1; i >= 0; i--) { // µ¹Ðòɾ³ý int viewRow = selectedRows[i]; // ÊÓͼÐÐË÷Òý int modelRow = groupTable.convertRowIndexToModel(viewRow); // ת»»ÎªÄ£ÐÍË÷Òý String groupNumber = (String) tableModel.getValueAt(modelRow, 1); // »ñÈ¡×é±àºÅ GroupManagement group = findGroupByNumber(groupNumber); // ²éÕÒС×é if (group != null) { if (deleteGroupFromDatabase(group)) { // ´ÓÊý¾Ý¿âɾ³ý allGroups.remove(group); // ´ÓÄÚ´æÉ¾³ý } } } updateTable(allGroups); // ¸üбí¸ñ } } // ÑéÖ¤ÊäÈë private boolean validateInput(GroupManagement group) { // ×é±àºÅ²»ÄÜΪ¿Õ if (group.getGroupNumber() == null || group.getGroupNumber().trim().isEmpty()) { showErrorDialog("GROUP_NUMBER_REQUIRED", null); // ÏÔʾ´íÎó return false; } // ×é¿í¶È±ØÐëÊÇÊý×Ö if (group.getGroupWidth() != null && !group.getGroupWidth().isEmpty()) { try { Integer.parseInt(group.getGroupWidth()); // ³¢ÊÔת»» } catch (NumberFormatException e) { showErrorDialog("GROUP_WIDTH_NUMBER", null); // ÏÔʾ´íÎó return false; } } return true; // Ñé֤ͨ¹ý } // ¼ì²é×é±àºÅÊÇ·ñ´æÔÚ private boolean isGroupNumberExists(String groupNumber) { for (GroupManagement group : allGroups) { if (group.getGroupNumber().equals(groupNumber)) { // Æ¥Åä×é±àºÅ return true; // ´æÔÚ } } return false; // ²»´æÔÚ } // ͨ¹ý±àºÅ²éÕÒС×é private GroupManagement findGroupByNumber(String groupNumber) { for (GroupManagement group : allGroups) { if (group.getGroupNumber().equals(groupNumber)) { // Æ¥Åä×é±àºÅ return group; // ·µ»ØÐ¡×é } } return null; // δÕÒµ½ } // ±£´æÐ¡×éµ½Êý¾Ý¿â private boolean saveGroupToDatabase(GroupManagement group) { try { Dell_GroupManagement.insertGroup(group); // ²åÈëС×é showSuccessDialog("SAVE_SUCCESS"); // ÏÔʾ³É¹¦ return true; } catch (SQLException ex) { showErrorDialog("SAVE_FAILED", ex.getMessage()); // ÏÔʾ´íÎó return false; } } // ¸üÐÂÊý¾Ý¿âÖеÄС×é private boolean updateGroupInDatabase(GroupManagement group) { try { Dell_GroupManagement.updateGroup(group); // ¸üÐÂС×é showSuccessDialog("UPDATE_SUCCESS"); // ÏÔʾ³É¹¦ return true; } catch (SQLException ex) { showErrorDialog("UPDATE_FAILED", ex.getMessage()); // ÏÔʾ´íÎó return false; } } // ´ÓÊý¾Ý¿âɾ³ýС×é private boolean deleteGroupFromDatabase(GroupManagement group) { String idStr = group.getId(); // »ñÈ¡ID×Ö·û´® if (idStr == null || idStr.trim().isEmpty()) { showErrorDialog("INVALID_GROUP_ID", null); // ÎÞЧID return false; } try { int id = Integer.parseInt(idStr); // ת»»ÎªÕûÊý Dell_GroupManagement.deleteGroup(id); // ɾ³ýС×é showSuccessDialog("DELETE_SUCCESS"); // ÏÔʾ³É¹¦ return true; } catch (NumberFormatException e) { showErrorDialog("INVALID_GROUP_ID", idStr); // ÎÞЧID return false; } catch (SQLException ex) { showErrorDialog("DELETE_FAILED", ex.getMessage()); // ɾ³ýʧ°Ü return false; } } // ÏÔʾ´íÎó¶Ô»°¿ò private void showErrorDialog(String key, String detail) { String message = getMessage(key); // »ñÈ¡ÏûÏ¢ if (detail != null) { message += ": " + detail; // Ìí¼ÓÏêÇé } JOptionPane.showMessageDialog(this, message, getMessage("ERROR"), JOptionPane.ERROR_MESSAGE); // ÏÔʾ¶Ô»°¿ò } // ÏÔʾ¾¯¸æ¶Ô»°¿ò private void showWarningDialog(String key) { JOptionPane.showMessageDialog(this, getMessage(key), getMessage("WARNING"), JOptionPane.WARNING_MESSAGE); // ÏÔʾ¾¯¸æ } // ÏÔʾ³É¹¦¶Ô»°¿ò private void showSuccessDialog(String key) { JOptionPane.showMessageDialog(this, getMessage(key), getMessage("SUCCESS"), JOptionPane.INFORMATION_MESSAGE); // ÏÔʾ³É¹¦ } // »ñÈ¡±¾µØ»¯ÏûÏ¢ private String getMessage(String key) { try { return messages.getString(key); // ´Ó×ÊÔ´Êø»ñÈ¡ } catch (Exception e) { return "[" + key + "]"; // »ØÍËÏÔʾ } } // С×é±à¼­¶Ô»°¿ò class GroupEditDialog extends JDialog { private static final long serialVersionUID = 1L; // ÐòÁл¯°æ±¾ºÅ private JTextField numberField; // ×é±àºÅÊäÈë¿ò private JComboBox layerComboBox; // ËùÊô²ãÏÂÀ­¿ò private JComboBox algorithmComboBox; // Ëã·¨ÏÂÀ­¿ò // ÊÒÍâ×鵥ѡ°´Å¥×é private ButtonGroup outdoorGroup; private JRadioButton outdoorYes; // ÊÒÍâ×é-ÊÇ private JRadioButton outdoorNo; // ÊÒÍâ×é-·ñ // ±Ø¾­×鵥ѡ°´Å¥×é private ButtonGroup mustPassGroup; private JRadioButton mustPassYes; // ±Ø¾­×é-ÊÇ private JRadioButton mustPassNo; // ±Ø¾­×é-·ñ // ×é¿ç¶à²ãµ¥Ñ¡°´Å¥×é private ButtonGroup crossMultilayerGroup; private JRadioButton crossMultilayerYes; // ×é¿ç¶à²ã-ÊÇ private JRadioButton crossMultilayerNo; // ×é¿ç¶à²ã-·ñ private JTextField widthField; // ×é¿í¶ÈÊäÈë¿ò private JTextField areaField; // ÓÐÐ§ÇøÓòÊäÈë¿ò private JComboBox companyComboBox; // ¹«Ë¾ÏÂÀ­¿ò private boolean confirmed = false; // È·ÈÏ״̬ public GroupEditDialog(Frame parent, ResourceBundle messages, boolean isAddDialog, GroupManagement existingGroup) { super(parent, isAddDialog ? getMessage("ADD") : getMessage("EDIT"), true); // ´´½¨¶Ô»°¿ò setLayout(new BorderLayout()); // ÉèÖñ߽粼¾Ö setSize(500, 400); // ÉèÖôóС setLocationRelativeTo(parent); // ¾ÓÖÐÏÔʾ JPanel formPanel = new JPanel(new GridLayout(9, 2, 5, 5)); // ´´½¨±íµ¥Ãæ°å formPanel.setBorder(new EmptyBorder(10, 10, 10, 10)); // ÉèÖñ߿ò // ×é±àºÅ JLabel numberLabel = new JLabel(getMessage("GROUP_NUMBER") + ": *"); // ±êÇ© numberField = new JTextField(); // Îı¾¿ò if (!isAddDialog && existingGroup != null) { numberField.setEditable(false); // ±à¼­Ä£Ê½Ï²»¿É±à¼­ } formPanel.add(numberLabel); // Ìí¼Ó±êÇ© formPanel.add(numberField); // Ìí¼ÓÎı¾¿ò // ËùÊô²ã JLabel layerLabel = new JLabel(getMessage("BELONG_LAYER") + ": *"); // ±êÇ© layerComboBox = new JComboBox<>(); // ÏÂÀ­¿ò // »ñÈ¡ËùÓвã±àºÅ String[] layerNumbers = Dell_LayerManagement.getAllLayerNumbers(); // »ñÈ¡²ã±àºÅ for (String number : layerNumbers) { layerComboBox.addItem(number); // Ìí¼ÓÑ¡Ïî } formPanel.add(layerLabel); // Ìí¼Ó±êÇ© formPanel.add(layerComboBox); // Ìí¼ÓÏÂÀ­¿ò // Ëã·¨ JLabel algorithmLabel = new JLabel(getMessage("ALGORITHM") + ":"); // ±êÇ© algorithmComboBox = new JComboBox<>(); // ÏÂÀ­¿ò algorithmComboBox.addItem(getMessage("ALGORITHM_0")); // Áã½× algorithmComboBox.addItem(getMessage("ALGORITHM_1")); // Ò»½× algorithmComboBox.addItem(getMessage("ALGORITHM_2")); // ¶þ½× algorithmComboBox.addItem(getMessage("ALGORITHM_3")); // Èý½× formPanel.add(algorithmLabel); // Ìí¼Ó±êÇ© formPanel.add(algorithmComboBox); // Ìí¼ÓÏÂÀ­¿ò // ÊÒÍâ×é - ¸ÄΪµ¥Ñ¡°´Å¥ JLabel outdoorLabel = new JLabel(getMessage("OUTDOOR_GROUP") + ":"); // ±êÇ© JPanel outdoorPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); // µ¥Ñ¡°´Å¥Ãæ°å outdoorGroup = new ButtonGroup(); // °´Å¥×é outdoorYes = new JRadioButton(getMessage("YES")); // ÊÇ outdoorNo = new JRadioButton(getMessage("NO")); // ·ñ outdoorGroup.add(outdoorYes); // Ìí¼Óµ½×é outdoorGroup.add(outdoorNo); // Ìí¼Óµ½×é outdoorPanel.add(outdoorYes); // Ìí¼Óµ½Ãæ°å outdoorPanel.add(outdoorNo); // Ìí¼Óµ½Ãæ°å formPanel.add(outdoorLabel); // Ìí¼Ó±êÇ© formPanel.add(outdoorPanel); // Ìí¼Óµ¥Ñ¡°´Å¥Ãæ°å // ±Ø¾­×é - ¸ÄΪµ¥Ñ¡°´Å¥ JLabel mustPassLabel = new JLabel(getMessage("MUST_PASS_GROUP") + ":"); // ±êÇ© JPanel mustPassPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); // µ¥Ñ¡°´Å¥Ãæ°å mustPassGroup = new ButtonGroup(); // °´Å¥×é mustPassYes = new JRadioButton(getMessage("YES")); // ÊÇ mustPassNo = new JRadioButton(getMessage("NO")); // ·ñ mustPassGroup.add(mustPassYes); // Ìí¼Óµ½×é mustPassGroup.add(mustPassNo); // Ìí¼Óµ½×é mustPassPanel.add(mustPassYes); // Ìí¼Óµ½Ãæ°å mustPassPanel.add(mustPassNo); // Ìí¼Óµ½Ãæ°å formPanel.add(mustPassLabel); // Ìí¼Ó±êÇ© formPanel.add(mustPassPanel); // Ìí¼Óµ¥Ñ¡°´Å¥Ãæ°å // ×é¿ç¶à²ã - ¸ÄΪµ¥Ñ¡°´Å¥ JLabel crossLabel = new JLabel(getMessage("CROSS_MULTILAYER") + ":"); // ±êÇ© JPanel crossPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); // µ¥Ñ¡°´Å¥Ãæ°å crossMultilayerGroup = new ButtonGroup(); // °´Å¥×é crossMultilayerYes = new JRadioButton(getMessage("YES")); // ÊÇ crossMultilayerNo = new JRadioButton(getMessage("NO")); // ·ñ crossMultilayerGroup.add(crossMultilayerYes); // Ìí¼Óµ½×é crossMultilayerGroup.add(crossMultilayerNo); // Ìí¼Óµ½×é crossPanel.add(crossMultilayerYes); // Ìí¼Óµ½Ãæ°å crossPanel.add(crossMultilayerNo); // Ìí¼Óµ½Ãæ°å formPanel.add(crossLabel); // Ìí¼Ó±êÇ© formPanel.add(crossPanel); // Ìí¼Óµ¥Ñ¡°´Å¥Ãæ°å // ×é¿í¶È JLabel widthLabel = new JLabel(getMessage("GROUP_WIDTH") + " (cm):"); // ±êÇ© widthField = new JTextField(); // Îı¾¿ò formPanel.add(widthLabel); // Ìí¼Ó±êÇ© formPanel.add(widthField); // Ìí¼ÓÎı¾¿ò // ÓÐÐ§ÇøÓò JLabel areaLabel = new JLabel(getMessage("VALID_AREA") + ":"); // ±êÇ© areaField = new JTextField(); // Îı¾¿ò formPanel.add(areaLabel); // Ìí¼Ó±êÇ© formPanel.add(areaField); // Ìí¼ÓÎı¾¿ò // ËùÊô¹«Ë¾ JLabel companyLabel = new JLabel(getMessage("COMPANY") + ": *"); // ±êÇ© companyComboBox = new JComboBox<>(); // ÏÂÀ­¿ò // »ñÈ¡ËùÓй«Ë¾Ãû³Æ String[] companyNames = Dell_company.getAllCompanyNames(); // »ñÈ¡¹«Ë¾Ãû for (String name : companyNames) { companyComboBox.addItem(name); // Ìí¼ÓÑ¡Ïî } formPanel.add(companyLabel); // Ìí¼Ó±êÇ© formPanel.add(companyComboBox); // Ìí¼ÓÏÂÀ­¿ò // Èç¹ûÊDZ༭ģʽ£¬Ìî³äÏÖÓÐÊý¾Ý if (!isAddDialog && existingGroup != null) { numberField.setText(existingGroup.getGroupNumber()); // ÉèÖÃ×é±àºÅ layerComboBox.setSelectedItem(existingGroup.getBelongLayer()); // ÉèÖÃËùÊô²ã // ÉèÖÃË㷨ѡÔñ String algorithm = existingGroup.getAlgorithm(); // »ñÈ¡Ëã·¨Öµ if (algorithm != null) { switch (algorithm) { case "0": algorithmComboBox.setSelectedIndex(0); break; // Áã½× case "1": algorithmComboBox.setSelectedIndex(1); break; // Ò»½× case "2": algorithmComboBox.setSelectedIndex(2); break; // ¶þ½× case "3": algorithmComboBox.setSelectedIndex(3); break; // Èý½× default: algorithmComboBox.setSelectedIndex(0); // ĬÈÏ } } // ÉèÖõ¥Ñ¡°´Å¥×´Ì¬ if ("1".equals(existingGroup.getOutdoorGroup())) { outdoorYes.setSelected(true); // ÊÒÍâ×é-ÊÇ } else { outdoorNo.setSelected(true); // ÊÒÍâ×é-·ñ } if ("1".equals(existingGroup.getMustPassGroup())) { mustPassYes.setSelected(true); // ±Ø¾­×é-ÊÇ } else { mustPassNo.setSelected(true); // ±Ø¾­×é-·ñ } if ("1".equals(existingGroup.getCrossMultilayer())) { crossMultilayerYes.setSelected(true); // ×é¿ç¶à²ã-ÊÇ } else { crossMultilayerNo.setSelected(true); // ×é¿ç¶à²ã-·ñ } widthField.setText(existingGroup.getGroupWidth()); // ×é¿í¶È areaField.setText(existingGroup.getValidArea()); // ÓÐÐ§ÇøÓò companyComboBox.setSelectedItem(existingGroup.getCompany()); // ¹«Ë¾ } add(formPanel, BorderLayout.CENTER); // Ìí¼Ó±íµ¥µ½ÖÐÐÄ // °´Å¥Ãæ°å JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); // °´Å¥Ãæ°å JButton okButton = new JButton(getMessage("OK")); // È·¶¨°´Å¥ JButton cancelButton = new JButton(getMessage("CANCEL")); // È¡Ïû°´Å¥ okButton.addActionListener(e -> { confirmed = true; // ÉèÖÃÈ·ÈÏ״̬ dispose(); // ¹Ø±Õ¶Ô»°¿ò }); cancelButton.addActionListener(e -> dispose()); // ¹Ø±Õ¶Ô»°¿ò buttonPanel.add(okButton); // Ìí¼ÓÈ·¶¨°´Å¥ buttonPanel.add(cancelButton); // Ìí¼ÓÈ¡Ïû°´Å¥ add(buttonPanel, BorderLayout.SOUTH); // Ìí¼Ó°´Å¥Ãæ°åµ½µ×²¿ } // »ñȡС×é¶ÔÏó public GroupManagement getGroup() { if (!confirmed) { return null; // δȷÈÏ·µ»Ø¿Õ } GroupManagement group = new GroupManagement(); // ´´½¨Ð¡×é¶ÔÏó group.setGroupNumber(numberField.getText()); // ÉèÖÃ×é±àºÅ group.setBelongLayer((String) layerComboBox.getSelectedItem()); // ÉèÖÃËùÊô²ã // Ë㷨ת»» String algorithmText = (String) algorithmComboBox.getSelectedItem(); // »ñÈ¡Ëã·¨Îı¾ if (getMessage("ALGORITHM_0").equals(algorithmText)) group.setAlgorithm("0"); // Áã½× else if (getMessage("ALGORITHM_1").equals(algorithmText)) group.setAlgorithm("1"); // Ò»½× else if (getMessage("ALGORITHM_2").equals(algorithmText)) group.setAlgorithm("2"); // ¶þ½× else if (getMessage("ALGORITHM_3").equals(algorithmText)) group.setAlgorithm("3"); // Èý½× else group.setAlgorithm("0"); // ĬÈÏÁã½× // ÉèÖõ¥Ñ¡°´Å¥Öµ group.setOutdoorGroup(outdoorYes.isSelected() ? "1" : "0"); // ÊÒÍâ×é group.setMustPassGroup(mustPassYes.isSelected() ? "1" : "0"); // ±Ø¾­×é group.setCrossMultilayer(crossMultilayerYes.isSelected() ? "1" : "0"); // ×é¿ç¶à²ã group.setGroupWidth(widthField.getText()); // ×é¿í¶È group.setValidArea(areaField.getText()); // ÓÐÐ§ÇøÓò group.setCompany((String) companyComboBox.getSelectedItem()); // ¹«Ë¾ // ÉèÖÃÌí¼Óʱ¼ä SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // ʱ¼ä¸ñʽ group.setAddTime(sdf.format(new Date())); // µ±Ç°Ê±¼ä return group; // ·µ»ØÐ¡×é¶ÔÏó } // ÊÇ·ñÈ·ÈÏ public boolean isConfirmed() { return confirmed; // ·µ»ØÈ·ÈÏ״̬ } } }