#java #swing #user-interface #frameworks
#java #swing #пользовательский интерфейс #фреймворки
Вопрос:
Я начал с программирования для iPhone и обнаружил, что в iPhone есть четкая картинка, позволяющая разработчикам знать, что делать, например loadView
, viewWillAppear
и так далее. Теперь я хотел бы написать какую-нибудь программу на Java SE, но это не так просто, как я думаю. Я обнаружил, что в Java, похоже, нет этих вещей (или я не знаю деталей). И я обнаружил, что Java использует JFrame исключительно для создания графического интерфейса, вот так:
import javax.swing.*;
class MyFrame extends JFrame {
public MyFrame() {
setTitle("My Empty Frame");
setSize(300,200); // default size is 0,0
setLocation(10,200); // default is 0,0 (top left corner)
}
public static void main(String[] args) {
JFrame f = new MyFrame();
f.show();
}
}
Есть ли способ Java поместить все в метод main? Есть ли архитектура получше?
Ответ №1:
«Приложения» для iPhone имеют жизненный цикл, потому что на самом деле они не являются «приложениями» в традиционном смысле этого слова. Они больше похожи на драйверы, плагины или другие компоненты, предназначенные для встраивания в более крупную платформу. Вокруг них много каркасов, которые заставляют их работать, и эти каркасы вызывают различные обработчики в нужное время. Эти строительные леса не считаются частью приложения, но они являются неотъемлемой частью выполняемого кода.
Java сама по себе является языком программирования, на котором вы, безусловно, можете писать такие же «плагины» — например, Java-апплеты, Java-сервлеты, корпоративные Java-компоненты и т.д. — Но вы также можете написать фреймворк и на Java! Существует множество таких фреймворков, и тогда написание приложения становится просто вопросом написания одного или нескольких «плагинов». Но если вы садитесь и пишете main()
метод и идете оттуда, то вы отказываетесь от любых фреймворков и получаете полную свободу в том, как структурировать свой код.
Ответ №2:
Ответ Эрнеста Фридмана-Хилла прямо на месте. Если вы предпочитаете работать с фреймворком приложения, я могу порекомендовать Jide JDAF (я не связан с ними). Это коммерческая платформа для написания приложений на Swing. В нем есть мастер, который позволяет очень быстро начать работу, вы можете попробовать демо-версию веб-запуска.
Это отнимает большую свободу делать все самостоятельно, но дает вам четкие рекомендации по разработке вашего приложения.
Комментарии:
1. Вы все еще считаете, что JDAF — лучший подход, чем использование JIDE docking framework для создания приложения с нуля?
2. Извините, я не мог сказать, я давно на это не смотрел.
Ответ №3:
Сама JavaSE, насколько я знаю, не предоставляет модель жизненного цикла. Хотя Eclipse equinox основан на платформе OSGi, поэтому, если вы используете ее, у вас может быть модель жизненного цикла, или вы можете просто придерживаться обычного OSGi.
В качестве альтернативы Sun также разработала какой-то фреймворк приложения, но я не знаю его названия…
(Кстати, если вы посмотрите глубже, то в конце все контейнеры запускаются простым методом main 🙂
Ответ №4:
import javax.swing.*;
import java.awt.Dimension;
class MyFrame extends JFrame {
public MyFrame() {
setTitle("My Empty Frame");
setPreferredSize(new Dimension(300, 200)); // default size is 0,0
setLocation(10, 200); // default is 0,0 (top left corner)
pack();
setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new MyFrame();
}
});
}
}