【问题标题】:Java Swing. TextField inside a ScrolPane is not entirely visible爪哇摇摆。 ScrollPane 中的 TextField 不完全可见
【发布时间】:2012-08-28 09:21:32
【问题描述】:

我有你在图片中看到的结构。

对于这两个面板,都使用了 GridBagLayout。 问题是滚动窗格内的文本字段并不完全可见。 父面板仅会拉伸以使按钮可见,但当滚动条出现时,它只会与文本字段重叠。 有没有简单的解决方案来解决这个问题(不想处理设置自定义/首选/最小高度)?

面板结构:

问题:

好的,这是一个 SSCCE

public class Main {
JFrame frame;
private JPanel mainPanel;
private JButton button1;
private JButton button2;
private JTextField someTextTextField;


public static void main(String[] args) {
    Main main = new Main();
    main.show();
}

private void show() {
    frame = new JFrame("Frame");
    frame.setContentPane(mainPanel);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.pack();

    frame.setVisible(true);
}


{

    $$$setupUI$$$();
}

/**
 * Method generated by IntelliJ IDEA GUI Designer
 * >>> IMPORTANT!! <<<
 * DO NOT edit this method OR call it in your code!
 *
 * @noinspection ALL
 */
private void $$$setupUI$$$() {
    mainPanel = new JPanel();
    mainPanel.setLayout(new GridBagLayout());
    mainPanel.setPreferredSize(new Dimension(209, 30));
    final JPanel panel1 = new JPanel();
    panel1.setLayout(new GridBagLayout());
    GridBagConstraints gbc;
    gbc = new GridBagConstraints();
    gbc.gridx = 1;
    gbc.gridy = 0;
    gbc.weightx = 0.5;
    gbc.weighty = 1.0;
    gbc.fill = GridBagConstraints.BOTH;
    mainPanel.add(panel1, gbc);
    button1 = new JButton();
    button1.setText("Button");
    gbc = new GridBagConstraints();
    gbc.gridx = 0;
    gbc.gridy = 0;
    gbc.fill = GridBagConstraints.HORIZONTAL;
    panel1.add(button1, gbc);
    button2 = new JButton();
    button2.setText("Button");
    gbc = new GridBagConstraints();
    gbc.gridx = 1;
    gbc.gridy = 0;
    gbc.fill = GridBagConstraints.HORIZONTAL;
    panel1.add(button2, gbc);
    final JScrollPane scrollPane1 = new JScrollPane();
    scrollPane1.setAlignmentX(0.0f);
    gbc = new GridBagConstraints();
    gbc.gridx = 0;
    gbc.gridy = 0;
    gbc.weightx = 0.5;
    gbc.weighty = 1.0;
    gbc.fill = GridBagConstraints.BOTH;
    mainPanel.add(scrollPane1, gbc);
    someTextTextField = new JTextField();
    someTextTextField.setText("some text");
    scrollPane1.setViewportView(someTextTextField);
}

/**
 * @noinspection ALL
 */
public JComponent $$$getRootComponent$$$() {
    return mainPanel;
}

}

【问题讨论】:

  • 尝试调整用于布局滚动窗格的 GridBagConstraint 的权重值
  • 嗯..这棵树是真的吗?也就是说,您的面板是渲染/编辑组件吗?无论如何最好展示一个 SSCCE,这样我们就可以看到你实际上在做什么
  • 不,这是 Intellij IDEA GUI 编辑器的截图(第一屏)
  • @Bax:发布 SSCCE。不要使用 setMinimumHeight
  • @Bax:更多关于setXxxSize()。有什么办法可以修改生成的代码?

标签: java swing jscrollpane jtextfield jtextarea


【解决方案1】:

尝试使用JTextArea 而不是JTextField。如果您不想设置自定义/首选/最小尺寸,您可以使用JTextArea.setRows(int rows) 方法。我希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多