- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试在 JDesktopPane 内部创建 JInternalPane,但它未正确居中。
以下是 JDesktopPane 的创建方式(我使用 Netbeans 拖放):
JDesktopPane desktopPane;
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
setBounds(0, 0, screenSize.width / 2, screenSize.height / 2);
desktopPane = new JDesktopPane();
setContentPane(desktopPane);
然后我创建 JInternalFrame:
LoginUI login = new LoginUI();
Dimension desktopSize = desktopPane.getSize();
Dimension loginSize = login.getSize();
int width = (desktopSize.width - loginSize.width) / 2;
int height = (desktopSize.height - loginSize.height) / 2;
login.setLocation(width, height);
login.setVisible(true);
desktopPane.add(login);
try {
login.setSelected(true);
} catch (java.beans.PropertyVetoException e) {}
我还设置了 JInternalFrame 的首选大小。
但是,登录框架出现在桌面 Pane 的左上角,其中大部分不可见(即桌面 Pane 的“外部”)。
我主要关注this Java documentation 。我还从 this post 获取了 setLocation() 信息以及this post .
我在这里做错了什么导致 JInternalFrame 没有被集中?如有任何帮助,我们将不胜感激。
最佳答案
根据现有信息,我不会说什么,这让我相信这与您没有向我们展示的内容有关。
例如,如果我将您发布的基本信息粘贴到可运行的示例中,则效果很好
import java.awt.Dimension;
import java.awt.EventQueue;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
public class Test {
public static void main(String[] args) {
new Test();
}
public Test() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
}
JDesktopPane dp = new JDesktopPane();
dp.setPreferredSize(new Dimension(200, 200));
JInternalFrame iFrame = new JInternalFrame("Test", true, true, true, true);
iFrame.getContentPane().setPreferredSize(new Dimension(100, 100));
iFrame.pack();
iFrame.setVisible(true);
JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(dp);
frame.pack();
frame.setLocationRelativeTo(null);
dp.add(iFrame);
Dimension desktopSize = dp.getSize();
Dimension loginSize = iFrame.getSize();
int x = (desktopSize.width - loginSize.width) / 2;
int y = (desktopSize.height - loginSize.height) / 2;
iFrame.setLocation(x, y);
frame.setVisible(true);
}
});
}
}
这表明您的代码中有一些您未共享的内容导致了您的问题
考虑提供runnable example这说明了你的问题。这不是代码转储,而是您正在执行的操作的示例,它突出显示了您遇到的问题。这将减少困惑并获得更好的响应
关于java - 将 JInternalFrame 在 JDesktopPane 中居中无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46109288/
我一直在设计一个基于 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 并将它们添加到
我是一名优秀的程序员,十分优秀!