好看的网站布局5

 鲜明的色彩对比

77_Capellos_1-662x402

78_Capellos_2-662x402

Capellos 所提供的产品是各种面点,从包装到网页设计都采用的是强对比的黑白色,搭配点缀的红色,整体散发出一种协调而鲜明的视觉效果,协调而对比强烈。

40. 以字体排版为中心的设计

79_ECC_1-662x402

80_ECC_2-662x402

高清大图往往会让用户忘记,以字体排版为重心的设计有多么美妙。精致的线条,别具一格的排版,精致的图片和独特的栅格,整个网站看起来像是一个高端的画廊。

41. 基于模板的设计

81_Deliveroo_1-662x402

82_Deliveroo_2-662x402

对于庞杂而繁复的产品类型,基于模板的设计会让整个网站看起来整饬而清爽,这样的设计也会极大的提升生产力。

42. 讲故事

83_Maple_1-662x402

革命性的纽约餐厅Maple 在网站上用视频来讲述属于他们自己的故事,那些关于餐厅的细节会让用户更了解他们,了解美食的诞生过程。

43. 用视觉形象代表产品

85_VSCO_1-662x402

84_VSCO_2-662x398

Visual Supply Co 将他们的产品用不同的色块来代表,虽然这种手法并不一定适用于所有的电商网站,但是某些特殊类型的产品而言,这种方式也挺不错。

44. 让产品便于定制

86_Le_Coq_Sportif_1-662x402

87_Le_Coq_Sportif_3-662x402

对于服装这类具备可定制属性的产品而言,让用户易于定制是非常有必要的。服装品牌 Le Coq Sportif 就是这么做的,让每个定制属性都非常容易选择和操作。

你提到“布局好看”,这是一个很好的反馈!我们可以对 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);` 设置主题风格。 --- ##
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值