java - 使java Swing 框架可移动并设置未装饰

标签 java swing

我创建了一个没有标题栏的框架,为此我使用了 setUndecorated(true);方法,但之后框架由于某种原因变得不可移动。

我怎样才能让我的框架移动并仍然隐藏我的标题栏?

最佳答案

以下代码将创建一个没有标题栏的 JFrame,您仍然可以移动标题栏:

import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class FrameDragListenerExample {

    public static void main(String[] args) {
        Runnable runnable = new Runnable() {
            public void run() {
                final JFrame frame = new JFrame("Hello");

                frame.setUndecorated(true);
                frame.setBounds(0, 0, 400, 400);

                JPanel contentPane = new JPanel(new BorderLayout());
                JLabel label = new JLabel("Click anywhere in the Jframe and drag");
                label.setFont(label.getFont().deriveFont(16f));
                label.setBorder(BorderFactory.createEmptyBorder(100, 100, 100, 100));
                contentPane.add(label);
                frame.setContentPane(contentPane);

                FrameDragListener frameDragListener = new FrameDragListener(frame);
                frame.addMouseListener(frameDragListener);
                frame.addMouseMotionListener(frameDragListener);

                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        };
        SwingUtilities.invokeLater(runnable);
    }

    public static class FrameDragListener extends MouseAdapter {

        private final JFrame frame;
        private Point mouseDownCompCoords = null;

        public FrameDragListener(JFrame frame) {
            this.frame = frame;
        }

        public void mouseReleased(MouseEvent e) {
            mouseDownCompCoords = null;
        }

        public void mousePressed(MouseEvent e) {
            mouseDownCompCoords = e.getPoint();
        }

        public void mouseDragged(MouseEvent e) {
            Point currCoords = e.getLocationOnScreen();
            frame.setLocation(currCoords.x - mouseDownCompCoords.x, currCoords.y - mouseDownCompCoords.y);
        }
    }
}

您仍然可以通过拖动框架的主体来拖动它。

关于java - 使java Swing 框架可移动并设置未装饰,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16046824/

相关文章:

java - 为什么我的两个客户端无法相互通信? (java服务器套接字)

java - 如何使用 Java 发送 HTTP GET 并使用用 C++ 编写的 CGI 应用程序打印 QUERY_STRING 环境变量?

Java Swing : JSplitPane split two component equals size at start up

java - CellRenderer 项目重绘

java - 在java swing中重新绘制组件

java - 如何将 int 转换为字符串 (Android)

java - Android 应用程序在从菜单项调用方法时崩溃

java - Java 应用程序中的可自定义快捷方式

java - 带有包装 HTML 文本的 JLabel 作为 JScrollPane 客户端

java - hibernate 批量插入。它会使用一个插件而不是多个插件吗?