java swing tutorial container
Този изчерпателен видео урок Java Swing обяснява различни компоненти на GUI Swing Framework и свързани понятия като JPanel, JFrame, JButton и др.:
Използваме графични потребителски интерфейси (често наричани GUI) за изграждане на приложения, които имат визуален интерфейс, като улесняваме потребителя да използва приложението.
Наличието на визуален интерфейс за приложение прави приложението лесно за навигация, по-ефективно използване на контролите, а освен това е визуално привлекателно за потребителя.
Swing се използва главно за създаване на GUI за приложения.
=> Посетете тук, за да видите серията за обучение за Java за всички.
Какво ще научите:
- Видео урок за Java Swing
- Какво е Java Swing
- Java Swing компоненти
- Swing класове в Java
- Люлка срещу JavaFX
- Заключение
Видео урок за Java Swing
Какво е Java Swing
Java предоставя много GUI рамки, които ни помагат при разработването на разнообразни GUI приложения. Виждали сме такъв в предишния ни урок, т.е. Абстрактни инструменти за прозорци или AWT. AWT е една от най-старите GUI рамки в Java и също зависи от платформата. Друг недостатък на AWT са неговите тежки компоненти.
В този урок ще обсъдим още една GUI рамка в Java, т.е. „SWING“. Рамката Swing в Java е част от Java Foundation Classes или често наричани JFC. JFC е API, подобен на MFC (Microsoft Foundation Classes) в C ++. JFC съдържа Swing, AWT и Java2D.
Рамката Swing в Java е изградена върху AWT рамката и може да се използва за създаване на GUI приложения точно като AWT. Но за разлика от AWT, компонентите Swing са леки и не зависят от платформата.
Рамката Swing е написана изцяло на Java. Рамката Swing в Java се предоставя чрез пакета ‘javax.swing’. Класовете в пакета javax.swing започват с буквата „J“. Така че в пакет javax.swing ще имаме класове като JButton, JFrame, JTextField, JTextArea и т.н.
Като цяло, Swing API има всеки контрол, дефиниран в пакета javax.swing, който присъства в AWT. Така че люлката по някакъв начин действа като заместител на AWT. Също така, Swing има различни разширени панели с раздели на компоненти. Swing API в Java адаптира MVC (Model View Controller) архитектура.
Основните характеристики на тази архитектура са:
- Данните на люлеещия се компонент се представят с помощта на Model.
- Той е визуално представен с помощта на изглед.
- Компонентът на контролера на архитектурата MVC чете входа от потребителя в изгледа и след това тези промени се предават на данните на компонента.
- Във всеки Swing компонент изгледът и контролерът са свързани заедно, докато моделът е отделен. Това дава на Swing възможност за включване на външен вид и усещане.
Характеристиките на swing API са обобщени по-долу.
- Swing компонентите са независими от платформата.
- API може да се разширява.
- Люлеещите компоненти са леки. Swing компонентите са написани на чиста Java, а също така компонентите се изобразяват с помощта на Java код вместо основните системни повиквания.
- Swing API предоставя набор от усъвършенствани контроли като TabbedPane, Tree, Colorpicker, контроли за маса и т.н., които са богати на функционалност.
- Контролите за люлеене са много персонализирани. Това е така, защото външният вид или външният вид на компонента е независим от вътрешното представяне и следователно можем да го персонализираме по начина, по който желаем.
- Можем просто да променим стойностите и по този начин да променим външния вид и усещането по време на изпълнение.
Java Swing компоненти
Swing има голям набор от компоненти, които можем да включим в нашите програми и да се възползваме от богатите функционалности, използвайки които можем да разработим силно персонализирани и ефективни GUI приложения.
И така, какво е компонент?
Компонентът може да бъде дефиниран като контрола, която може да бъде представена визуално и обикновено е независима. Той има специфична функционалност и е представен като индивидуален клас в Swing API.
Например, class JButton in swing API е компонент на бутон и осигурява функционалността на бутон.
Един или повече компоненти образуват група и тази група може да бъде поставена в „Контейнер“. Контейнерът осигурява пространство, в което можем да показваме компоненти и също така да управляваме тяхното разстояние, оформление и т.н.
В Java контейнерите са разделени на два типа, както е показано по-долу:
Swing класове в Java
Йерархията на Swing API в Java е показана по-долу:
Както се вижда от горната йерархия, имаме класове Container - фрейм, диалогов прозорец, панел, аплет и т.н. Има и класове Component, получени от класа JComponent на Swing API. Някои от класовете, които наследяват от JComponent, са JLabel, JList, JTextBox и др.
Някои от важните класове на Swing API са както следва:
- JWindow: Класът JWindow на Swing наследява директно класа Window. Класът JWindow използва „BorderLayout“ като оформление по подразбиране.
- JPanel: JPanel е потомък на клас JComponent и е на подобни линии като панел AWT клас и има „FlowLayout“ като оформление по подразбиране.
- JFrame: JFrame произлиза от клас Frame. Компонентите, добавени към Frame, се наричат съдържание на Frame.
- JLabel: Класът JLabel е подклас на JComponent. Използва се за създаване на текстови етикети в приложението.
- JButton: Функционалността на бутоните в Swing се осигурява от JButton. Можем да свържем низ, икона или и двете с обекта JButton.
- JTextField: Класът JTextField предоставя текстово поле, в което можем да редактираме един ред текст.
JFrame в Java
Като цяло рамката е контейнер, който може да съдържа други компоненти като бутони, етикети, текстови полета и др. Прозорецът на рамката може да съдържа заглавие, граница, както и менюта, текстови полета, бутони и други компоненти. Приложението трябва да съдържа рамка, така че да можем да добавяме компоненти вътре в него.
Рамката в Java Swing е дефинирана в клас javax.swing.JFrame. Класът JFrame наследява класа java.awt.Frame. JFrame е като главния прозорец на GUI приложението, използвайки суинг.
Можем да създадем обект на прозорец JFrame, използвайки два подхода:
c програмиране на интервю въпроси и отговори
# 1) Чрез разширяване на класа JFrame
Първият подход е създаването на нов клас за конструиране на Frame. Този клас наследява от класа JFrame на пакета javax.swing.
Следната програма прилага този подход.
import javax.swing.*; class FrameInherited extends JFrame{ //inherit from JFrame class JFrame f; FrameInherited(){ JButton b=new JButton('JFrame_Button');//create button object b.setBounds(100,50,150, 40); add(b);//add button on frame setSize(300,200); setLayout(null); setVisible(true); } } public class Main { public static void main(String() args) { new FrameInherited(); //create an object of FrameInherited class } }
Изход:
# 2) Чрез инстанциране на класа JFrame
import javax.swing.*; public class Main { public static void main(String() args) { JFrame f=new JFrame('JFrameInstanceExample');//create a JFrame object JButton b=new JButton('JFrameButton');//create instance of JButton b.setBounds(100,50,150, 40);//dimensions of JButton object f.add(b);//add button in JFrame f.setSize(300,200);//set frame width = 300 and height = 200 f.setLayout(null);//no layout manager specified f.setVisible(true);//make the frame visible } }
Изход:
В горната програма създадохме рамка от класа JFrame чрез създаване на екземпляр на класа JFrame.
JPanel в Java
Панелът е компонент, който се съдържа вътре в рамков прозорец. Рамката може да има повече от един панелен компонент вътре, като всеки панелен компонент има няколко други компонента.
По-лесно можем да използваме панели за разделяне на рамката. Всеки панел групира няколко други компонента вътре в него. С други думи, ние използваме панели за организиране на компоненти вътре в рамката.
Класът API на swing, който реализира панелния компонент, е JPanel. Класът JPanel наследява от JComponent и има FlowLayout като оформление по подразбиране.
Следващата програма демонстрира създаването на панелен контейнер в рамка, използвайки класовете на пакета javax.swing.
import javax.swing.*; class JPanelExample { JPanelExample(){ JFrame frame = new JFrame('Panel Example'); //create a frame JPanel panel = new JPanel(); //Create JPanel Object panel.setBounds(40,70,100,100); //set dimensions for Panel JButton b = new JButton('ButtonInPanel'); //create JButton object b.setBounds(60,50,80,40); //set dimensions for button panel.add(b); //add button to the panel frame.add(panel); //add panel to frame frame.setSize(400,400); frame.setLayout(null); frame.setVisible(true); } } public class Main { public static void main(String() args) { new JPanelExample(); //create an object of FrameInherited class } }
Изход:
Тук имаме рамка. Вътре в рамката създаваме панел. След това вътре в панела създаваме бутон. По този начин можем да използваме панел за задържане на останалите компоненти.
JTextArea в Java
TextArea дефинира текстово поле, което може да се редактира. Може да има няколко реда. Класът суинг, който дефинира текстовата област, е JTextArea и наследява класа JTextComponent.
публичен клас JTextArea разширява JTextComponent
Класът JTextArea съдържа 4 конструктора, които ни позволяват да създадем текстова област с различни опции.
- JTextArea (): Конструктор по подразбиране. Създайте празна текстова област.
- JTextArea (низове): Създава текстово поле със s като стойност по подразбиране.
- JTextArea (int ред, int колона): Създава текстова област с посочен ред x колона.
- JTextArea (String s, int ред, int колона): Създава текст are2a с посочен ред x колона и стойност по подразбиране s.
Следващата програма Java показва пример за компонента JTextArea в люлката.
import javax.swing.*; class JTextAreaExample { JTextAreaExample(){ JFrame frame= new JFrame(); JTextArea t_area=new JTextArea('JTextArea example'); //create object of JTextArea t_area.setBounds(10,30, 150,100); //set its dimensions frame.add(t_area); //add it to the frame frame.setSize(200,200); frame.setLayout(null); frame.setVisible(true); } } public class Main { public static void main(String() args) { new JTextAreaExample(); //create an object of TextAreaExample class } }
Изход:
JButton в Java
Бутонът е компонент, който се използва за създаване на бутон с име или етикет върху него. В суинг класът, който създава етикетиран бутон, е JButton. JButton наследява класа AbstractButton. Можем да свържем събитието ActionListener с бутона, за да го накараме да предприеме някакви действия, когато бъде натиснато.
Нека да приложим примерна програма за JButton в люлките на Java.
import javax.swing.*; public class Main { public static void main(String() args) { JFrame frame=new JFrame('JButton Example'); //create JFrame object JButton button=new JButton('Button'); //Create a JButton object button.setBounds(50,50,75,35); //set dimensions for button frame.add(button); //add button to the frame frame.setSize(250,200); frame.setLayout(null); frame.setVisible(true); } }
Изход:
JList в Java
Списъкът се състои от множество текстови елементи. Потребителите могат да избират един или няколко елемента едновременно. Класът, който реализира списъка в swing API е JList. JList е потомък на класа JComponent.
По-долу са дадени конструкторите на класа JList.
- JList (): Конструктор по подразбиране, който създава празен списък, само за четене.
- JList (масив () listItem): Създайте JList, който първоначално съдържа елементи от масива listItem.
- JList (ListModel dataModel): Създава списък с елементи от посочения модел dataModel.
Една проста демонстрация на компонента JList е дадена по-долу.
import javax.swing.*; public class Main { public static void main(String() args) { JFrame frame= new JFrame('JList Example'); //create a list model and add items to it DefaultListModel colors = new DefaultListModel<>(); colors.addElement('Red'); colors.addElement('Green'); colors.addElement('Blue'); //create JList object and add listModel to it JList colorsList = new JList<>(colors); colorsList.setBounds(100,100, 75,50); frame.add(colorsList); //add list to the frame frame.setSize(400,400); frame.setLayout(null); frame.setVisible(true); } }
Изход:
В горната програма първо дефинираме listModel с цветни записи в него. След това създаваме обект JList и добавяме listModel към него. След това обектът JList се добавя към рамковия обект, който след това се показва.
JComboBox в Java
Класът JCombobox показва списък с възможности за избор, от които потребителят може да избере опция. Избраният избор е отгоре. JComboBox произлиза от класа JComponent.
По-долу са конструкторите, предоставени от класа JComboBox:
- JComboBox (): Конструктор по подразбиране, който създава ComboBox с модела на данни по подразбиране.
- JComboBox (обект () елементи): Този конструктор създава ComboBox, съдържащ елементи като елементи на дадените елементи от масива.
- JComboBox (векторни елементи): Този конструктор чете елементите на дадения вектор и конструира ComboBox с тези елементи като негови елементи.
Класът JComboBox също предоставя методи за добавяне / премахване на елементи, добавяне на ActionListener, ItemListener и др.
Следващият пример демонстрира внедряването на JComboBox в Java.
import javax.swing.*; class ComboBoxExample { JFrame frame; ComboBoxExample(){ frame=new JFrame('ComboBox Example'); //create a string array String country()={'India','SriLanka','Singapore','Maldives','SeyChelles'}; //create a combobox object with given string array JComboBox countries=new JComboBox(country); countries.setBounds(50, 50,90,20); frame.add(countries); //add it to the frame frame.setLayout(null); frame.setSize(200,300); frame.setVisible(true); } } public class Main { public static void main(String arg()) { new ComboBoxExample(); } }
Изход:
JSlider в Java
Плъзгачът ни позволява да изберем определен диапазон от стойности. В Java Swing API JSlider е класът, който се използва за реализиране на плъзгача.
По-долу са конструкторите, предоставени от клас JSlider.
- JSlider (): Конструктор по подразбиране, който създава плъзгач с 50 като начална стойност и диапазон 0 -100.
- JSlider (int ориентация): Този конструктор създава плъзгач точно както по-горе, но с определена ориентация. Стойността за ориентация може да бъде JSlider.HORIZONTAL или JSlider.VERTICAL.
- JSlider (int min, int max): Този конструктор се използва за създаване на хоризонтален плъзгач, като се използват дадените min и max.
- JSlider (int min, int max, int value): Този конструктор създава плъзгач, който е хоризонтален с посочената стойност на min, max и value.
- JSlider (int ориентация, int min, int max, int стойност): Този конструктор конструира плъзгач с определена ориентация, min, max и стойност.
Следващата програма демонстрира JSlider в Java с отметки. Тази програма също демонстрира използването на методите, поддържани от класа JSlider.
import javax.swing.*; class SliderExample extends JFrame { public SliderExample() { //create a slider object JSlider slider = new JSlider(JSlider.HORIZONTAL, 0, 50, 25); //set major and minor ticks for the slider slider.setMinorTickSpacing(2); slider.setMajorTickSpacing(10); slider.setPaintTicks(true); slider.setPaintLabels(true); JPanel panel = new JPanel(); panel.add(slider); //add slider to the panel add(panel); } } public class Main{ public static void main(String s()) { SliderExample frame=new SliderExample(); frame.pack(); frame.setVisible(true); } }
Изход:
Обработка на събития в Java
Събитие може да се определи като промяна на състоянието на обект. От гледна точка на GUI, събитие се случва, когато крайният потребител взаимодейства с компонентите на GUI. Събитията, които се задействат в GUI, могат да бъдат щракване на бутон, превъртане, избор на елементи от списъка, промяна на текст и т.н.
Събитията в GUI, изброени по-горе, са предимно събития от преден план. Можем да имаме и някои фонови събития като завършване на фонова операция, изтичане на таймера и т.н.
Обработката на събития е механизъм, чрез който се предприема действие при настъпване на събитие. За това дефинираме метод, който също се нарича манипулатор на събития, който се извиква, когато настъпи събитие. Java използва стандартен механизъм, наречен „Модел на делегиране на събития“, за да генерира, както и да обработва събития.
Моделът на събитието за делегиране се състои от:
# 1) Източник: Източникът на събитието е обектът. Обектът, върху който се случва събитието, е източникът и източникът е отговорен за изпращането на информация за събитието до манипулатора на събитието.
# 2) Слушател: Слушателят не е нищо друго освен манипулатора на събития, отговорен за предприемането на действие, когато се случи събитие. В Java слушателят е обект, който чака дадено събитие. След като събитието настъпи, слушателят обработва събитието.
Изискването е да регистрирате слушателя с обекта, така че когато настъпи събитие, слушателят да може да го обработи.
Например,за събитие с щракване върху бутон можем да имаме следната последователност от стъпки.
- Потребителят щраква върху бутона, който генерира събитие Click.
- Създава се подходящият обект на клас събитие и данните за източника и събитието се предават на този обект.
- След това този обект на събитие се предава на класа слушател, регистриран с обекта.
- Слушателят изпълнява и се връща.
Сега нека обсъдим някои от слушателите, предоставени от Java.
ActionListener в Java
ActionListener е слушателят за бутон или елемент от менюто. Когато щракнем върху бутон, включеният слушател на бутон е actionListener. ActionListener е уведомен в ActionEvent.
Пакетът за събития java.awt.an дефинира интерфейса ActionListener. Този интерфейс има само един метод actionPerformed ().
публично абстрактно void actionPerformed (ActionEvent e);
Когато се щракне върху регистриран компонент като Бутон, тогава автоматично се извиква методът actionPerformed ().
Най-често срещаният подход за включване на ActionListener в програмата е да се приложи интерфейсът ActionListener и след това да се приложи методът actionPerformed ().
Стъпките за внедряване на клас ActionListener са както следва:
# 1) Прилагане на интерфейса ActionListerner.
публичен клас ActionListenerImpl Прилага ActionListener
# 2) Регистрирайте компонента с този слушател. Ако бутонът е компонент, който искаме да регистрираме в слушателя, тогава ще го регистрираме, както следва:
button.addActionListener (instanceOfListenerclass);
# 3) Прилагане / замяна на метода actionPerformed ().
public void actionPerformed (ActionEvent e){ //code to perform action }
Така че, използвайки горните стъпки, можем да свържем всяко събитие с компонента на GUI.
Следващият пример демонстрира събитие за щракване с помощта на ActionListener.
import javax.swing.*; import java.awt.event.*; public class Main { public static void main(String() args) { JFrame frame=new JFrame('Button Click Example'); final JTextField text_field=new JTextField(); //JTextField object text_field.setBounds(50,100, 150,20); JButton click_button=new JButton('Click Me!!!'); //JButton object click_button.setBounds(20,50,75,30); click_button.addActionListener(new ActionListener(){ //add an event and take action public void actionPerformed(ActionEvent e){ text_field.setText('You Clicked the button'); } }); //add button and textfield to the frame frame.add(click_button);frame.add(text_field); frame.setSize(400,400); frame.setLayout(null); frame.setVisible(true); } }
Изход:
Горната програма реализира ActionListener събитие. Събитието е събитие за щракване с бутон и с него сме свързали ActionListener, който показва текста в текстовото поле при щракване върху бутона.
KeyListener в Java
Когато има промяна в състоянието на ключа, се уведомява KeyListener. Подобно на ActionListener, KeyListener се намира и в пакета java.awt.event.
как да отворя eps файлове -
Интерфейсът KeyListener предоставя следните методи:
публичен абстрактен void keyPress (KeyEvent e);
публичен абстрактен void keyReleased (KeyEvent e);
публичен абстрактен void keyTyped (KeyEvent e);
Трябва да приложим горните методи, за да свържем ключовите събития с компонента. Оставяме на потребителя да внедри пример на KeyListener, използвайки люлки в Java.
Swing Layouts в Java
Когато подреждаме различни компоненти в контейнер, тогава казваме, че разполагаме тези компоненти. Така че оформлението може да бъде определено като позициониране на компонентите в контейнер.
Докато има по-малко компоненти, те могат да бъдат поставени чрез ръчно плъзгане. Но става трудно да се подредят компонентите с голям брой. В този момент на помощ ни идва Layout Manager на Java.
LayoutManager отговаря за оформлението на компонентите в GUI приложенията. LayoutManager е интерфейс и се прилага от всички класове на мениджър на оформление. Java предоставя следните класове на LayoutManager.
LayoutManager | Описание |
---|---|
javax.swing.GroupLayout | Групирайте компонентите и след това ги позиционирайте в контейнера. |
java.awt.BorderLayout | Компонентите са разположени в пет посоки, а именно център, изток, запад, юг, север. |
java.awt.FlowLayout | Това е оформлението по подразбиране. Той полага компонентите в насочения поток. |
java.awt.GridLayout | Подрежда компонентите в правоъгълна мрежа. |
javax.swing.BoxLayout | Компонентите са подредени в кутия. |
java.awt.CardLayout | Всеки компонент се разглежда като карта в тесте и в даден момент се вижда само един компонент. |
java.awt.GridBagLayout | Подрежда компонентите вертикално, хоризонтално или дори по техните базови линии. Не е необходимо компонентите да са с еднакъв размер. |
javax.swing.ScrollPaneLayout | Използва се от класа JScrollPane и е отговорен за подреждането на компоненти в превъртащи се контейнери. |
javax.swing.SpringLayout и др. | Осигурен е набор от ограничения като хоризонталното и вертикалното разстояние между компонентите и т.н. и компонентите са подредени в съответствие с този набор от ограничения. |
В този урок ще обсъдим само FlowLayout и GridLayout.
FlowLayout в Java
FlowLayout подрежда компонентите в посока на потока, един след друг. Това е оформлението по подразбиране за контейнерите като панел и аплет.
Класът FlowLayout в Java, който представлява мениджъра FlowLayout, съдържа следните полета и конструктори.
Полета от клас FlowLayout
- публичен статичен финал int LEADING
- публичен статичен финал int TRAILING
- публичен статичен финал int НАЛЯВО
- публичен статичен финал int НАДЯСНО
- публичен статичен финал int ЦЕНТЪР
Горните полета определят позициите, на които компонентите ще бъдат поставени или подравнени.
Конструктори от клас FlowLayout
- FlowLayout (): Това е конструктор по подразбиране. Този конструктор създава оформление на потока с централно подравнени компоненти с интервал по подразбиране от 5 единици в хоризонтална и вертикална посока.
- FlowLayout (int align): Този конструктор създава оформление на потока с посочената стойност на подравняване и с хоризонтална и вертикална разлика от 5 единици.
- FlowLayout (int align, int hgap, int vgap): Създава оформление на потока с определена стойност на подравняване и хоризонтална и вертикална междина.
По-долу е даден пример за FlowLayout в Java.
import javax.swing.*; import java.awt.*; class FlowLayoutClass { JFrame frame; FlowLayoutClass() { frame = new JFrame('FlowLayout Example'); //create button components JButton b1 = new JButton('A'); JButton b2 = new JButton('B'); JButton b3 = new JButton('C'); JButton b4 = new JButton('D'); JButton b5 = new JButton('E'); //add components to the frame frame.add(b1); frame.add(b2); frame.add(b3); frame.add(b4); frame.add(b5); //set layout as 'FlowLayout.CENTER' frame.setLayout(new FlowLayout(FlowLayout.CENTER)); //setting flow layout of right alignment frame.setSize(300, 300); frame.setVisible(true); } } public class Main{ public static void main(String() args) { new FlowLayoutClass(); } }
Изход:
GridLayout в Java
Използвайки GridLayout, можем да разположим компонентите по правоъгълен начин, т.е. всеки компонент е подреден във всеки правоъгълник.
Конструктори от клас GridLayout
- GridLayout (): конструктор по подразбиране, който генерира решетка с една колона на един компонент в ред.
- GridLayout (int редове, int колони): Този конструктор генерира оформление на мрежата с посочени редове и колони. Няма празнина между компонентите.
- GridLayout (int редове, int колони, int hgap, int vgap): Използвайки този конструктор, генерираме оформление на мрежа с определени редове и колони и хоризонтални и вертикални пропуски.
Следващият пример реализира GridLayout в Java.
import javax.swing.*; import java.awt.*; class GridLayoutClass { JFrame frame; GridLayoutClass() { frame=new JFrame('GridLayout Example'); //create components to be laid out as per GridLayout JButton b1=new JButton('P'); JButton b2=new JButton('Q'); JButton b3=new JButton('R'); JButton b4=new JButton('S'); JButton b5=new JButton('T'); JButton b6=new JButton('U'); JButton b7=new JButton('V'); JButton b8=new JButton('W'); JButton b9=new JButton('X'); //add components to the frame frame.add(b1);frame.add(b2);frame.add(b3);frame.add(b4);frame.add(b5); frame.add(b6);frame.add(b7);frame.add(b8);frame.add(b9); //set frame layout to GridLayout of 3 rows and 3 columns frame.setLayout(new GridLayout(3,3)); frame.setSize(300,300); frame.setVisible(true); } } public class Main{ public static void main(String() args) { new GridLayoutClass(); } }
Изход:
Затруднения в Java
Ако проверим примерите за програмиране в този урок преди темата за оформлението, можем да видим, че сме задали оформлението като null в тези примери (setLayout (null)). Видяхме, че когато използваме мениджъри за оформление в нашата програма, те автоматично позиционират компонентите.
Когато мениджърите на оформление не се използват, можем да използваме метода setBounds за размера и позицията на компонента. Така че методът setBounds се използва за ръчно позициониране на компонента и за задаване на размера.
Общият синтаксис на метода setBounds е както следва:
setBounds (int x-координата, int y - координата, int ширина, int височина)
Нека сега да приложим пример за метода SetBounds.
import javax.swing.*; public class Main { public static void main(String arg()) { JFrame frame = new JFrame('SetBounds Method Test'); frame.setSize(375, 250); // Set layout as null frame.setLayout(null); // Create a Button JButton button = new JButton('ButtonWithSetBounds'); // Set position and size of a button using setBounds button.setBounds(80,30,200,40); frame.add(button); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLocationRelativeTo(null); frame.setVisible(true); } }
Изход:
коя е най-добрата операционна система за компютър
В горната програма имаме компонент Button. Не сме задали оформление, но използваме метода setBounds, за да зададем неговото положение и размери.
Люлка срещу JavaFX
Люлка | JavaFX |
---|---|
Swing предоставя API за създаване на GUI компоненти. | JavaFX осигурява скриптове и бързо разработване на потребителски интерфейс, свързани с конструктора на екрани. |
Няма да има добавена нова функционалност към Swing в бъдещите версии. | JavaFX предоставя богата функционалност и има потенциал за повече функции в бъдещите версии. |
Можем да създадем всички стандартни компоненти, използвайки Swing API. | JavaFX ни позволява да създаваме богати GUI компоненти, използвайки усъвършенстван външен вид. |
Голям брой компоненти присъстват в Swing. | JavaFX има сравнително по-малък брой компоненти. |
Swing е напълно функционална UI библиотека. | JavaFX е нов и предстоящ API с богати UI компоненти. |
Swing има разхлабена MVC поддръжка. | JavaFX поддържа последователно MVC модел. |
често задавани въпроси
В # 1) Swing все още ли се използва в Java?
Отговор: Да, Swing все още се използва в Java и това твърде силно. Понякога се използва като пълен заместител на AWT. Понякога се използва и заедно с някои от компонентите на AWT. Той дори се използва с най-новия JavaFX. Така че Swing все още се използва и ще се използва още дълго време.
В # 2) Как работи Java Swing?
Отговор: Swing в Java е написан върху AWT рамката. Така че обработката на събития на AWT се наследява чрез пълна люлка. Swing също така предоставя голям брой компоненти, които можем да използваме за разработване на ефективни GUI приложения.
В # 3) Следва ли Swing MVC?
Отговор: Swing API има разхлабена MVC поддръжка. Моделът представя данните на компонента. Swing компонентът има отделен елемент, наречен Model, докато Controller и View са събрани в елементи на потребителския интерфейс. Този клабинг позволява на люлката да има външен вид и усещане.
В # 4) JavaFX по-добър ли е от Swing?
Отговор: Swing съществува отдавна и има по-зряла IDE поддръжка. Освен това имаше много голяма библиотека от компоненти. JavaFX е сравнително по-нов и има малка библиотека от компоненти, но с по-последователни актуализации и последователна поддръжка на MVC. По този начин зависи от това как JavaFX се развива по-нататък и предоставя повече функции.
В # 5) Кое е по-добро AWT или Swing?
Отговор: Swing е изграден върху AWT и осигурява богат и голям набор от UI компоненти в сравнение с AWT. Люлеещите се компоненти също могат да имат своя външен вид и усещане в сравнение с компонентите на AWT, които придават вид и усещане на операционната система.
Swing компонентите са по-бързи от AWT. Всички тези фактори правят люлката по-добра от AWT.
Повече за Java Swing
Когато създавате приложение, първоначално трябва да имате основен контейнер и трябва да добавите необходимите компоненти като бутони и текстови полета в контейнера.
И когато щракнете или извършите каквато и да е операция в което и да е поле, събитието ще се случи и вашият код трябва да слуша събитията и също да обработва събитието.
Люлка контейнер
Контейнерът е корен елемент за приложение. Всички останали компоненти се добавят към този корен и той формира йерархия.
Има три класа контейнери:
- JFrame
- JDialog
- JApplet
Демонстрация на контейнер с помощта на JFrame:
import java.awt.Color; import javax.swing.JFrame; import javax.swing.JPanel; public class ContainerDemo { public static void main(String() args) { JFrame baseFrame =new JFrame(); baseFrame.setTitle('Base Container'); JPanel contentPane=new JPanel(); contentPane.setBackground(Color.pink); baseFrame.setSize(400, 400); baseFrame.add(contentPane); baseFrame.setDefaultCloseOperation(baseFrame.EXIT_ON_CL OSE); baseFrame.setVisible(true); } }
Когато стартирате горната програма, ще получите изхода по-долу.
Компоненти
Класът JComponent е основен клас за всички компоненти в люлка.
Често използваните компоненти включват,
- JButton
- JTextField
- JTextArea
- JRadioButton
- JComboBox и др.
Всички тези компоненти трябва да се добавят към контейнера, ако не, няма да се появи в приложението.
Пример:
За да създадете екземпляр на бутон,
JButton clickButton = нов JButton ();
За да добавите бутона към контейнера,
myFrame.add ();
Обработка на събития
Всички приложения се управляват от събития като щраквания на бутони, щраквания на мишката, въвеждане на текст от потребителя и т.н. Когато се случи събитието, трябва да добавите слушател и трябва да предадете обекта на събитието източник.
С вътрешен клас можете да обработвате събитието с вашата логика, както е показано по-долу.
public class ContainerDemo { public void createApp() { JFrame baseFrame =new JFrame(); JPanel contentPane=new JPanel(); baseFrame.setTitle('Base Container'); baseFrame.setSize(400, 400); baseFrame.add(contentPane); JButton demoButton =new JButton('click'); demoButton.setBounds(100,95,95,30); JTextArea result =new JTextArea(); result.setBounds(130,140,95,30); contentPane.add(demoButton); contentPane.add(result); baseFrame.setDefaultCloseOperation(baseFrame.EXIT_ON_CL OSE); baseFrame.setVisible(true); demoButton.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { result.setText('button clicked'); } }); } public static void main(String() args) { ContainerDemo c =new ContainerDemo(); c.createApp(); } }
Заключение
В този урок докоснахме базата с Swing API, предоставен от Java за изграждане на GUI приложения. Обсъдихме основните люлеещи се контейнери и компоненти и тяхното изпълнение.
Обсъдихме и обработката на събития в Swing. Въпреки че механизмът за обработка на събития е от AWT, swing реализира събитията по ефективен начин. След това обсъдихме различните мениджъри на оформление, предоставени от Swing API, които ни позволяват да подреждаме или подреждаме различни компоненти в Swing GUI приложенията.
=> Вижте Перфектното ръководство за обучение по Java тук.
Препоръчително четене
- Урок за отражение на Java с примери
- Урок за JAVA за начинаещи: 100+ практически ръководства за Java видео
- Урок за Java Collections Framework (JCF)
- Модификатори на достъп в Java - Урок с примери
- Java String с урок за String Buffer и String Builder
- Въведение в езика за програмиране на Java - видео урок