我正在编写一个应用程序,打算在双监视器设置上运行,其中一个监视器上的“Display”JFrame全屏显示,另一个监视器上的“Control”JFrame向显示器发送指令。我尝试了两种不同的全屏显示设置方法;每种技术的成功似乎都取决于操作系统。
display.setUndecorated(true);
display.setExtendedState(JFrame.MAXIMIZED_BOTH);
可以在Windows中工作,但JFrame在OS X和Linux中隐藏在dock/Panel下。
我的另一种方法,利用
GraphicsDevice.setFullScreenWindow(display);
在我试过的三种操作系统中都能工作,但在Windows中,将控制窗口集中在另一个监视器上会使显示窗口隐藏,并调用
display.setAlwaysOnTop(true);
没有解决问题。我有点偏爱GraphicsDevice
方法,因为我不必处理OS X或Linux中的问题,我希望Windows问题是一个简单的解决方案。是吗?
我遇到了同样的问题。我解决这个问题的方法是重写jframe中的函数show(),并使用缓冲策略永不从show函数返回。这样的话:
@override
public void show(){
super.show();
//Create a double buffering strategy
createBufferStrategy(2);
BufferStrategy bs = getBufferStrategy();
while(true){
//draw our frame
Graphics g = bs.getGraphics();
paint(g);
//dispose of our graphics
g.dispose();
//Show our frame
bs.show();
try{
//Don't use all our cpu-power
Thread.sleep(10);
}catch(Exception e){
//Do something (this probably will never happen)
}
}
}
实际上,如果使用setViable(boolean)
而不是show()
(show
已弃用)会更好。窗口不会总是在顶部(您仍然可以将另一个窗口拖到它上面),但当您将焦点放在另一个窗口时,它不会自动隐藏。我猜这就是您想要的行为。
注意:不要在事件队列中调用show
,因为这会使事件队列无用,并使jframe忽略所有事件。函数show
应该在新线程中调用,然后所有事件仍将被处理。
试试这个。。。
对于多屏幕
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] gs = ge.getScreenDevices();
// Get size of each screen
for (int i=0; i<gs.length; i++) {
DisplayMode dm = gs[i].getDisplayMode();
int screenWidth = dm.getWidth();
int screenHeight = dm.getHeight();
}
使用公共最终void setAlwaysOnTop(布尔alwaysOnTop)将窗口置于顶部,如果窗口可见,这包括将窗口置于最前端,然后将其“粘贴”到最顶部位置。
我有四个内部框架和三个按钮在里面。当我点击最大化按钮,最大化,但它重叠所有的框架。但我的观点是,它应该显示最小化的框架。请找到下面的代码
问题内容: 我如何避免滚动页面的其余部分?我考虑过使用和,只是想知道是否有更简单,更用户友好的方法,这样做的最佳实践是什么? 问题答案: 使用的包含您的头,喜欢的东西 在此示例中,当开始时位于下方100px处,但随着用户滚动,它保持原位。当然,不用说,您需要确保有背景,以便当两个s重叠时,其内容实际上是可见的。
问题内容: 我的问题是当我在回收视图中滚动数据时,所以加载了新数据,但问题是当新数据加载时,回收视图从第一个产品开始, 我需要保持旧的位置,只滚动新数据,而不滚动所有旧数据 目前,我正在添加文件adeptoer文件和主文件的完整代码, 问题答案: 试试这个:
我有一个非常标准的,带有垂直。我一直在顶部插入新项目,并调用 < 我希望列表保持滚动到顶部;总是显示第0个位置。 从我的需求的角度来看,< code>LayoutManager根据项目的数量表现不同。 虽然所有项目都适合屏幕,但它的外观和行为与我预期的一样:新项目总是出现在顶部,并移动其下的所有项目。 但是,一旦项目数超过RecyclerView的界限,新项目就会添加到当前可见项目的上方,但可见项
让事件持续发生一段时间 用法 “保持”节点可以: 保持输入的值,直到另一个“no”没有值出现 在一段时间内保持输入的值不变 让输入逐渐的变化 Your browser does not support the video tag. 案例:小台灯 功能:按下按钮后松开手,灯亮起5s后才会灭 工作原理 你可以从配置项的3种模式中任选1个: 保持直到改变:输入将会被保持,直到有另一个输入进来(例如一张伤
问题内容: 我正在尝试使用LinkedList属性持久化一个类,但似乎无法正确处理。这是我的代码和映射: hibernate映射: 看来我可以像这样持久化Class Stuff的对象,但是当我尝试恢复它们时,发生以下错误: 问题答案: 通常,Hibernate将为集合提供其自己的实现,因此您应首选接口而非特定的实现。它可能正在尝试为图像分配其他类型的列表,但失败了。您必须将字段更改为。