选择文件时如何 expand/contract JTextField
How to expand/contract JTextField upon choosing file
我正在努力做到这一点,以便在选择文件后,显示文件路径的文本字段会自动 contracted/expanded 以适合路径。
JFileChooser fileChooser = new JFileChooser();
if (fileChooser.showOpenDialog(encryptorFrame) == JFileChooser.APPROVE_OPTION) {
chosenKeyFileTextField.setText(fileChooser.getSelectedFile().getAbsolutePath());
encryptorFrame.pack();
}
打包框架没有任何作用。我怎样才能使文本字段的大小调整到足以适合文件路径?
Packing the frame doesn't do anything.
使用 frame.pack() 即可。 pack() 导致布局管理器被调用。
encryptorFrame is a JFrame, which contains several sub-panels,
所以这取决于所使用的布局管理器以及您声明文本字段的方式。
例如,如果您使用:
JTextField textField = new JTextField(10);
然后文本字段将使用 10 提供首选大小,即使文本更改也不会更改。
但是,如果您使用:
JTextField textField = new JTextField();
然后首选大小将基于文本字段中的文本。
因此,您需要确保添加文本字段的面板使用的布局管理器会遵循文本字段的首选大小。
然后您可以只使用 panel.revalidate()
调整面板内文本字段的大小或 frame.pack()
调整整个框架的大小。
或者,由于您是从文件选择器获取文件名,也许您可以只使用 JLabel 来显示名称。标签将始终根据文本计算其首选大小。
我正在努力做到这一点,以便在选择文件后,显示文件路径的文本字段会自动 contracted/expanded 以适合路径。
JFileChooser fileChooser = new JFileChooser();
if (fileChooser.showOpenDialog(encryptorFrame) == JFileChooser.APPROVE_OPTION) {
chosenKeyFileTextField.setText(fileChooser.getSelectedFile().getAbsolutePath());
encryptorFrame.pack();
}
打包框架没有任何作用。我怎样才能使文本字段的大小调整到足以适合文件路径?
Packing the frame doesn't do anything.
使用 frame.pack() 即可。 pack() 导致布局管理器被调用。
encryptorFrame is a JFrame, which contains several sub-panels,
所以这取决于所使用的布局管理器以及您声明文本字段的方式。
例如,如果您使用:
JTextField textField = new JTextField(10);
然后文本字段将使用 10 提供首选大小,即使文本更改也不会更改。
但是,如果您使用:
JTextField textField = new JTextField();
然后首选大小将基于文本字段中的文本。
因此,您需要确保添加文本字段的面板使用的布局管理器会遵循文本字段的首选大小。
然后您可以只使用 panel.revalidate()
调整面板内文本字段的大小或 frame.pack()
调整整个框架的大小。
或者,由于您是从文件选择器获取文件名,也许您可以只使用 JLabel 来显示名称。标签将始终根据文本计算其首选大小。