Всем привет. Разрабатываю проект в Eclipse на языке программирование Java. Проблема заключается в следующим: Создал класс FileChooser.java
и основной класс Main.java
. Написал код для FileChooser.java
вот так:
public class FileChooser extends JPanel{
private FileChooser(){
final JFileChooser fileChooser = new JFileChooser();
final JButton open = new JButton("Open");
fileChooser.setCurrentDirectory(new File("C:/Users/Elmar/Desktop"));
fileChooser.setDialogTitle("Choose Your Project");
fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
if(fileChooser.showOpenDialog(open) == JFileChooser.APPROVE_OPTION){
}
}
public static void main(String[] args){
final FileChooser fileChooser = new FileChooser();
}
}
При всем этом я вызываю метод main
в классе Main.java
таким образом
openProject.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
FileChooser.main(args);
}
});`
И когда все готово я запускаю программу и при нажатие на кнопку Open программа зависает и перестает работать. Мне JFileChooser
нужен в отдельном классе из-за этого я так написал код. Буду благодарен за помощь
Метод public static void main(String[] args){} - не совсем обычный метод. это, если можно так выразиться, точка входа в приложение, поэтому, пока не придет понимание происходящего, для простоты действуйте по правилу: "одно приложение один метод main". Посему попробуйте написать класс FileChooser без него:
import java.io.File;
import javax.swing.JButton;
import javax.swing.JFileChooser;
public class FileChooser extends JFileChooser{
private static final long serialVersionUID = -2339847367533082834L;
private final JButton openButton;
public FileChooser(){
openButton = new JButton("Open");
}
public void startFileChooser(){
setCurrentDirectory(new File("C:/Users/Elmar/Desktop"));
setDialogTitle("Choose Your Project");
setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
if(showOpenDialog(openButton) == JFileChooser.APPROVE_OPTION){
//после нажатия на кнопку выводит путь к выбранной директории
System.out.println(getSelectedFile());
}
}
}
Разумеется, вместо FileChooser.main(args) следует сделать так: new FileChooser().startFileChooser().
Обратите также внимание на использование конструктора. Вы его используете, чтобы запустить логику. Так делать не стоит по многим причинам. Для этого существуют обычные методы. А конструктор по сути своей призван делать две вещи: создавать экземпляр класса и инициализировать поля.
Переименуй main во что то другое А ещё `
if(fileChooser.showOpenDialog(open) == JFileChooser.APPROVE_OPTION){
}
ничего не делает.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Помогите пожалуйста, столкнулся с непонятной проблемой: Всего есть 3 класca, мне нужно чтобы при переключении на class_0 или class_1 нажатая кнопка...
Собственно такой вопрос, каким образом мы можем отправить сообщение с сервера на Java на Андроид клиент? У меня нормально передаёт данные с Андроида...