我想知道如何使java JFrame开始最大化.我不希望它是全屏的(没有窗口)我只是想让它像普通程序一样开始,比如网页浏览器.
我已经知道使用:
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Run Code Online (Sandbox Code Playgroud)
要获得屏幕大小,但是当您将此维度应用于JFrame时,即使它占据了几乎所有屏幕,它仍然可以被拖动.你可以按下maximse按钮来停止它,但我宁愿窗口最大化.
此外,我担心最大化窗口会对窗口内容产生的影响.
我该怎么做呢?
最初(参见我之前的问题" Java如何使JFrames作为最大化窗口开始 ")我想创建一个最大化的窗口.此代码完成此操作:
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setVisible(true);
}
Run Code Online (Sandbox Code Playgroud)
但是,如果此窗口恢复,它将成为一个几乎不存在的栏.为了解决这个问题,我使用setSize()为窗口设置了一个大小.这有效但存在另一个问题,窗口仍然可以调整大小.
为了解决这个问题,我设置了setResizable(false); 到目前为止这是我的代码:
public static void main(String[] args) {
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
JFrame frame = new JFrame("Jedia");
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setSize(screenSize);
frame.setResizable(false);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
Run Code Online (Sandbox Code Playgroud)
但是,现在窗口以指定的大小(而不是最大化)开始,无法恢复.
所以,我的问题是,我怎样才能使窗口开始最大化,给它一个大小,以便它恢复时,并使其不可能重新调整大小?或者创建一个开始最大化并且无法恢复的窗口?
我想在C中使用Xlib获取所有打开窗口标题的列表.我正在运行Ubuntu 12.04.我使用以下代码来完成此任务:
#include <X11/Xlib.h>
#include <X11/Xatom.h>
#include <stdio.h>
#include <stdlib.h>
Window *list(Display *disp, unsigned long *len)
{
Atom prop = XInternAtom(disp, "_NET_CLIENT_LIST", False), type;
int form;
unsigned long remain;
unsigned char *list;
XGetWindowProperty(disp, XDefaultRootWindow(disp), prop, 0, 1024, False, XA_WINDOW,
&type, &form, &len, &remain, &list);
return (Window *)list;
}
char *name(Display *disp, Window window)
{
Atom prop = XInternAtom(disp, "WM_NAME", False), type;
int form;
unsigned long remain, len;
unsigned char *list;
XGetWindowProperty(disp, window, prop, 0, 1024, False, AnyPropertyType,
&type, &form, &len, …Run Code Online (Sandbox Code Playgroud) 抱歉措辞不好的问题,我想不出更好的名字.
我正在学习C,刚刚转到指针并编写了一个函数strcat(char*s,char*t),它将t添加到s的结尾:
void strcat(char *s, char *t) //add t to the end of s
{
while(*s++) //get to the end of s
;
*s--; //unsure why I need this
while(*s++ = *t++) //copy t to the end of s
;
return;
}
Run Code Online (Sandbox Code Playgroud)
现在我的问题是为什么我需要这条线:
*s--;
Run Code Online (Sandbox Code Playgroud)
当我最初添加它时,我认为直到我完成代码才有意义.
我会认为以下情况属实:
1)第一个循环连续递增,当*s为0(或空字符)时,它继续前进,所以现在*s指向数组的空字符.
2)所以我应该做的就是实现第二个循环.s的原始null字符将被t的第一个字符替换,直到我们得到t的null字符,此时我们退出第二个循环并返回.
很明显我错过了一些东西,因为代码没有它就行不通!!
在第一个循环*s指向超出'\ 0'的一个位置之后但我的问题是为什么?
提前致谢 :)