java filechooser - PullRequest
       17

java filechooser

0 голосов
/ 01 декабря 2009

Я работаю над проектом в Java, где пользователь должен выбрать файл для загрузки через jfilechooser. Есть ли в любом случае сделать текстовое поле доступным только для чтения, чтобы вы могли выбирать файлы только щелкая их, а не записывая в текстовое поле. Я надеюсь, что я разъяснил свою проблему; D

Ответы [ 5 ]

2 голосов
/ 01 декабря 2009

Если вы хотите убедиться, что введенное имя файла является действительным до закрытия средства выбора файлов, тогда вы сможете сделать что-то вроде этого:

JFileChooser chooser = new JFileChooser(...)
{
    public void approveSelection()
    {
        if (getSelectedFile().exists())
            super.approveSelection();
        else
            JOptionPane.showMessageDialog(this, "Selected file does not exist");
    }
};
2 голосов
/ 01 декабря 2009

Если вы хотите убедиться, что пользователь выбрал файл, а не каталог (на что указывают ваши ответы на другие ответы), вы можете использовать FileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);. Однако это настройка по умолчанию при создании экземпляра средства выбора файлов, поэтому, если ваш код не изменит это в какой-то момент, вам не нужно устанавливать его явно.

Для вашего удовольствия от просмотра: http://java.sun.com/docs/books/tutorial/uiswing/components/filechooser.html

1 голос
/ 01 декабря 2009

Это на самом деле не попытка ответа, но я хотел бы спросить, ПОЧЕМУ вы хотите, чтобы текстовое поле было доступно только для чтения. Вы ограничиваете пользователей и для чего именно? Изменение стандартного ожидаемого поведения средства выбора файлов, как правило, не является хорошим подходом для отказа, если у вас нет ОЧЕНЬ веских причин для этого.

Так что, извините, на самом деле это не ответ, но, пожалуйста, подумайте, почему вы хотите это сделать. В качестве личного предпочтения мне нравится возможность писать в текстовом поле. Это позволяет мне выполнять вставку, что позволяет чрезвычайно быстро и просто перемещаться из одного каталога в другой.

1 голос
/ 01 декабря 2009

Я не верю, что это возможно напрямую - и, судя по API , я считаю, что это не так. Вы, вероятно, могли бы смоделировать это, зарегистрировав слушателя, который очищал текстовое поле после каждого нажатия клавиши.

Однако, вы уверены , что хотите это сделать? Лично я был бы очень расстроен, если бы использовал селектор файлов, который был поврежден таким образом, особенно если бы я скопировал путь к файлу в буфер обмена откуда-то и был вынужден вручную спуститься через кучу каталогов, среди других ситуаций .

Есть ли конкретная причина, по которой вы хотите нанести вред пользовательскому интерфейсу? Потому что я не вижу никакой законной причины для этого ...

0 голосов
/ 01 декабря 2009

Я думаю, что единственный способ сделать это - предоставить свой FileChooserUI и установить его с помощью setUI() на JFileChooser. Это, вероятно, не так много работы, когда вы создаете подкласс существующей реализации из пакетов javax.swing.plaf, но проблема в том, что вы обходите весь механизм PLAF; изменение глобального L & F не будет работать для вашего выбора файлов.

...