【发布时间】:2012-11-15 21:28:49
【问题描述】:
我有一个简单的 java gui(下面的代码),由于某种原因,当我第一次尝试移动或调整它的大小时,它会“跳”回原来的位置。所以基本上我必须移动 gui 两次才能让它移动一次,因为当我第一次释放鼠标时,它会迅速回到最初出现的位置。
import javax.swing.*;
public class JFrameTester {
public static void main(String[] args) {
JFrame f = new JFrame("A JFrame");
f.setSize(250, 250);
f.setLocation(300,200);
f.getContentPane().add(new JTextArea(10, 40));
//f.pack();
f.setVisible(true);
//f.validate();
}
}
我在 GNU Linux 和 java 1.6 上运行。我正在将显示导出回我的 Windows 机器,并想知道它是否与 X11 转发有关,因为当我在 Windows 中运行 gui 时它没有显示这种行为。但是,当我在 Fedora Linux 机器(使用 java 1.7)上运行这个 gui 时,它根本不会显示这种行为 - 无论是否导出显示。
【问题讨论】:
-
我怀疑 Xserver 在您的 Windows PC 上运行。您能否在 GNU/Linux Java 1.6 机器上运行相同的应用程序,并在另一台(非 Windows)机器上远程显示它?
-
1) GUI 应该在 EDT 上启动和更新。 2) 始终调用
pack()以使GUI 进行布局和验证。 3)f.setSize(250, 250);适得其反。根据文本区域所需的行和列设置 GUI 的大小。 -
另外,在将标签应用于问题之前,请仔细检查标签文本。这与 SO 定义的export没有任何关系。
-
@dasrb 我已经尝试过其他机器并得到相同的行为,但是它们都是 Windows
标签: java linux swing user-interface x11