Если вы хотите запомнить значения, то они должны быть переменными уровня класса.
Но, как правило, вы хотите передать их какому-либо другому методу, чтобы выполнить некоторую обработку (или, скажем, сохранить их в файле). Вы можете передать их как параметры другому методу.
(Второй вариант в большинстве случаев лучше, я не очень разбираюсь в вашем приложении, поэтому не могу дать один ответ)
Есть другие проблемы с вашим кодом:
Вам необходимо проверить, нажал ли пользователь кнопку «ОК» или «Отмена» в открытом диалоговом окне, чтобы решить, получить файл или нет.
String filename = File.separator+"c:";
на самом деле не имеет смысла. Возможно, вы имели в виду String filename = "c:"+File.separator;
Но даже это не очень полезно. File.separator
предназначен для получения специфичного для платформы символа разделителя файлов (\
в Windows, /
в Linux), но, поскольку вы жестко программируете c:
, вы все равно ограничиваете свое приложение для Windows. Возможно, вы захотите иметь лучший платформо-независимый способ (начните с пути «по умолчанию», new JFileChooser()
без аргументов, а затем запомните путь, который последний раз использовал пользователь, и продолжайте с него)
Если аргументом метода showOpenDialog является ваш родительский фрейм, тогда диалог будет центрирован на родительском фрейме и в большинстве случаев будет выглядеть лучше.
Возможно, вы захотите пересмотреть имена переменных.
button2.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String filename = File.separator+"c:";
JFileChooser fc = new JFileChooser(new File(filename));
int option = fc.showOpenDialog(null);
if(option = JFileChooser.APROVE_OPTION)
{
File selFile = fc.getSelectedFile();
String ontname=selFile.getPath();
System.out.println("filepath: "+ontname); //it works correctly.
doSomeOperation(ontname); //Or, declare ontname as a class level variable.
}
}
});