Настройка javax.swing. JFileChooser для включения дополнительного JTextField

Я хочу включать дополнительное (дополнительно) JTextField в FileChooser, позволяя пользователю заполнить его при выборе файла вместо того, чтобы дать им дополнительную подсказку после того, как они сделают свой выбор. Кто-либо делал попытку чего-то подобного и нашел рабочее решение?

Мой целевой результат выглядел бы примерно так:

http://imgur.com/lVMd6

6
задан Emre Erkan 15 December 2011 в 23:39
поделиться

1 ответ

задокументированный способ добавления элементов управления к JFileChooser через 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);
7
ответ дан 17 December 2019 в 00:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: