Графический интерфейс java слушателей без авт
Я начинающий разработчик Java, изучая только из интернет-учебников. Я изучаю полноэкранные графические приложения. Вчера мне сказали, что я не должен использовать AWT в своих программах, потому что он устарел. Я уже знаю о легких и тяжеловесных компонентах, основная проблема-это слушатели мыши и клавиатуры.
Почему AWT устарел?
Как сделать программу без AWT (добавление слушателей в JComponents и т. д.) (Какие качели могут заменить AWT)?
5 ответов:
вы неправильно интерпретируете информацию, предоставленную вам. Вы должны избегать использования компонентов Swing с AWT компоненты. Это нормально использовать Swing со структурой прослушивателя AWT, менеджерами макетов и т. д. и на самом деле это невозможно.
были некоторые хорошие ответы, но я хотел бы осветить немного другой аспект. Вещи, которые качели обеспечивает за пределами AWT.
компоненты
Swing поддерживает стилизованные документы в
JEditorPane&JTextPane& в ограниченной степени использует HTML в некоторых другихJComponents. AWT не поддерживает стилизованные документы ни в одном компоненте.AWT не предоставляет структуру на основе дерева, как
JTree, нет табличной структуры, такой какJTableверсияJToolBar.
AWT не имеет эквивалента (который я могу найти или вспомнить) для
JColorChooser& нет для простого служебного класса -JOptionPane.
слушатель
как уже упоминалось в комментарии, см. 20 + дополнительных / альтернативных слушателей в .
Pluggable Look & Feel
компоненты качания можно установить к определенному взгляду & чувствовать на времени выполнения, включая родной ПЛАФ.
смотрите снимки экрана на Пример Вложенного Макета для некоторых других образцов.
макеты
в дополнение к множеству макетов AWT, Swing обеспечивает:
BoxLayoutGroupLayoutOverlayLayoutScrollPaneLayoutSpringLayoutViewportLayoutдругое
- ключ Фурнитура. Смотрите как использовать привязки клавиш для сведения.
UndoManagerдля возможности отмены / повтора в редактируемых документах.- встроенный двойная буферизация чтобы избежать мерцания при перекраске.
SwingWorkerдля отзывчивых графических интерфейсов.
вероятно, в этом кратком описании я пропустил гораздо больше, но суть в том, что Swing является совершенно новым и более активным Графический инструментарий.
качели оба строит,и сильно зависит от классов в AWT.
качели Java принимают ActionListeners, которые являются частью пакета AWT. Если вы хотите использовать swing, вы должны использовать какую-то форму AWT ActionListener. Это просто способ, которым вещи. Я не предлагаю использовать Java вообще для сложных графических интерфейсов, но и не сказал бы, что AWT устарел, так как нет прямой замены. Таким образом, просто идти вперед и использовать AWT.
в качестве альтернативы вы можете заглянуть в JOGL, но это больше, если вы пытаетесь создать что-то игровое.
Это небольшой пример, который может продемонстрировать, использование javax.качать.Действие вы также должны обратиться к Java doc для javax.качать.событие пакет я думаю, что вы находите, что . . .
import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.JToolBar; class SysOutHelloAction extends AbstractAction { private static final Icon printIcon = new ImageIcon("Print.gif"); SysOutHelloAction() { super("Print", printIcon); putValue(Action.SHORT_DESCRIPTION, "Hello, World"); } public void actionPerformed(ActionEvent actionEvent) { System.out.println("Hello, World"); } } public class SwingActionTester { public static void main(String args[]) { JFrame frame = new JFrame("Action Sample"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); final Action printAction = new SysOutHelloAction(); JMenuBar menuBar = new JMenuBar(); JMenu menu = new JMenu("File"); menuBar.add(menu); menu.add(new JMenuItem(printAction)); JToolBar toolbar = new JToolBar(); toolbar.add(new JButton(printAction)); JButton enableButton = new JButton("Enable"); ActionListener enableActionListener = new ActionListener() { public void actionPerformed(ActionEvent actionEvent) { printAction.setEnabled(true); } }; enableButton.addActionListener(enableActionListener); JButton disableButton = new JButton("Disable"); ActionListener disableActionListener = new ActionListener() { public void actionPerformed(ActionEvent actionEvent) { printAction.setEnabled(false); } }; disableButton.addActionListener(disableActionListener); JButton relabelButton = new JButton("Relabel"); ActionListener relabelActionListener = new ActionListener() { public void actionPerformed(ActionEvent actionEvent) { printAction.putValue(Action.NAME, "Changed Action Value"); } }; relabelButton.addActionListener(relabelActionListener); JPanel buttonPanel = new JPanel(); buttonPanel.add(enableButton); buttonPanel.add(disableButton); buttonPanel.add(relabelButton); frame.setJMenuBar(menuBar); frame.add(toolbar, BorderLayout.SOUTH); frame.add(buttonPanel, BorderLayout.NORTH); frame.setSize(300, 200); frame.setVisible(true); } }
вы правы. И Java AWT, и Java Spring устарели. Вместо этого используйте JavaFX.
И, как комментарий, Я разочарован Java, что он должен был быть "писать один раз везде", когда теперь он оказывается "должен продолжать переписывать ваше приложение каждые три месяца", потому что новые выпуски Java ломают предыдущий код, а новые пакеты заменяют старый.



Comments