java swing tutorial container
Овај свеобухватни видео водич за Јава Свинг објашњава различите компоненте ГУИ Свинг Фрамеворк-а и сродне концепте као што су ЈПанел, ЈФраме, ЈБуттон итд.:
Ми користимо графички кориснички интерфејс (обично се назива ГУИ) за изградњу апликација које имају визуелни интерфејс тако што кориснику олакшава употребу апликације.
Поседовање визуелног интерфејса за апликацију чини апликацију једноставном за навигацију, ефикасније коришћење контрола, а такође је и визуелно привлачна кориснику.
Свинг се углавном користи за креирање ГУИ-а за апликације.
=> Посетите овде да бисте видели серију Јава обуке за све.
Шта ћете научити:
- Видео водич за Јава Свинг
- Шта је Јава Свинг
- Јава Свинг Цомпонентс
- Свинг часови на Јави
- Свинг против ЈаваФКС-а
- Закључак
Видео водич за Јава Свинг
Шта је Јава Свинг
Јава пружа многе ГУИ оквире који нам помажу у развоју различитих ГУИ апликација. Видели смо један у нашем претходном водичу, тј. Абстрацт Виндов Тоолкит или АВТ. АВТ је један од најстаријих ГУИ оквира у Јави и такође зависи од платформе. Још један недостатак АВТ-а су тешке компоненте.
У овом упутству ћемо разговарати о још једном ГУИ оквиру у Јави, тј. „СВИНГ“. Свинг оквир у Јави део је Јава Фоундатион Цлассес или обично званих ЈФЦ. ЈФЦ је АПИ који је сличан МФЦ-овима (Мицрософт Фоундатион Цлассес) у Ц ++. ЈФЦ садржи Свинг, АВТ и Јава2Д.
Свинг оквир у Јави изграђен је на врху АВТ оквира и може се користити за креирање ГУИ апликација баш као и АВТ. Али за разлику од АВТ, Свинг компоненте су лагане и неовисне о платформи.
Свинг фрамеворк је у потпуности написан на Јави. Свинг оквир у Јави је обезбеђен кроз пакет „јавак.свинг“. Часови у пакету јавак.свинг почињу словом „Ј“. Тако ћемо у пакету јавак.свинг имати класе попут ЈБуттон, ЈФраме, ЈТектФиелд, ЈТектАреа итд.
Генерално, Свинг АПИ има сваку контролу дефинисану у пакету јавак.свинг који је присутан у АВТ. Дакле, свинг на неки начин делује као замена за АВТ. Такође, Свинг има разна окна са картицама са напредним компонентама. Свинг АПИ у Јави прилагођава МВЦ (Модел Виев Цонтроллер) архитектуру.
Главне карактеристике ове архитектуре су:
- Подаци свинг компоненте су представљени помоћу модела.
- Визуелно је представљен помоћу погледа.
- Компонента контролера МВЦ архитектуре чита улоге од корисника на приказу, а затим се те промене прослеђују подацима компоненте.
- У свакој компоненти Свинг, поглед и контролер су спојени заједно, док је модел засебан. Ово даје љуљачки могућност повезивања изгледа и осећаја.
Карактеристике свинг АПИ-а су сажете у наставку.
- Свинг компоненте су независне од платформе.
- АПИ је проширив.
- Компоненте љуљачке су лагане. Свинг компоненте су написане на чистој Јави, а такође се компоненте генеришу помоћу Јава кода уместо основних системских позива.
- Свинг АПИ пружа скуп напредних контрола попут ТаббедПане, Трее, Цолорпицкер, контрола табеле итд. Које су богате функционалношћу.
- Контроле љуљачке су врло прилагодљиве. То је зато што је изглед или изглед и изглед компоненте неовисан о унутрашњем представљању и стога га можемо прилагодити онако како желимо.
- Једноставно можемо променити вредности и тако променити изглед и изглед током извођења.
Јава Свинг Цомпонентс
Свинг има велики скуп компонената које можемо укључити у наше програме и искористити богате функционалности помоћу којих можемо развити високо прилагођене и ефикасне ГУИ апликације.
Па, шта је компонента?
Компонента се може дефинисати као контрола која се може представити визуелно и обично је независна. Има специфичну функционалност и представљен је као индивидуална класа у Свинг АПИ-ју.
На пример, класа ЈБуттон у свинг АПИ-у је компонента дугмета и пружа функционалност дугмета.
Једна или више компоненти чине групу и она се може ставити у „контејнер“. Контејнер пружа простор у којем можемо приказати компоненте и такође управљати њиховим размаком, распоредом итд.
У Јави су контејнери подељени у два типа, као што је приказано доле:
Свинг часови на Јави
Свинг АПИ хијерархија у Јави је приказана испод:
Као што се види из горње хијерархије, имамо класе контејнера - оквир, дијалог, панел, аплет итд. Постоје и класе компонената изведене из класе ЈЦомпонент Свинг АПИ-а. Неке класе које наслеђују од ЈЦомпонент су ЈЛабел, ЈЛист, ЈТектБок итд.
Неке од важних класа Свинг АПИ-а су следеће:
- ЈВиндов: Класа ЈВиндов Свинг директно наслеђује класу Виндов. Класа ЈВиндов користи „БордерЛаиоут“ као подразумевани изглед.
- ЈПанел: ЈПанел је потомак класе ЈЦомпонент и налази се на сличним линијама као АВТ класа Панел и има подразумевани распоред „ФловЛаиоут“.
- ЈФраме: ЈФраме потиче из класе Фраме. Компоненте додате у Фраме називају се садржајем Фраме-а.
- ЈЛабел: Класа ЈЛабел је подкласа ЈЦомпонент-а. Користи се за креирање текстуалних налепница у апликацији.
- ЈБуттон: Функцију тастера у Свингу пружа ЈБуттон. Са објектом ЈБуттон можемо повезати низ, икону или обоје.
- ЈТектФиелд: Класа ЈТектФиелд пружа текстуално поље у којем можемо уредити један ред текста.
ЈФраме у Јави
Фраме, генерално, је контејнер који може садржати друге компоненте као што су дугмад, налепнице, текстуална поља итд. Прозор Фраме може садржати наслов, обруб, а такође и меније, текстуална поља, дугмад и друге компоненте. Апликација треба да садржи оквир тако да у њу можемо да додајемо компоненте.
Оквир у Јава Свинг-у је дефинисан у класи јавак.свинг.ЈФраме. Класа ЈФраме наслеђује класу јава.авт.Фраме. ЈФраме је попут главног прозора ГУИ апликације која користи свинг.
Објекат прозора ЈФраме можемо створити помоћу два приступа:
питања и одговори интервјуа са квалитетним аналитичаром
# 1) Проширивањем класе ЈФраме
Први приступ је стварање нове класе за конструкцију Фраме-а. Ова класа наслеђује од класе ЈФраме пакета јавак.свинг.
Следећи програм примењује овај приступ.
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) Инстанцирањем класе ЈФраме
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 } }
Излаз:
У горњем програму креирали смо оквир из класе ЈФраме креирајући инстанцу класе ЈФраме.
ЈПанел у Јави
Панел је компонента која се налази унутар прозора оквира. Оквир може садржати више компонената од једног панела, при чему свака компонента панела има неколико других компонената.
Једноставније речено, можемо користити панеле за преграђивање оквира. Свака плоча у себи групише неколико других компонената. Другим речима, користимо панеле за организовање компонената унутар оквира.
Свинг АПИ класа која имплементира компоненту панела је ЈПанел. Класа ЈПанел наслеђује од ЈЦомпонент и има ФловЛаиоут као задати изглед.
Следећи програм приказује стварање контејнера панела у оквиру помоћу класа пакета јавак.свинг.
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 } }
Излаз:
Овде имамо Фраме. Унутар оквира креирамо плочу. Затим унутар панела креирамо дугме. На овај начин можемо користити панел да држимо остале компоненте.
ЈТектАреа у Јави
ТектАреа дефинише текстуално поље које се може уређивати. Може имати више линија. Класа свинг која дефинише подручје текста је ЈТектАреа и насљеђује класу ЈТектЦомпонент.
ЈТектАреа јавне класе проширује ЈТектЦомпонент
Класа ЈТектАреа садржи 4 конструктора који нам омогућавају да креирамо подручје текста са разним опцијама.
- ЈТектАреа (): Подразумевани конструктор. Направите празно подручје за текст.
- ЈТектАреа (Низови): Креира текстуалну површину са с као подразумеваном вредношћу.
- ЈТектАреа (инт ред, инт колона): Ствара подручје текста са наведеним редом к колоном.
- ЈТектАреа (стрингови, инт ред, инт колона): Ствара текст аре2а са наведеним редом к колоном и подразумеваним вредностима с.
Следећи Јава програм приказује пример компоненте ЈТектАреа у замаху.
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 } }
Излаз:
ЈБуттон у Јави
Дугме је компонента која се користи за стварање дугмета са именом или ознаком. У замаху, класа која креира означено дугме је ЈБуттон. ЈБуттон наслеђује класу АбстрацтБуттон. Догађај АцтионЛистенер можемо повезати са дугметом како бисмо покренули акцију када се притисне.
Применимо пример програма за ЈБуттон у Јава свингс.
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); } }
Излаз:
ЈЛист у Јави
Листа се састоји од више текстуалних ставки. Корисници могу истовремено одабрати једну ставку или више њих. Класа која имплементира листу у свинг АПИ је ЈЛист. ЈЛист је потомак класе ЈЦомпонент.
Доље су дати конструктори класе ЈЛист.
- ЈЛист (): Подразумевани конструктор који креира празну листу само за читање.
- ЈЛист (низ [] листИтем): Направите ЈЛист који у почетку садржи елементе низа листИтем.
- ЈЛист (ЛистМодел датаМодел): Ствара листу са елементима из наведеног модела датаМодел.
Једноставна демонстрација компоненте ЈЛист дата је у наставку.
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); } }
Излаз:
У горњем програму прво дефинишемо листМодел са уносима боја. Затим креирамо објекат ЈЛист и додамо му листМодел. Даље, објекат ЈЛист додаје се оквиру објекта који се затим приказује.
ЈЦомбоБок у Јави
Класа ЈЦомбобок приказује листу избора између којих корисник може да изабере опцију. Изабрани избор је на врху. ЈЦомбоБок потиче из класе ЈЦомпонент.
Следе конструктори које пружа класа ЈЦомбоБок:
- ЈЦомбоБок (): Подразумевани конструктор који креира ЦомбоБок са подразумеваним моделом података.
- ЈЦомбоБок (Објецт [] ставке): Овај конструктор креира ЦомбоБок који има ставке као елементе задатих ставки низа.
- ЈЦомбоБок (векторски елементи): Овај конструктор чита елементе датог вектора и конструише ЦомбоБок са тим елементима као својим елементима.
Класа ЈЦомбоБок такође пружа методе за додавање / уклањање предмета, додавање АцтионЛистенер, ИтемЛистенер итд.
Следећи пример приказује имплементацију ЈЦомбоБок-а у Јави.
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(); } }
Излаз:
ЈСлидер у Јави
Клизач нам омогућава да одаберемо одређени опсег вредности. У Јава Свинг АПИ-у, ЈСлидер је класа која се користи за примену клизача.
Следе конструктори које пружа класа ЈСлидер.
- ЈСлидер (): Подразумевани конструктор који креира клизач који има 50 као почетну вредност и опсег 0 -100.
- ЈСлидер (инт оријентација): Овај конструктор креира клизач баш као горе, али са назначеном оријентацијом. Вредност оријентације може бити ЈСлидер.ХОРИЗОНТАЛ или ЈСлидер.ВЕРТИЦАЛ.
- ЈСлидер (инт мин, инт мак): Овај конструктор се користи за креирање хоризонталног клизача помоћу задатих мин и мак.
- ЈСлидер (инт мин, инт мак, инт валуе): Овај конструктор креира водоравни клизач са наведеном вредношћу мин, мак и валуе.
- ЈСлидер (инт оријентација, инт мин, инт мак, инт вредност): Овај конструктор израђује клизач са назначеном оријентацијом, мин, мак и вредношћу.
Следећи програм демонстрира ЈСлидер у Јави тиковима. Овај програм такође показује употребу метода које подржава класа ЈСлидер.
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); } }
Излаз:
Руковање догађајима у Јави
Догађај се може дефинисати као промена стања објекта. С гледишта ГУИ, догађај се дешава када крајњи корисник ступи у интеракцију са компонентама ГУИ. Догађаји који се покрену у ГУИ-у могу бити клик на дугме, помицање, одабир ставки листе, промјена текста итд.
Догађаји који се дешавају у горе наведеном ГУИ су углавном догађаји у првом плану. Такође можемо имати неке позадинске догађаје попут завршетка позадинске операције, истека тајмера итд.
Руковање догађајима је механизам којим се предузима радња када се догађај догоди. За ово дефинишемо методу која се назива и руковалац догађајем који се позива када се догађај догоди. Јава користи стандардни механизам који се назива „Модел догађаја делегирања“ да генерише, као и да обрађује догађаје.
Модел догађаја делегације састоји се од:
најбољи софтвер за клонирање чврстог диска
# 1) Извор: Извор догађаја је објекат. Објект на којем се догађа догађај је извор, а извор је одговоран за слање информација о догађају водитељу догађаја.
# 2) Слушалац: Слушалац није ништа друго доли обрађивач догађаја одговоран за предузимање радње када се догађај догоди. У Јави је слушалац објекат који чека догађај. Једном када се догађај догоди, слушалац га обрађује.
Захтев је да се слушалац региструје са објектом тако да га, када се догоди догађај, слушалац може обрадити.
На пример,за догађај клика на дугме можемо имати следећи редослед корака.
- Корисник кликће на дугме које генерише догађај клика.
- Ствара се одговарајући објекат класе догађаја и подаци о извору и догађају се преносе овом објекту.
- Овај објекат догађаја се затим прослеђује класи слушалаца регистрованој са објектом.
- Слушалац извршава и враћа се.
Хајде сада да разговарамо о неким слушаоцима које пружа Јава.
АцтионЛистенер у Јави
АцтионЛистенер је слушалац дугмета или ставке у менију. Када кликнемо на дугме, слушалац дугмета који је укључен је ацтионЛистенер. АцтионЛистенер је обавештен у АцтионЕвент.
Пакет догађаја јава.авт.ан дефинише интерфејс АцтионЛистенер. Овај интерфејс има само један метод ацтионПерформед ().
јавни апстракт воид ацтионПерформед (АцтионЕвент е);
Када се кликне на регистровану компоненту попут дугмета, тада се аутоматски позива метода ацтионПерформед ().
Најчешћи приступ укључивању АцтионЛистенер у програм је примена интерфејса АцтионЛистенер, а затим примена методе ацтионПерформед ().
Кораци за примену класе АцтионЛистенер су следећи:
# 1) Имплементирајте интерфејс АцтионЛистернер.
јавна класа АцтионЛистенерИмпл Имплементира АцтионЛистенер
# 2) Региструјте компоненту код овог преслушавача. Ако је дугме компонента коју желимо да региструјемо код слушаоца, регистроваћемо је на следећи начин:
буттон.аддАцтионЛистенер (инстанцеОфЛистенерцласс);
# 3) Примените / замените методу ацтионПерформед ().
public void actionPerformed (ActionEvent e){ //code to perform action }
Дакле, користећи горње кораке, сваки догађај можемо повезати са компонентом ГУИ.
Следећи пример приказује догађај клика на дугме помоћу АцтионЛистенер-а.
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); } }
Излаз:
Горњи програм имплементира догађај АцтионЛистенер. Догађај је догађај клика на дугме и с њим смо придружили АцтионЛистенер који приказује текст у пољу за текст кликом на дугме.
КеиЛистенер у Јави
Кад год се промени стање кључа, обавештава се КеиЛистенер. Баш као и АцтионЛистенер, и КеиЛистенер се налази у пакету јава.авт.евент.
Интерфејс КеиЛистенер пружа следеће методе:
јавни сажетак воид кеиПресс (КеиЕвент е);
јавни сажетак воид кеиРелеасед (КеиЕвент е);
јавни сажетак воид кеиТипед (КеиЕвент е);
Морамо да применимо горе наведене методе да бисмо кључне догађаје повезали са компонентом. Кориснику препуштамо да примени пример КеиЛистенер-а користећи свинге у Јави.
Свинг Лаиоутс у Јави
Када распоредимо разне компоненте у контејнер, тада кажемо да постављамо те компоненте. Дакле, распоред се може дефинисати као позиционирање компонената у контејнеру.
Све док је мање компоненти, оне се могу ручно превлачењем постављати. Али постаје тешко распоредити компоненте у великом броју. У овом тренутку у помоћ нам долази Лаиоут Манагер Јава.
ЛаиоутМанагер је одговоран за распоред компонената у ГУИ апликацијама. ЛаиоутМанагер је интерфејс и имплементирају га све класе менаџера распореда. Јава нуди следеће класе ЛаиоутМанагер.
ЛаиоутМанагер | Опис |
---|---|
јавак.свинг.ГроупЛаиоут | Групира компоненте и постави их у контејнер. |
јава.авт.БордерЛаиоут | Компоненте су распоређене тако да се уклапају у пет праваца, наиме центар, исток, запад, југ, север. |
јава.авт.ФловЛаиоут | Ово је подразумевани изглед. Поставља компоненте у усмерени ток. |
јава.авт.ГридЛаиоут | Распоређује компоненте у правоугаону мрежу. |
јавак.свинг.БокЛаиоут | Компоненте су поређане у кутију. |
јава.авт.ЦардЛаиоут | Свака компонента се посматра као карта у шпилу и истовремено је видљива само једна компонента. |
јава.авт.ГридБагЛаиоут | Распоређује компоненте вертикално, водоравно или чак дуж њихових основних линија. Компоненте не морају бити исте величине. |
јавак.свинг.СцроллПанеЛаиоут | Користи га класа ЈСцроллПане и одговоран је за распоређивање компонената у помичним контејнерима. |
јавак.свинг.СпрингЛаиоут итд. | Обезбеђен је скуп ограничења попут хоризонталне и вертикалне удаљености између компонената итд., А компоненте су распоређене у складу са тим скупом ограничења. |
У овом упутству ћемо разговарати само о ФловЛаиоут и ГридЛаиоут.
ФловЛаиоут у Јави
ФловЛаиоут распоређује компоненте у смеру протока, једну за другом. Ово је задани изглед за контејнере као што су Панел и Аплет.
Класа ФловЛаиоут у Јави која представља менаџер ФловЛаиоут садржи следећа поља и конструкторе.
Поља класе ФловЛаиоут
- јавни статички финал инт ВОДЕЊЕ
- јавни статички коначни инт ПРИПРЕМА
- јавни статички финал инт ЛЕВО
- јавни статички коначни инт ДЕСНО
- јавни статички коначни инт ЦЕНТАР
Горња поља дефинишу положаје на којима ће се компоненте поставити или поравнати.
Конструктори класе ФловЛаиоут
- ФловЛаиоут (): Ово је подразумевани конструктор. Овај конструктор креира распоред протока који има централно поравнате компоненте са подразумеваним размаком од 5 јединица у хоризонталном и вертикалном смеру.
- ФловЛаиоут (инт алигн): Овај конструктор креира распоред протока са наведеном вредношћу поравнања и са хоризонталним и вертикалним размаком од 5 јединица.
- ФловЛаиоут (инт поравнање, инт хгап, инт вгап): Ствара распоред тока са наведеном вредношћу поравнања и хоризонталним и вертикалним размаком.
Доље је дат пример ФловЛаиоут у Јави.
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(); } }
Излаз:
ГридЛаиоут у Јави
Коришћењем ГридЛаиоут можемо распоредити компоненте правоугаоном мрежом, тј. Свака компонента је распоређена у сваки правоугаоник.
Конструктори класе ГридЛаиоут
- ГридЛаиоут (): подразумевани конструктор који генерише распоред мреже који има један ступац по једној компоненти у низу.
- ГридЛаиоут (инт редови, инт колоне): Овај конструктор генерише распоред мреже са наведеним редовима и колонама. Не постоји јаз између компонената.
- ГридЛаиоут (инт редови, инт колоне, инт хгап, инт вгап): Користећи овај конструктор, генеришемо распоред мреже са наведеним редовима и колонама и хоризонталним и вертикалним празнинама.
Следећи пример примењује ГридЛаиоут у Јави.
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(); } }
Излаз:
Ометања у Јави
Ако проверимо примере програмирања у овом упутству пре теме распореда, можемо видети да смо распоред поставили као нулу у овим примерима (сетЛаиоут (нулл)). Видели смо да када користимо менаџере изгледа у нашем програму, они аутоматски позиционирају компоненте.
Када се менаџери распореда не користе, методу сетБоундс можемо користити према величини и положају компоненте. Дакле, метода сетБоундс се користи за ручно позиционирање компоненте и за подешавање величине.
Општа синтакса методе сетБоундс је следећа:
сетБоундс (инт к-координата, инт и - координата, инт ширина, инт висина)
Применимо сада пример методе СетБоундс.
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); } }
Излаз:
шта је најбоље средство за чишћење рачунара
У горе наведеном програму имамо компоненту дугмета. Нисмо поставили ниједан распоред, али смо користили методу сетБоундс да бисмо поставили његов положај и димензије.
Свинг против ЈаваФКС-а
Свинг | ЈаваФКС |
---|---|
Свинг пружа АПИ за креирање ГУИ компоненти. | ЈаваФКС пружа скрипте и брз развој корисничког интерфејса повезан са градитељем екрана. |
У будућим верзијама Свинг-у неће бити додата нова функционалност. | ЈаваФКС пружа богату функционалност и има потенцијал за више функција у будућим верзијама. |
Помоћу Свинг АПИ-а можемо створити све стандардне компоненте. | ЈаваФКС нам омогућава да створимо богате ГУИ компоненте користећи напредни изглед и осећај. |
Велики број компонената је присутан у Свингу. | ЈаваФКС има сразмерно мањи број компонената. |
Свинг је потпуно функционална библиотека корисничког интерфејса. | ЈаваФКС је нови и предстојећи АПИ са богатим компонентама корисничког интерфејса. |
Свинг има лабаву МВЦ подршку. | ЈаваФКС доследно подржава МВЦ образац. |
Често постављана питања
П # 1) Да ли се Свинг и даље користи у Јави?
Одговор: Да, Свинг се још увек користи у Јави и то превише. Понекад се користи као потпуна замена за АВТ. Понекад се користи и заједно са неким од АВТ компонената. Користи се чак и са најновијим ЈаваФКС-ом. Дакле, Свинг се и даље користи и користиће се још дуго.
П # 2) Како функционише Јава Свинг?
Одговор: Свинг у Јави написан је на врху АВТ оквира. Дакле, руковање догађајима АВТ-а наслеђује се потпуно замахом. Свинг такође нуди велики број компонената које можемо користити за развој ефикасних ГУИ апликација.
П # 3) Да ли Свинг прати МВЦ?
Одговор: Свинг АПИ има лабаву МВЦ подршку. Модел представља податке компоненте. Свинг компонента има засебни елемент назван Модел док су Цонтроллер и Виев спојени заједно у УИ елементе. Ово клабирање омогућава љуљашкама да имају изглед и осећај који се могу спојити.
П # 4) Да ли је ЈаваФКС бољи од Свинга?
Одговор: Свинг постоји већ дуго и има зрелију ИДЕ подршку. Такође је имао веома велику библиотеку компонената. ЈаваФКС је релативно новији и има малу библиотеку компонената, али са доследнијим исправкама и доследном подршком за МВЦ. Дакле, то зависи од тога како ће се ЈаваФКС даље развијати и пружа више функција.
П # 5) Шта је боље АВТ или Свинг?
Одговор: Свинг је изграђен на врху АВТ-а и пружа богат и велики скуп УИ компоненти у поређењу са АВТ-ом. Свинг компоненте такође могу имати свој изглед и осећај у поређењу са АВТ компонентама које изгледају и изгледају као оперативни систем.
Свинг компоненте су брже од АВТ-а. Сви ови фактори чине замах бољим од АВТ-а.
Више о Јава Свинг-у
Када креирате апликацију, у почетку бисте требали имати основни контејнер и у контејнер морате додати потребне компоненте као што су дугмад и текстуална поља.
А када кликнете или извршите било коју операцију на било ком пољу, догађај ће се догодити и ваш код треба да преслушава догађаје и такође обрађује догађај.
Свинг Цонтаинер
Контејнер је основни елемент за апликацију. Све остале компоненте су додате том корену и он формира хијерархију.
Постоје три класе контејнера:
- ЈФраме
- ЈДиалог
- ЈАпплет
Демо контејнера помоћу ЈФраме-а:
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); } }
Када покренете горњи програм, добићете доњи излаз.
Компоненте
Класа ЈЦомпонент је основна класа за све компоненте у замаху.
Компоненте које се често користе укључују,
- ЈБуттон
- ЈТектФиелд
- ЈТектАреа
- ЈРадиоБуттон
- ЈЦомбоБок итд.
Све ове компоненте треба додати у контејнер ако не, неће се појавити у апликацији.
Пример:
Да бисте креирали инстанцу дугмета,
ЈБуттон цлицкБуттон = нови ЈБуттон ();
Да бисте додали дугме у контејнер,
миФраме.адд ();
Руковање догађајима
Све апликације покрећу догађаји попут кликова на дугмад, кликова мишем, корисничког уноса текста итд. Када се догађај догоди, морате додати слушатеља и морате прослиједити изворни објект догађаја.
Помоћу интерне класе можете да рукујете догађајем на начин који је приказан у наставку.
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(); } }
Закључак
У овом упутству додирнули смо основу са Свинг АПИ-јем који Јава нуди за изградњу ГУИ апликација. Разговарали смо о главним љуљачким контејнерима и компонентама и њиховој примени.
Такође смо разговарали о руковању догађајима у Свингу. Иако је механизам за управљање догађајима АВТ, свинг догађаје примењује на ефикасан начин. Затим смо разговарали о различитим менаџерима распореда које нуди Свинг АПИ који нам омогућавају да распоредимо или распоредимо различите компоненте у Свинг ГУИ апликацијама.
=> Овде погледајте Перфектни водич за Јава.