Я хочу включать дополнительное (дополнительно) JTextField в FileChooser, позволяя пользователю заполнить его при выборе файла вместо того, чтобы дать им дополнительную подсказку после того, как они сделают свой выбор. Кто-либо делал попытку чего-то подобного и нашел рабочее решение?
Мой целевой результат выглядел бы примерно так:
задокументированный способ добавления элементов управления к 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);