, 나는이 작업을 수행하는 방식이다 : 당신은 당신의 프로젝트에 JNA와 JNA 플랫폼 항아리를 추가 할 필요가
private static final int _NET_WM_STATE_REMOVE = 0;
private static final int _NET_WM_STATE_ADD = 1;
private static final int TRUE = 1;
public static boolean setFullScreenWindow(Window w, boolean fullScreen) {
X11 x = X11.INSTANCE;
Display display = null;
try {
display = x.XOpenDisplay(null);
int result = sendClientMessage(display, Native.getWindowID(w), "_NET_WM_STATE", new NativeLong(fullScreen ? _NET_WM_STATE_ADD : _NET_WM_STATE_REMOVE), x.XInternAtom(display, "_NET_WM_STATE_FULLSCREEN", false));
return result != 0;
}
finally {
if(display != null) {
x.XCloseDisplay(display);
}
}
}
private static int sendClientMessage(Display display, long wid, String msg, NativeLong data0, NativeLong data1) {
X11 x = X11.INSTANCE;
XEvent event = new XEvent();
event.type = X11.ClientMessage;
event.setType(XClientMessageEvent.class);
event.xclient.type = X11.ClientMessage;
event.xclient.serial = new NativeLong(0L);
event.xclient.send_event = TRUE;
event.xclient.message_type = x.XInternAtom(display, msg, false);
event.xclient.window = new com.sun.jna.platform.unix.X11.Window(wid);
event.xclient.format = 32;
event.xclient.data.setType(NativeLong[].class);
event.xclient.data.l[0] = data0;
event.xclient.data.l[1] = data1;
event.xclient.data.l[2] = new NativeLong(0L);
event.xclient.data.l[3] = new NativeLong(0L);
event.xclient.data.l[4] = new NativeLong(0L);
NativeLong mask = new NativeLong(X11.SubstructureRedirectMask | X11.SubstructureNotifyMask);
int result = x.XSendEvent(display, x.XDefaultRootWindow(display), 0, mask, event);
x.XFlush(display);
return result;
}
.
나를 위해 쿠분투 14.10에서 작동합니다.
원래이 코드를 내 vlcj 프로젝트의 일부로 작성했습니다. https://github.com/caprica/vlcj/blob/vlcj-3.1.0/src/main/java/uk/co/caprica/vlcj/runtime/x/LibXUtil.java.
작성자에 따르면 frame.setUndecorated (true)가 이미 코드에 있습니다. 그것은 우분투입니다. – ruediste
예, 이것은 우분투 문제인 것 같습니다. 나는 Minecraft에 관한 다른 게시물을 보았는데 같은 행동을 보였다. 그러나 제안 된 수정 프로그램은 효과가 없습니다. –