当前位置: 首页 > 面试题库 >

使Java摆动框架可移动和setUndecorated

曹疏珂
2023-03-14
问题内容

我创建了一个没有标题栏的框架,为此我使用了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);
        }
    }
}

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



 类似资料:
  • 我有一个Jtable,现在我想在这个Jtable上方的一行中有一个JLabel和一个JTextField和一个JButton。 我该怎么做? 直到现在我有了这个: 现在,我在上面添加了以下内容: 但是怎么做呢,这里有一个:“Filter:TEXTFIELD BUTTON”,下面是表格?

  • AKjs前端框架是Andrew.Kim和他的团队一起研发的基于jQuery的一个轻量级前端框架。它是只要懂jQuery的语法很容易上手的框架。该框架里面现在发布了很多移动端常用的功能效果;开发者们使用过程中功能插件也可以自己扩展增加。另一方面,它是相当于一个丰富的组件化UI框架,优点是开发要前后端分离,项目开发过程中后端通过ajax调用数据的机制。 AKjs是一个基于jQuery的一套构建用户界面

  • 本文向大家介绍使用Thinkphp框架开发移动端接口,包括了使用Thinkphp框架开发移动端接口的使用技巧和注意事项,需要的朋友参考一下 方案一:给原生APP提供api接口 使用TP框架时 放在common文件夹下文件名就叫function.php 查询单个果品详细信息 findRelease() 方法的model app端接收到的数据(解码json之后) app端接收到的数据(原生json串)

  • 问题内容: 我正在尝试创建一些用于特定目的的特殊组件,在该组件上我需要绘制HTML字符串,这是示例代码: 不幸的是,drawString方法似乎无法识别HTML格式,它愚蠢地按原样绘制字符串。 有什么办法可以使这项工作吗? 问题答案: 我找到了一种简洁的模拟方法; 这是代码:

  • 嗯,这是一个非常新的提示。我声明要在window builder的帮助下自己编写GUI应用程序的代码,我已经决定停止使用netbeans,因为我在这里读到一些人说这很好。你可能认为我没有调查,但相信我,我做了功课。。。 我尝试了甲骨文所说的方式: > 公共类MyClass实现ActionListener{ someComponent。addActionListener(instanceOfMyCl

  • 移动应用开发框架选型 2016 移动开发模式 移动开发主要分为原生模式(Native App)开发,混合模式(Hybrid App)开发,Web App模式。 1.1 Web APP Web App 指采用Html5语言写出的App,不需要下载安装。类似于现在所说的轻应用。生存在浏览器中的应用,基本上可以说是触屏版的网页应用。 优点: 1) 开发成本低 2) 更新快 3) 更新无需通知用户,不需要