【问题标题】:Text on JTextField doesn't appear until frame resize在调整框架大小之前,JTextField 上的文本不会出现
【发布时间】:2012-02-13 10:27:48
【问题描述】:

当我点击一个按钮时,会出现一个属性框。每行都有这 3 个字段:JLabel 名称、JTextField 值、JSlider 滑块。我的问题是,当框架显示时,它会正确显示值,但是 JTextField 中的文本在我稍微调整框架大小之前无法显示。我将 GridLayout 用于包含组件的 JPanel 对我可以做什么有什么建议吗?

frame = new JFrame();
    frame.setSize(500, 400);
    frame.setTitle("Properties of " + nume);

    ok = new JButton("OK");
    no = new JButton("Cancel");

    modified = true;

//

//

    buttonsPanel.add(ok);
    buttonsPanel.add(no);

    JSplitPane framePanel = new JSplitPane(JSplitPane.VERTICAL_SPLIT, jsp, buttonsPanel);
    framePanel.setDividerLocation(0.9);
    framePanel.setDividerSize(0);
    framePanel.setResizeWeight(1);

    frame.add(framePanel);

这是我的框架第一次显示的内容:

然后在我调整它的大小后,值会出现:

【问题讨论】:

  • 您的代码有问题 - 请出示 SSCCE

标签: java swing jframe jtextfield grid-layout


【解决方案1】:

在JTextField的父控件上调用doLayout()

【讨论】:

  • DoLayout 对我没用 :(
  • 我用 GridBagLayout 解决了这个问题,虽然这是我最后的选择 :)
  • 我用 GridBagLayout 解决了这个问题,尽管这是我最后的选择。似乎 GridLayout 使 3 列宽于框架的宽度。使用 GridBag,列包含在框架中,因此文本字段中的值在框架启动时正常显示。
猜你喜欢
  • 2016-04-11
  • 1970-01-01
  • 1970-01-01
  • 2012-09-14
  • 1970-01-01
  • 1970-01-01
  • 2012-10-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多