如何在选择文件时扩展/收缩JTextField

时间:2015-09-05 20:27:52

标签: java swing jframe jtextfield

我正在努力使其在选择文件后,显示文件路径的文本字段会自动缩小/展开以适合路径。

JFileChooser fileChooser = new JFileChooser();
if (fileChooser.showOpenDialog(encryptorFrame) == JFileChooser.APPROVE_OPTION) {
    chosenKeyFileTextField.setText(fileChooser.getSelectedFile().getAbsolutePath());
    encryptorFrame.pack();
}

包装框架没有做任何事情。如何才能使文本字段的大小调整到足以适合文件路径?

1 个答案:

答案 0 :(得分:1)

  

包装框架没有任何作用。

使用frame.pack()将起作用。 pack()导致调用布局管理器。

  

encryptorFrame是一个JFrame,它包含几个子面板

因此,这取决于所使用的布局管理器以及声明文本字段的方式。

例如,如果您使用:

JTextField textField = new JTextField(10);

然后文本字段将使用10来提供首选大小,即使文本发生变化也不会改变。

但是,如果您使用:

JTextField textField = new JTextField();

然后首选大小将基于文本字段中的文本。

因此,您需要确保添加文本字段的面板使用的布局管理器将尊重文本字段的首选大小。

然后,您可以使用panel.revalidate()调整面板中文本字段的大小,或frame.pack()调整整个框架的大小。

或者,既然您从文件选择器中获取文件名,也许您可​​以使用JLabel来显示名称。标签将始终根据文本计算其首选大小。