张世豪
2 天以前 6b1447fb1794e08f8e5f580b83ae5eabe4e617d8
src/set/Sets.java
@@ -97,15 +97,22 @@
        // 创建设置项面板(圆角白色面板)
        JPanel settingsPanel = createSettingsPanel();
        
        // 创建滚动面板
        JScrollPane scrollPane = new JScrollPane(settingsPanel);
        scrollPane.setBorder(null); // 去除边框
        scrollPane.getViewport().setBackground(BACKGROUND_COLOR); // 设置视口背景色与主背景一致
        scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); // 禁止水平滚动
        scrollPane.getVerticalScrollBar().setUnitIncrement(16); // 增加滚动速度
        // 添加组件到主面板
        mainPanel.add(settingsPanel, BorderLayout.CENTER);
        mainPanel.add(scrollPane, BorderLayout.CENTER);
        
        add(mainPanel, BorderLayout.CENTER);
    }
    
    private JPanel createSettingsPanel() {
        // 创建圆角白色面板容器
        JPanel container = new JPanel() {
        JPanel container = new ScrollablePanel() {
            @Override
            protected void paintComponent(Graphics g) {
                Graphics2D g2d = (Graphics2D) g.create();
@@ -1756,6 +1763,38 @@
        timer.start();
    }
    
    /**
     * 可滚动的面板,强制宽度适应视口
     */
    private class ScrollablePanel extends JPanel implements Scrollable {
        private static final long serialVersionUID = 1L;
        @Override
        public Dimension getPreferredScrollableViewportSize() {
            return getPreferredSize();
        }
        @Override
        public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction) {
            return 16;
        }
        @Override
        public int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction) {
            return 16;
        }
        @Override
        public boolean getScrollableTracksViewportWidth() {
            return true; // 强制宽度适应视口,防止水平滚动
        }
        @Override
        public boolean getScrollableTracksViewportHeight() {
            return false;
        }
    }
    @Override
    public void setVisible(boolean visible) {
        if (visible) {