190 likes | 299 Views
Прозорец – клас JFrame ( javax.swing ) public JFrame(String title) Създава прозорец със заглавие title . public void setDefaultCloseOperation( int oper) Установява операцията при затваряне на прозореца. JFrame.DO_NOTHING_ON_CLOSE нищо JFrame.HIDE_ON_CLOSE скрий прозореца
E N D
Прозорец – класJFrame(javax.swing) public JFrame(String title) Създава прозорец със заглавиеtitle. public void setDefaultCloseOperation(int oper) Установява операцията при затваряне на прозореца. JFrame.DO_NOTHING_ON_CLOSE нищо JFrame.HIDE_ON_CLOSEскрий прозореца JFrame.DISPOSE_ON_CLOSEосвободи прозореца JFrame.EXIT_ON_CLOSE завърши приложението public Container getContentPane() Връща обект от класа Container със съдържанието на фрейма. public void setContentPane(Container contentPane) Установява съдържанието на фрейма. oper =
Изпълнение на приложение: В метода mainсе създава фрейм и се изпълнява асинхронно в отделна нишка. public staticvoid main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { new <конструктор на фрейм>(); } }); }
Събития • Всички събития за компонент • ComponentEvent • FocusEvent • KeyEvent • MouseEvent • MouseMotionEvent • MouseWheelEvent • Събития с прозорци • клас WindowEvent • активен прозорец • затваряне при разрушаване • затваряне от системното меню • неактивен прозорец • промяна от икона в нормален вид • промяна от нормален вид в икона • отваряне на прозорец
интерфейс WindowListener или адаптерен класWindowAdapter • добавяне на слушател lза събитието WindowsEvent към компонентата • publicvoid addWindowListener(WindowListener l)
Менажери на разположението • Менажер на разположението • обект, който управлява разполагането на компонентите в контейнера; • определя размера и разположението на всяка компонента; • установява се за контейнер чрез метода • publicvoid setLayout(LayoutManager layout) • ИнтерфейсLayoutManager(java.awt) • дефинира интерфейс за класове, които разполагат компонентите в контейнери.
Видове менажери • BorderLayout • BoxLayout • CardLayout • FlowLayout • GridBagLayout • GridLayout • SpringLayout • GroupLayout
КласBorderLayout(java.awt) • Разполага компонентите в пет области: • горна PAGE_START • долна PAGE_END • лява LINE_START • дясна LINE_END • централна CENTER Това е подразбиращият се менажер заJFrame. PAGE_START CENTER LINE_START LINE_END PAGE_END
c1 c3 c2 c4 c5 // Установява менажер на разположението Container container = getContentPane(); BorderLayout layout = new BorderLayout(); container.setLayout(layout); // Разполага компонентите вконтейнера container.add(c1, BorderLayout.PAGE_START); container.add(c2, BorderLayout.LINE_START); container.add(c3, BorderLayout.CENTER); container.add(c4, BorderLayout.LINE_END); container.add(c5, BorderLayout.PAGE_END);
КласFlowLayout (java.awt) Разполага компонентите в поток от ляво надясно. Обикновено се използва за аранжиране на бутони в панел. Всяка линия се центрира. Това е подразбиращият се менажер за JPanel. public FlowLayout() public FlowLayout(int alignment) public FlowLayout(int alignment, int horizontalGap, int verticalGap) alignment – подравняване: отляво, центрирано (по подразбиране), отдясно; определя се чрез константите:LEADING, CENTER, TRAILING; horizontalGap,verticalGap– брой пиксели между компонентите (5 пиксела по подразбиране).
c1 c2 c3 c4 c5 // Установява менажер на разположението Container container = getContentPane(); FlowLayout layout = new FlowLayout(); container.setLayout(layout); // Разполага компонентите в контейнера container.add(c1); container.add(c2); container.add(c3); container.add(c4); container.add(c5);
Клас GridLayout (java.awt) • Разполага компонентите в мрежа от елементи с еднакви размери. • public GridLayout (int rows,intcols) • public GridLayout (int rows,intcols,inthgap,intvgap) • rows, cols – брой реда/стълба; • допуска rows = 0 или cols = 0 • (не едновременно 0); • rowsе с приоритет предcols; • hgap,vgap– хоризонтално/вертикално празно пространство.
// Установява менажер на разположението Container container = getContentPane(); GridLayout layout = new GridLayout(3, 2); container.setLayout(layout); new GridLayout(2,3)или new GridLayout(2,2) new GridLayout(3,2) new GridLayout(1,0) new GridLayout(0,1)
Бутон– класJButton (javax.swing) Създава бутон. public JButton() КонструираJButtonбез етикет. public JButton(String label) КонструираJButtonс определен етикет label. • Събитиес действие • Клас ActionEvent • public string getActionCommand() • Връща командния низ, свързан с това действие. • ИнтерфейсActionListener • public interface ActionListener { • // Извиква се при вдигане на събитието ActionEvent, показва източника • // и потребителят описва действието, което трябва да се предприеме. • void actionPerformed (ActionEvent e); • } • Добавя слушател lза събитието ActionEvent • public void addActionListener(ActionListener l)
Етикет –класJLabel(javax.swing) Изобразява област за къс текст, изображение или и двете. Не реагира на входни събития. public JLabel(String text) Създава етикет с определен текстtext. public void setForeground(Color color) Установява цвета colorна текста на етикет.
JLabel label JFrame JButton button Пример: Приложение, което при всяко натискане на бутон променя цвета на текста на етикет в черен, син, червен. Използва събитиетоActionEvent заJButton, което се обработва от метода actionPerformed на интерфейса ActionListener.
Импорт на пакетитеjava.swing,java.awt иjava.awt.event. • Класът ButtonDemo наследява класаJFrameи реализира интерфейсаActionListener. • Декларация на променливи • а) бутон button; • б) етикет label; • в) цвят color. • Конструктор • извиква конструктора на супер класа – прозорец със заглавие „Фрейм“ • установява завършване на приложението при затваряне на прозореца • получава съдържанието на фрейма • създава етикет с текст „Добре дошли!“ • създава бутон с текст „Смени цвета“ • добавя етикета в горната част на фрейма • добавя бутона в долната част на фрейма • добавя слушател на събития при натискане на бутон, като • самият фрейм е слушател • установява размера на фрейма 150x100 • установява видим фрейм • установява черен цвят • установява цвета на текста на етикета
Реализира метода actionPerformed на събитието „натиснат бутон“ • ако цветът е черен • цвят син • в противен случай ако цветът е син • цвят червен • в противен случай • цвят черен • установява цвета на текста на етикета • Реализира методаmain
import javax.swing.*; import java.awt.*; import java.awt.event.*; public class ButtonDemo extends JFrame implements ActionListener { private JButton button; private JLabel label; private Color color; public ButtonDemo() { super("Фрейм"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container container = getContentPane(); label = new JLabel("Добре дошли!"); button = new JButton("Смени цвета"); container.add(label, BorderLayout.PAGE_START); container.add(button, BorderLayout.PAGE_END); button.addActionListener(this);// Добавя слушател на събитието setSize(150,100); setVisible(true); color = Color.BLACK; label.setForeground(color); }
// Извиква се автоматично при вдигане на събитието // „натиснат бутон“ public void actionPerformed(ActionEvent evt) { if(color == Color.BLACK) color = Color.BLUE; else if(color == Color.BLUE) color = Color.RED; else color = Color.BLACK; label.setForeground(color); } public static void main(String[] args) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new ButtonDemo(); } }); } }