From a541fbdc8812337de120aad3792a2033a5dd7afe Mon Sep 17 00:00:00 2001
From: 张世豪 <979909237@qq.com>
Date: 星期四, 25 十二月 2025 12:23:01 +0800
Subject: [PATCH] 优化了首页
---
src/set/Sets.java | 103 +++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 99 insertions(+), 4 deletions(-)
diff --git a/src/set/Sets.java b/src/set/Sets.java
index ab09098..2379b27 100644
--- a/src/set/Sets.java
+++ b/src/set/Sets.java
@@ -17,6 +17,8 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
+import denglu.Denglu;
+import denglu.UserChuShiHua;
/**
* 璁剧疆瀵硅瘽妗� - 鍙傝�僑houye.java鏍峰紡
@@ -97,15 +99,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();
@@ -189,6 +198,9 @@
// APP鐗堟湰
JPanel appVersionPanel = createAppVersionPanel();
+ // 閫�鍑虹櫥褰�
+ JPanel logoutPanel = createLogoutPanel();
+
// 娣诲姞璁剧疆椤癸紝浣跨敤鍒嗗壊绾垮垎闅�
addSettingItem(panel, mowerIdPanel, true);
addSettingItem(panel, mowerSizePanel, true);
@@ -203,7 +215,8 @@
addSettingItem(panel, measurementModePanel, true);
addSettingItem(panel, manualBoundaryDrawingPanel, true);
addSettingItem(panel, feedbackPanel, true);
- addSettingItem(panel, appVersionPanel, false); // 鏈�鍚庝竴椤逛笉鍔犲垎鍓茬嚎
+ addSettingItem(panel, appVersionPanel, true);
+ addSettingItem(panel, logoutPanel, false); // 鏈�鍚庝竴椤逛笉鍔犲垎鍓茬嚎
container.add(panel, BorderLayout.CENTER);
return container;
@@ -1756,6 +1769,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) {
@@ -1764,5 +1809,55 @@
}
super.setVisible(visible);
}
-
+
+ private JPanel createLogoutPanel() {
+ JPanel panel = new JPanel(new GridBagLayout());
+ panel.setOpaque(false);
+ panel.setAlignmentX(Component.LEFT_ALIGNMENT);
+ panel.setMaximumSize(new Dimension(Integer.MAX_VALUE, ROW_HEIGHT + 20));
+ panel.setBorder(BorderFactory.createEmptyBorder(ITEM_PADDING, ITEM_PADDING, ITEM_PADDING, ITEM_PADDING));
+
+ JButton logoutBtn = new JButton("閫�鍑虹櫥褰�");
+ logoutBtn.setFont(new Font("寰蒋闆呴粦", Font.BOLD, 14));
+ logoutBtn.setForeground(Color.WHITE);
+ logoutBtn.setBackground(new Color(220, 53, 69)); // Red color
+ logoutBtn.setFocusPainted(false);
+ logoutBtn.setBorderPainted(false);
+ logoutBtn.setCursor(new Cursor(Cursor.HAND_CURSOR));
+ logoutBtn.setPreferredSize(new Dimension(200, 40));
+
+ logoutBtn.addActionListener(e -> {
+ int confirm = JOptionPane.showConfirmDialog(this,
+ "纭畾瑕侀��鍑虹櫥褰曞悧锛�", "閫�鍑虹‘璁�",
+ JOptionPane.YES_NO_OPTION);
+
+ if (confirm == JOptionPane.YES_OPTION) {
+ // Reset Remember Me
+ UserChuShiHua.updateProperty("rememberPassword", "0");
+
+ // Close current dialog
+ dispose();
+
+ // Close all windows and open Login
+ for (Window window : Window.getWindows()) {
+ if (window.isDisplayable()) {
+ window.dispose();
+ }
+ }
+
+ SwingUtilities.invokeLater(() -> {
+ new Denglu().setVisible(true);
+ });
+ }
+ });
+
+ GridBagConstraints gbc = new GridBagConstraints();
+ gbc.gridx = 0;
+ gbc.gridy = 0;
+ gbc.weightx = 1.0;
+ gbc.anchor = GridBagConstraints.CENTER;
+ panel.add(logoutBtn, gbc);
+
+ return panel;
+ }
}
\ No newline at end of file
--
Gitblit v1.10.0