【问题标题】:JTextfield location won't changeJTextfield 位置不会改变
【发布时间】:2013-06-17 18:58:17
【问题描述】:

我一直在尝试设置我的文本字段的位置,但它似乎只是 正在生成JFrame 的中间。

我想要它在左北角,我该怎么做?我已经添加了我的程序的代码。

     private static void createAndShowGUI() {
    //Create and set up the window.
    JFrame frame = new JFrame("Atarim");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    //Create and set up the content pane.
    JComponent newContentPane = new Atarim(frame);
    newContentPane.setOpaque(true);
    frame.setContentPane(newContentPane);
    frame.setLocationRelativeTo(null);
    frame.setSize(352, 950);
    JTextField textfield = new JTextField("search...");
    textfield.setLocation(0, 0);
    textfield.setSize(150,20);
    textfield.setVisible(true);
    newContentPane.add(textfield);
    frame.setVisible(true);
}

【问题讨论】:

  • 1) Java GUI 可能必须在多个平台、不同的屏幕分辨率和使用不同的 PLAF 上工作。因此,它们不利于组件的精确放置。要组织强大的 GUI 组件,请改用布局管理器或它们的组合,以及用于空白空间的布局填充和边框。 2)不要设置顶级容器的大小。而是布局内容并致电pack()。 3) textfield.setSize(150,20); 文本字段的大小最好通过它要包含的字符数(在构造函数中提供)和字体来暗示。
  • 使用 setHorizo​​ntalTextPosition(javax.swing.LEFT);
  • 和类似的 setVerticalTextPosition(javax.swing.TOP)

标签: java swing jframe jtextfield layout-manager


【解决方案1】:

我要做的第一件事就是克服这种对绝对控制的需求,从长远来看,这会让你的生活更轻松。

Swing 员工系统称为布局管理器,以方便在屏幕上定位 UI 元素。布局管理器 API 是 Swing 工作方式的基础。它使为不同系统开发 UI 变得更容易和更快,因为您不需要为您的 UI 可能运行的所有各种系统(已为 MacOS、Windows 7 和 Windows XP 开发)不断计算字体指标和屏幕分辨率的差异同时,我可以向你保证这是上帝派来的)

你可以试试...

newContentPane.setLayout(new GridBagLayout());
GridBagConstraintss gbc = new GridBagConstraintss();
gbc.weightx = 1;
gbc.weighty = 1;
gbc.anchor = GridBagConstraints.NORTHWEST;
newContentPane.add(textfield);

请仔细查看Using Layout !anagersA visual guide to layout managers 了解更多详情

【讨论】:

    猜你喜欢
    • 2013-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-10
    • 1970-01-01
    相关资源
    最近更新 更多