jinlin
2025-03-18 d30e385951ce03335a5023f0775fd144da3c0b88
src/main/java/com/example/client/service/Level3View2Service.java
@@ -3,9 +3,7 @@
import com.example.client.dto.ColumnDto;
import com.example.client.dto.JComboBoxItem;
import com.example.client.model.TableButton;
import com.example.client.utils.CommonTable;
import com.example.client.utils.GBC;
import com.example.client.utils.MultiSelectComboBox;
import com.example.client.utils.*;
import com.example.server.cabin.service.CabinService;
import com.example.server.progressTrack.Dto.TableNodeDto;
import com.example.server.progressTrack.model.DjJdgzNetworkLevel1;
@@ -18,6 +16,7 @@
import javax.swing.*;
import javax.swing.event.TableModelEvent;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.*;
@@ -42,8 +41,8 @@
    private List<ColumnDto> columnDto;
    public JPanel createTable(Integer width, Integer height) {
        JPanel panel = new JPanel();
    public JPanel createTable(Integer width, Integer height,JFrame frame) {
        JPanel panel = new JPanel(new BorderLayout());
        JPanel topJpanel = new JPanel();
        GridBagLayout layout = new GridBagLayout();
@@ -52,7 +51,7 @@
        topJpanel.setBackground(Color.WHITE);
        JPanel centerJpanel = new JPanel();
        centerJpanel.setPreferredSize(new Dimension(width - 20, height - 100));
        centerJpanel.setPreferredSize(new Dimension(width - 20, Compute.ComputeHeight(100,frame)));
        centerJpanel.setBackground(Color.WHITE);
        panel.add(topJpanel, BorderLayout.NORTH);
        panel.add(centerJpanel, BorderLayout.CENTER);
@@ -90,6 +89,17 @@
        JTextField sb = new JTextField(16);
        JButton query = new JButton("查询");
        List<ColorDescription> colorDescriptions = new ArrayList<>();
        colorDescriptions.add(new ColorDescription("#3498DB", "进行中"));
        colorDescriptions.add(new ColorDescription("#F1C40F", "临期"));
        colorDescriptions.add(new ColorDescription("#E74C3C", "逾期"));
        colorDescriptions.add(new ColorDescription("#2ECC71", "正常完成"));
        colorDescriptions.add(new ColorDescription("#006400", "超期完成"));
        // 创建下拉框
        ColorDescriptionComboBox comboBox5 = new ColorDescriptionComboBox(colorDescriptions);
        topJpanel.add(JLabel0, new GBC(0, 0, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        topJpanel.add(comboBox, new GBC(1, 0, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        topJpanel.add(JLabel1, new GBC(2, 0, 1, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
@@ -103,6 +113,7 @@
        topJpanel.add(sb, new GBC(0, 1, 2, 1).setAnchor(GBC.SOUTHEAST).setInsets(5));
        topJpanel.add(query, new GBC(2, 1, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        topJpanel.add(comboBox5, new GBC(3, 1, 1, 1).setAnchor(GBC.SOUTHWEST).setInsets(5));
        list = level3Service.getNodeList(shipList.get(0).getId(), deptList[0].getId(), teamList[0].getId(), cabinList[0].getId(), typeList[0],null);
@@ -121,6 +132,30 @@
        table.setRowHeight(25);
        table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
        MouseMotionListener mouseMotionListener = new MouseMotionListener() {
            @Override
            public void mouseDragged(MouseEvent e) {
                // 不需要处理鼠标拖动事件
            }
            @Override
            public void mouseMoved(MouseEvent e) {
                Point point = e.getPoint();
                int row = table.rowAtPoint(point);
                int column = table.columnAtPoint(point);
                if (row <= list.size() && column > 1) {
                    String hexColor = (String) table.getValueAt(row, column);
                    String tooltip = getTooltipText(hexColor);
                    table.setToolTipText(tooltip);
                } else {
                    table.setToolTipText(null);
                }
            }
        };
        table.addMouseMotionListener(mouseMotionListener);
        comboBox.addItemListener(new ItemListener() {
            public void itemStateChanged(final ItemEvent event) {
@@ -145,12 +180,11 @@
            public void itemStateChanged(ItemEvent e) {
                if (e.getStateChange() == ItemEvent.SELECTED) {
                    JComboBoxItem selectedItem = (JComboBoxItem) comboBox1.getSelectedItem();
                    if (selectedItem.getId() != null) {
                        long selectedId = selectedItem.getId();
                    if (selectedItem != null) {
                        Long selectedId = selectedItem.getId();
                        JComboBoxItem[] teamList = sysTeamGroupClassService.getTeamList(selectedId);
                        comboBox2.setModel(new DefaultComboBoxModel<>(teamList));
                        comboBox2.setSelectedIndex(0);
                        String content = comboBox.getSelectedItem().toString();
                        JComboBoxItem dept = (JComboBoxItem) comboBox1.getSelectedItem();
@@ -249,15 +283,43 @@
        JScrollPane scrollPane = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
        scrollPane.setViewportView(table);
        scrollPane.getViewport().setBackground(Color.WHITE);
        scrollPane.setPreferredSize(new Dimension(width - 20, height - 120));
        scrollPane.setPreferredSize(new Dimension(width - 20, Compute.ComputeHeightWithScroll(100,frame)));
        centerJpanel.add(scrollPane);
        frame.addComponentListener(new ComponentAdapter() {
            @Override
            public void componentResized(ComponentEvent e) {
                centerJpanel.setPreferredSize(new Dimension(width - 20, Compute.ComputeHeight(100,frame)));
                scrollPane.setPreferredSize(new Dimension(width - 20,Compute.ComputeHeightWithScroll(100,frame)));
                centerJpanel.revalidate();
                centerJpanel.repaint();
                scrollPane.revalidate();
                scrollPane.repaint();
            }
        });
        return panel;
    }
    private static String getTooltipText(String hexColor) {
        switch (hexColor) {
            case "#3498DB":
                return "进行中";
            case "#F1C40F":
                return "临期";
            case "#E74C3C":
                return "逾期";
            case "#2ECC71":
                return "正常完成";
            case "#006400":
                return "超期完成";
            default:
                return "未开始";
        }
    }
}