gpt4 book ai didi

java - 将 JInternalFrame 在 JDesktopPane 中居中无法正常工作

转载 作者:行者123 更新时间:2023-12-02 12:16:48 24 4
gpt4 key购买 nike

我尝试在 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 没有被集中?如有任何帮助,我们将不胜感激。

最佳答案

根据现有信息,我不会说什么,这让我相信这与您没有向我们展示的内容有关。

例如,如果我将您发布的基本信息粘贴到可运行的示例中,则效果很好

Internal Frame

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com