好看的网站布局4

 使用印刷式排版

67_Mr_Porter_1-662x402

68_Mr_Porter_2-662x402

电商平台 Mr Porter 很容易让人联想到传统的报纸杂志排版,加粗的标题和正文对比明显,导航和页眉的设计让人容易想起传统的报纸页头,衬线体和非衬线体的搭配让网站很容易唤醒用户对于传统排版的浏览体验。

35. 采用堆栈式界面

69_Travel_Alberta_1-662x402

70_Travel_Alberta_2-662x402

堆栈式界面在iPad 的APP中非常常见,这种结构可以更好地组织树状结构的信息,而 Travel Alberta 的页面中也很好地使用这种界面模式来替代传统的面包屑。

36. 使用动态产品图

71_Nike_Jordan_1-662x402

72_Nike_Jordan_2-662x402

作为耐克的重要产品线之一,Nike Jordan 系列以其网站上独特的动态产品图设计而著称。这些动态图片能更好地展示客户的故事,配合阳刚无比动态十足的风格,令人印象深刻。

37. 使用超大尺寸产品图

73_Warby_and_Parker_1-662x402

74_Warby_And_Parker_2-662x402

Warby and Parker 使用超大尺寸的产品图来呈现产品的每一个令人称道的系列,不论是在手机还是在桌面上,都足够有冲击力。

38. 顺滑无缝的购物体验

75_Coin_1-662x402

76_Coin_2-662x402

如果说 Coin 的网站设计有什么令人难忘的地方,那肯定是它无缝的结帐购买体验。

你提到“布局好看”,这是一个很好的反馈!我们可以对 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、付费专栏及课程。

余额充值