我想在FileChooser中包括一个附加的(可选)JTextField,允许用户在选择文件时进行填充,而不是在选择后再给他们一个提示。是否有人尝试过类似的方法并找到了可行的解决方案?

我的目标结果将如下所示:

最佳答案

将控件添加到JFileChooserdocumented方法是通过setAccessory(JComponent)方法。

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);

07-25 23:31