- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我在JFrame上有一个desktopPane,在desktopPane上是一个JInternalFrame。现在,我将internalFrame的位置设置为desktopPane的中心,但是当我调整整个Frame的大小时,InternalFrame保持在原来的位置,并且不会将位置更改为新的中心。
public void openLogin(){
JInternalFrame iFrame = new LoginScreen(appMain);
desktopPane =new JDesktopPane();
add(desktopPane);
frameSize = getSize();
desktopPane.setSize(frameSize);
Dimension desktopSize = desktopPane.getSize();
Dimension jInternalFrameSize = iFrame.getSize();
iFrame.setLocation((desktopSize.width - jInternalFrameSize.width)/2, (desktopSize.height- jInternalFrameSize.height)/2);
desktopPane.add(iFrame);
}
这是我设置位置的方法,如何更改它以匹配新的中心?我与一些听众尝试过,但没有任何效果。
<小时/>好吧,因为我没有时间使用 @Hovercraft full of Eels 的答案,所以我再次尝试了一个组件监听器:
public void openLogin(){
JInternalFrame iFrame = new LoginScreen(appMain);
desktopPane =new JDesktopPane();
add(desktopPane);
frameSize = getSize();
newSize=frameSize;
desktopPane.addComponentListener(new ComponentListener() {
@Override
public void componentShown(ComponentEvent e) {
}
@Override
public void componentResized(ComponentEvent e) {
newSize = getSize();
}
@Override
public void componentMoved(ComponentEvent e) {
}
@Override
public void componentHidden(ComponentEvent e) {
}
});
if(newSize != frameSize){
desktopPane.setSize(newSize);
Dimension desktopSize = desktopPane.getSize();
Dimension jInternalFrameSize = iFrame.getSize();
iFrame.setLocation((desktopSize.width - jInternalFrameSize.width)/2, (desktopSize.height- jInternalFrameSize.height)/2);
desktopPane.add(iFrame);
}
else{
desktopPane.setSize(frameSize);
Dimension desktopSize = desktopPane.getSize();
Dimension jInternalFrameSize = iFrame.getSize();
iFrame.setLocation((desktopSize.width - jInternalFrameSize.width)/2, (desktopSize.height- jInternalFrameSize.height)/2);
desktopPane.add(iFrame);
}
}
它甚至不会触发监听器。@Hovercraft,我会尝试你的东西,但不是今天,不过非常感谢你!
好吧,我发现了我的失败,现在可以了:
public void openLogin(){
iFrame = new LoginScreen(appMain);
desktopPane =new JDesktopPane();
add(desktopPane);
frameSize = getSize();
newSize=frameSize;
addComponentListener(new ComponentListener() {
@Override
public void componentShown(ComponentEvent e) {
}
@Override
public void componentResized(ComponentEvent e) {
newSize = getSize();
System.out.println("blaaaa");
desktopPane.setSize(newSize);
Dimension desktopSize = getSize();
Dimension jInternalFrameSize = iFrame.getSize();
iFrame.setLocation((desktopSize.width - jInternalFrameSize.width)/2, (desktopSize.height- jInternalFrameSize.height)/2);
}
@Override
public void componentMoved(ComponentEvent e) {
}
@Override
public void componentHidden(ComponentEvent e) {
}
});
desktopPane.setSize(frameSize);
Dimension desktopSize = desktopPane.getSize();
Dimension jInternalFrameSize = iFrame.getSize();
iFrame.setLocation((desktopSize.width - jInternalFrameSize.width)/2, (desktopSize.height- jInternalFrameSize.height)/2);
desktopPane.add(iFrame);
}
最佳答案
您在评论中指出:
I have to use it like this, because after the Login(InternalFrame) the main Frame disposes the desktopPane and loads other elements like Jlists etc. So if I use the component listener where do I place it? Inside this method or somewhere else?
不,你不知道。
另一种选择:
关于java - 如何动态调整 JDesktopPane 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25326343/
我一直在设计一个基于 Swing 的桌面 RPG 程序,以方便使用 GUI 控制元素进行基于文本的角色扮演。 为了实现这一点,每个正在运行的客户端都会获得一个包含所有重要 JFrame 的主桌面(托管
我想在按钮触发器中隐藏我的JDesktopPane。但这不会隐藏自己。我创建了一个隐藏框架的静态 void 方法,并在 actionPerformed 中调用它。我需要运行另一个 EDT 来隐藏我的框
我想将 JDesktopPane 设置为透明,并允许我单击下面的内容(例如桌面图标等)。内部框架应保持不透明,并且能够像当前一样在屏幕周围重新定位。有什么想法吗? package test1;
由于我们在软件中使用 JDesktopPane 和 JInternalFrames ,我想知道我们是否可以将快捷图标(特定框架)放置在桌面 Pane 内(类似于Windows 桌面快捷方式)。我搜索了
我正在为 JDesktopPane 使用自制的 DesktopPaneUI,我已经为该类编写了正确的方法,但我遇到了麻烦。当我调整 JDesktopPane 大小时,背景图像不会随框架调整大小。图像似
我是一名初学者,正在创建 MDI 格式的 Java 桌面应用程序,因此使用了 JDesktopPane 和内部框架。我主要为此使用 NetBeans 拖放。现在我需要设计一个可以滚动的属性的页面。我需
制作全屏 mdi 应用程序是一个坏主意吗?还有其他人尝试过这个吗?目前正致力于重新设计触摸屏终端上使用的应用程序。空间至关重要,我相信能够最大化、调整应用程序窗口大小等确实会使终端更加强大。有人有这方
我一直在努力驯服JDesktopPane与可调整大小的 GUI 和滚动 Pane 一起很好地工作,但这样做有一些麻烦。看起来除非拖动模式是轮廓,桌面 Pane 不会按预期调整大小(当内部框架被拖动到桌
我们有一个包含两个 JFrames 和两个 JDesktopPanes 的应用程序。我们需要将内部框架从一个框架移动到另一个框架。 我们遇到的问题是,在我们将内部框架从第一个窗口移动到第二个窗口后,当
我有一个 JDesktopPane 并希望以网格样式显示 JInternalFrames 而无需覆盖框架。框架的尺寸会有所不同,因此应动态分配它们的位置。我可以存储最后放置的框架的坐标,但可以移动、最
我想为 javax.swing.JDesktopPane 添加滚动功能。但是包装在 javax.swing.JScrollPane 中不会产生所需的行为。 Searching the web表明这个问
我在使用 Swing 设计 MDI 应用程序时遇到了一些麻烦。 我在实现 JDesktopPane 和 JInternalFrames 时没有遇到任何问题,我的问题会更具体一点。这是我的基本容器框架一
我正在编写一个程序,试图模拟一个物种的进化,它有一个如下所示的窗口: 最初右下角的空白区域是一个面板,它的目的是绘制标本、位置和行进路径的视觉表示(并不重要)。但是,您将能够打开某种窗口,允许您创建/
我有主员工表单,我想在我的主表单上显示它们。该主窗体是MDI容器,所以我只想知道如何显示主雇员窗体。 这是JDesktopPane创建对象代码: public class MainForm exten
我想在两个 JPanel 之间画线,但线没有出现在 LayeredPane 上。 这就是我所做的,请仔细阅读它,可编译。请尝试并更正此代码。我尝试过以这种方式在内部框架上绘制线条,但它不适用于 JPa
我使用 JDesktopPane 并创建多个 JInternalFrame 对象。当我最小化所有框架并最大化其中任何一个框架时,打开的框架会覆盖所有最小化的框架。 如何使所有最小化的框架可见? 最佳答
所以我在JFrame上有一个desktopPane,在desktopPane上是一个JInternalFrame。现在,我将internalFrame的位置设置为desktopPane的中心,但是当我
我想创建我所读取的文件的预览,其中包含指定的行数。我的代码工作正常,问题是如果我选择其他行数,JDesktopPane 不会刷新并且会覆盖前面的行。 我的代码如下所示: previewButton.a
我将项目的 LAF 设置为系统默认外观。现在我试图将 JDesktopPane 放入我的一个面板中,但我希望我所有的内部框架都使用 java 默认 LAF。有没有办法在不改变整个项目的LAF的情况下改
我试图将 JPanel 添加到我的 JFrame,然后将 JFrame 的 contentPane 设置为 JDesktopPane,以便我可以创建新的 JInternalFrames 并将它们添加到
我是一名优秀的程序员,十分优秀!