好看的网站布局

. 提供多级侧边栏

40_CH_1-662x402

41_CH_3-662x402

相比于传统的顶部多级导航栏,侧边栏会让页面显得更加整齐易用。Carolina Herrera 的侧边栏设计则更有意思,它采用的是多级侧边栏,功能上不弱于前者,提升了浏览体验,而视觉上的效果则更加突出。

22.无需跳转的购物车管理

42_Everlane_1-662x402

43_Everlane_2-662x402

作为电商网站,编辑管理购物车是重要的功能之一。为了提升整体体验,Everlane 的设计师允许用户将鼠标悬停在某个产品上,选择大小类别,添加到购物车,整个过程无需离开相关页面。无需跳转搞定一切,用户可以更便捷地完成购物环节。

23. 使用简明的布局

44_Helmut_Lang_1-662x402

45_Helmut_Lang_2-662x402

Helmut Lang 是以为奥地利时装设计师,他在维也纳创办了自己的设计工作室。在构建他的在线购物网站之时,Lang将他简单到无与伦比的设计风格也引入到网页设计中来,他将他认为最重要也是最关键的元素保留下来,而其核心,就是他的收藏。

24. 用轮播图做页头

46_Groovemade_1-662x402

47_Groovemade_2-662x402

Groovemade 是著名的数码设备配件制造商,他们为Apple 的数码产品提供优雅的木质外设。而他们的网站也采用了同样的优雅设计,精心拍摄的动态轮播图会让用户快速了解他们的产品,整栏式的高清大图能给用户极致的视觉冲击力,无需更多文案,一图胜千言。

你提到“布局好看”,这是一个很好的反馈!我们可以对 GUI 界面进行美化,使用更现代、更清晰的布局方式,例如: - 使用 `GridBagLayout` 或 `GroupLayout` 实现更灵活的布局; - 增加组件间距、边距; - 使用 `JPanel` 分层管理布局; - 设置字体、颜色、按钮样式等。 --- ## ✅ 改进后的 Java 注册界面(布局优化 + 美化) ```java import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.*; import java.net.*; public class RegistrationWithPortNoEmailImproved extends JFrame { private JTextField usernameField; private JPasswordField passwordField; private JLabel messageLabel; private ServerSocket serverSocket; private boolean serverRunning = true; public RegistrationWithPortNoEmailImproved() { setTitle("注册系统(无邮箱验证)"); setSize(450, 300); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationRelativeTo(null); setLayout(new BorderLayout(10, 10)); // 主面板 JPanel mainPanel = new JPanel(); mainPanel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20)); mainPanel.setBackground(Color.WHITE); mainPanel.setLayout(new GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints(); gbc.insets = new Insets(10, 10, 10, 10); gbc.fill = GridBagConstraints.HORIZONTAL; // 用户名 gbc.gridx = 0; gbc.gridy = 0; mainPanel.add(new JLabel("用户名:"), gbc); gbc.gridx = 1; usernameField = new JTextField(20); mainPanel.add(usernameField, gbc); // 密码 gbc.gridx = 0; gbc.gridy = 1; mainPanel.add(new JLabel("密码:"), gbc); gbc.gridx = 1; passwordField = new JPasswordField(20); mainPanel.add(passwordField, gbc); // 注册按钮 gbc.gridx = 0; gbc.gridy = 2; gbc.gridwidth = 2; JButton registerButton = new JButton("注册"); registerButton.setBackground(new Color(0, 150, 255)); registerButton.setForeground(Color.WHITE); registerButton.setFont(new Font("Arial", Font.BOLD, 14)); mainPanel.add(registerButton, gbc); // 提示信息 messageLabel = new JLabel("", SwingConstants.CENTER); messageLabel.setFont(new Font("Arial", Font.PLAIN, 14)); gbc.gridx = 0; gbc.gridy = 3; gbc.gridwidth = 2; mainPanel.add(messageLabel, gbc); add(mainPanel, BorderLayout.CENTER); // 注册按钮监听 registerButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { String username = usernameField.getText(); String password = new String(passwordField.getPassword()); if (username.isEmpty() || password.isEmpty()) { messageLabel.setText("用户名和密码都必须填写!"); messageLabel.setForeground(Color.RED); } else { String message = "注册成功!用户名:" + username; messageLabel.setText(message); messageLabel.setForeground(new Color(0, 150, 0)); // 发送数据到监听端口 sendDataToPort(message); } } }); // 启动监听端口 startServer(); } // 启动端口监听线程 private void startServer() { new Thread(() -> { try { serverSocket = new ServerSocket(8888); System.out.println("服务器已启动,监听端口:8888"); while (serverRunning) { Socket socket = serverSocket.accept(); new ClientHandler(socket).start(); } } catch (IOException e) { e.printStackTrace(); } }).start(); } // 处理客户端连接 class ClientHandler extends Thread { private Socket socket; public ClientHandler(Socket socket) { this.socket = socket; } public void run() { try { BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); String line; while ((line = in.readLine()) != null) { System.out.println("收到客户端消息:" + line); } in.close(); socket.close(); } catch (IOException e) { e.printStackTrace(); } } } // 发送注册信息到端口 private void sendDataToPort(String data) { new Thread(() -> { try (Socket socket = new Socket("localhost", 8888)) { PrintWriter out = new PrintWriter(socket.getOutputStream(), true); out.println(data); System.out.println("已发送注册信息到端口 8888"); } catch (IOException e) { messageLabel.setText("无法连接到监听端口,请确认服务是否启动!"); messageLabel.setForeground(Color.RED); } }).start(); } public static void main(String[] args) { SwingUtilities.invokeLater(() -> { new RegistrationWithPortNoEmailImproved().setVisible(true); }); } } ``` --- ## ✅ 布局优化说明: | 优化点 | 说明 | |--------|------| | 使用 `GridBagLayout` | 灵活控制组件对齐和间距 | | 添加 `Insets` 边距 | 组件之间有 10px 的间距 | | 设置背景颜色 | 使用白色背景提升可读性 | | 按钮样式 | 自定义按钮颜色和字体 | | 居中显示 | 使用 `SwingUtilities.invokeLater()` 居中窗口 | | 字体统一 | 使用 Arial 字体,提升视觉一致性 | --- ## ✅ 程序运行效果预览(文字描述): - 窗口大小:450x300 - 标题:注册系统(无邮箱验证) - 两个输入框(用户名、密码) - 一个注册按钮(蓝色背景,白色字体) - 一个提示信息区域(居中显示) - 所有组件垂直排列,间距均匀,视觉清晰 --- ## ❗注意事项: - 如果你在 Linux/macOS 上运行,请确保 GUI 库完整。 - 可以进一步使用 `JFrame.setDefaultLookAndFeelDecorated(true);` 设置主题风格。 --- ##
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值