我想在FileChooser中包含一个额外的(可选的)JTextField,允许用户在选择文件时填写它,而不是在他们做出选择后给他们一个额外的提示。有没有人尝试类似的东西,找到了一个有效的解决方案?
我的目标结果如下所示:
答案 0 :(得分:7)
通过documented方法setAccessory(JComponent)向JFileChooser
添加控件的方式。
JTextField field = new JTextField("Hello, World");
JPanel accessory = new JPanel();
accessory.setLayout(new FlowLayout());
accessory.add(field);
JFileChooser chooser = new JFileChooser();
chooser.setAccessory(accessory);
int ret = chooser.showOpenDialog(frame);
但是,这将在对话框的右侧布置新控件(精确定位可能与区域设置有关)。
要将组件定位到您想要的位置,您可能必须遍历组件图并对其进行操作。这将是一个非常脆弱的方法,你最好只是建立自己的对话框。
这可以包含文件选择器:
JFileChooser chooser = new JFileChooser();
chooser.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO - wire into something
System.out.println(e);
}
});
JTextField field = new JTextField("Hello, World");
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.add(chooser, BorderLayout.CENTER);
panel.add(field, BorderLayout.SOUTH);