全部评论 1

  • import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    
    public class My_Launcher {
        private static Point mouseOffset;
    
        public static void main(String[] args) {
            JFrame frame = new JFrame("无边框窗口");
            frame.setUndecorated(true);
            frame.setSize(400, 300);
            frame.setLocationRelativeTo(null);
            
            // 圆角面板
            JPanel roundedPanel = new JPanel(new BorderLayout()) {
                @Override
                protected void paintComponent(Graphics g) {
                    Graphics2D g2 = (Graphics2D) g.create();
                    g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
                    g2.setColor(getBackground());
                    g2.fillRoundRect(0, 0, getWidth(), getHeight(), 20, 20);
                    g2.dispose();
                }
            };
            roundedPanel.setBackground(new Color(240, 240, 240));
            roundedPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
    
            // 标题栏面板
            JPanel titlePanel = new JPanel(new BorderLayout());
            titlePanel.setBackground(new Color(60, 60, 60));
            titlePanel.setPreferredSize(new Dimension(frame.getWidth(), 40));
    
            // 标题标签
            JLabel titleLabel = new JLabel(" 无边框窗口");
            titleLabel.setForeground(Color.WHITE);
            titleLabel.setFont(new Font("微软雅黑", Font.BOLD, 14));
            titlePanel.add(titleLabel, BorderLayout.WEST);
    
    

    1周前 来自 广东

    0
    • userId_undefined

      Kali

      回复Kali
              // 控制按钮面板
              JPanel controlPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT, 0, 0));
              controlPanel.setOpaque(false);
      
              // 最小化按钮
              JButton minButton = createControlButton("-");
              minButton.addActionListener(e -> frame.setState(Frame.ICONIFIED));
      
              // 关闭按钮
              JButton closeButton = createControlButton("×");
              closeButton.addActionListener(e -> System.exit(0));
      
              controlPanel.add(minButton);
              controlPanel.add(closeButton);
              titlePanel.add(controlPanel, BorderLayout.EAST);
      
              // 拖动功能实现
              titlePanel.addMouseListener(new MouseAdapter() {
                  public void mousePressed(MouseEvent e) {
                      mouseOffset = e.getPoint();
                  }
              });
              
              titlePanel.addMouseMotionListener(new MouseAdapter() {
                  public void mouseDragged(MouseEvent e) {
                      Point currCoords = e.getLocationOnScreen();
                      frame.setLocation(currCoords.x - mouseOffset.x, currCoords.y - mouseOffset.y);
                  }
              });
      
              // 组装窗口
              roundedPanel.add(titlePanel, BorderLayout.NORTH);
              frame.setContentPane(roundedPanel);
              frame.setVisible(true);
          }
      
          private static JButton createControlButton(String text) {
              JButton button = new JButton(text);
              button.setFocusPainted(false);
      
      

      1周前 来自 广东

      0
    • userId_undefined

      Kali

      回复Kali
              button.setContentAreaFilled(false);
              button.setForeground(Color.WHITE);
              button.setFont(new Font("微软雅黑", Font.PLAIN, 16));
              button.setBorder(BorderFactory.createEmptyBorder(5, 15, 5, 15));
              
              button.addMouseListener(new MouseAdapter() {
                  public void mouseEntered(MouseEvent e) {
                      button.setForeground(button.getText().equals("×") ? Color.RED : Color.LIGHT_GRAY);
                  }
                  public void mouseExited(MouseEvent e) {
                      button.setForeground(Color.WHITE);
                  }
              });
              return button;
          }
      }
      
      
      

      1周前 来自 广东

      0
    • userId_undefined

      Kali

      回复Kali

      由上到下组合

      1周前 来自 广东

      0

热门讨论