- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我刚刚编写了一个程序,它在全屏模式下显示JFrame
没有标题栏。然而,这使得 JFrame
难以关闭。 (用户必须按 Alt
+ F4
才能执行此操作)。我想要的是,当用户将鼠标移动到非常靠近 JFrame
顶部(例如距离顶部 1 个像素)时,标题栏就会出现。这与 Windows 10 中的全屏窗口具有相同的功能。以下是我尝试过的功能:
import java.awt.Event;
import java.awt.Toolkit;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import javax.swing.JFrame;
public class fullscreen_test extends JFrame implements MouseMotionListener{
public fullscreen_test() {
this.setUndecorated(true); //remove title bar
this.setAlwaysOnTop(true); //always on top!!!
this.setResizable(false); //unresizable
this.setVisible(true);
int xsize =(int)Toolkit.getDefaultToolkit().getScreenSize().getWidth();
int ysize = (int)Toolkit.getDefaultToolkit().getScreenSize().getHeight();
this.setSize(xsize, ysize); //set the size equal to the screen size
this.addMouseMotionListener(this); //mousemotionlistener to show title bar
}
public static void main(String[] args) {
fullscreen_test ft = new fullscreen_test();
}
@Override
public void mouseMoved(MouseEvent e) {
Object src = e.getSource();
if (e.getY() <= 1){
if(src instanceof JFrame){
((JFrame) src).setUndecorated(false); //This is where eclipse says the error is.
}
}
}
public void mouseDragged(MouseEvent arg0) {} // required by the MouseMotionListener interface
}
但是这段代码会产生以下错误:
Exception in thread "AWT-EventQueue-0" java.awt.IllegalComponentStateException: The frame is displayable.
at java.awt.Frame.setUndecorated(Unknown Source)
我完全不知道这个错误是什么。任何帮助将不胜感激。感谢您的关注。
最佳答案
我认为您必须在更 retrofit 饰状态之前处理 JFrame。
尝试如下:
@Override
public void mouseMoved(MouseEvent e) {
Object src = e.getSource();
if (e.getY() <= 1){
if(src instanceof JFrame){
JFrame frame = (JFrame) src;
frame.dispose();
frame.setUndecorated(false);
frame.setVisible(true);
}
}
}
在您的mouseMoved
方法中。
什么是JFrame Documentation for dispose()说的是,一个电话
释放此窗口、其子组件及其所有子组件使用的所有 native 屏幕资源。
然后可以操纵资源,然后
通过随后调用 pack 或 show 重建 native 资源,可以使窗口及其子组件再次显示。 [...]
在这个/你的情况下setVisible(true)
,什么做同样的事情
[...] 重新创建的 Window 及其子组件的状态将与这些对象在 Window 被处置时的状态相同 [...]
处理您的 setUndecorated(true)
调用
[...](不考虑这些操作之间的其他修改)。
希望它对您有用。否则,请毫不犹豫地评论这篇文章!
关于java - 当 JFrame 全屏时显示标题栏不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44260825/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!