| | |
| |
|
Java Десктоп аппликации |
прегледано: |
210589 |
вкупно гласови: |
2 |
средна оценка: |
5.0 |
коментари: |
17 |
испрати до пријател
испечати
|
Покрај тоа што Јава е супериорна технологија за Web аппликации, апликации за мобилни телефони, PDA уреди итн., исто така Јава технологијата е супериорна и на полето на Десктоп апликациите.
Воглавно има 3 Јава GUI пакети и тоа се Abstract Window Toolkit (AWT), SWING и Standard Widget Toolkit (SWT).
Ние ќе се задржиме на AWT и SWING бидејќи SWT користи нативни методи, а и не е дел од Јава програмскиот јазик, тој се дистрибуира како посебен пакет.
Јава апликациите функционираат на сите релевантни оперативни системи, вклучувајќи ги тука Windows, Mac, Linux и Solaris.
GUI-to на Јава изгледа исто на сите оперативни системи, но исто така може и да емулира и native look and feel зависно од оперативниот систем.
SWING е еден од најкомплексните GUI frameworks било кога развиен, тој има комплетен сет на графички компоненти почнувајќи од текст полиња па се до табели.
SWING компонентите не зависат од нативните алатки на оператвниот систем туку тие се исцртуваат употребувајќи примитивни графички методи како што се линии, квадрати и текст. Исто така исцртувањето на графиката не зависи од изгледот на оперативниот систем.
SWING архитектурата е направена по инспирација на Model-View-Controller (MVC).
Што се однесува до перфомансите на Јава десктоп апликациите, добро напишана Јава апликација има исти перфоманси како C++, тоа го има напишано на интернет милион пати, а и исто толку пати тестирано. Факт е дека од Јава верзија 1.4, па се до денешната Јава 6 има огромна разлика во брзината во позитивна смисла, денес корисниците можат да имаат повеќе апликации пуштени во исто време, можат да ги минимизираат или многу брзо да преминуваат од една на друга апликација.
Основен пример за декстоп апликација кај што ке има испишано еден текст:
/**
*
* @author Sasho Lazarevski
*/
public class PrvaDesktopAplikacija extends javax.swing.JFrame {
private javax.swing.JLabel jLabel1;
public PrvaDesktopAplikacija() {
initComponents();
}
private void initComponents() {
jLabel1 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel1.setText("МОЈА ПРВА ДЕСКТОП АПЛИКАЦИЈА");
getContentPane().add(jLabel1);
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width-500)/2, (screenSize.height-300)/2, 500, 300);
setVisible(true);
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new PrvaDesktopAplikacija();
}
});
}
}
Да го објасниме кодот.
Класата PrvaDesktopAplikacija ja extendira JFrame класата, што и не е морално, а во повеќето случаи и подобро е да се направи инстанца од JFrame тоа ќе биде презентирано во наредниот пример.
Апликацијата почнува да се извршува од main методата која што мора да ја има во сите декстоп апликации барем еднаш за разлика од Web апликациите каде што main методата воопшто не се користи, потоа се иницијализираат компонентите и се испишува текстот на екранот.
Методата getContentPane() враќа Класа Container која што мора да ја имате ако сакате да додавате и бришете компоненти на екранот, со други зборови не можете директно да додавате компоненти на самиот JFrame бидејќи самиот тој е составен од повеќе слоеви (тие ке ги објасниме наредниот пат).
Класата Toolkit ја пресметува големината на екранот го подесува порозорот со димензии 500 на 300 и го поместува на средина од Мониторот.
И на крај „setVisible(true);“ го прави Прозорот видлив, ова е еден од најголемите пропусти на почетниците кој што сакаат да развиваат Десктоп апликации.
Битно е да се спомене дека ако експлицитно немате наведено кој Layout Manager ќе го користите по default се користи BorderLayout и во согласност со тој Layout Manager така се редат компонентите во контејнерот.
Тоа можете да го промените едноставно со „setLayout()“ методата.
Во долниот пример тоа би изгледало вака:
container.setLayout(new FlowLayout());
На почетокот споменавме дека подобро е да не се екстендира JFrame класата сега тоа ќе го покажеме со пример како би изгледало.
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Toolkit;
import javax.swing.JFrame;
import javax.swing.JLabel;
/**
*
* @author Sasho Lazarevski
*/
public class VtoraDesktopAplikacija {
private JLabel label;
private JFrame frame;
public VtoraDesktopAplikacija() {
initComponents();
}
private void initComponents() {
label = new JLabel();
frame = new JFrame("наслов на прозор");
frame.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
label.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
label.setText("МОЈА ВТОРА ДЕСКТОП АПЛИКАЦИЈА");
Container container = frame.getContentPane();
container.add(label);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
frame.setBounds((screenSize.width - 500) / 2, (screenSize.height - 300) / 2, 500, 300);
frame.setVisible(true);
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new VtoraDesktopAplikacija();
}
});
}
}
Наредниот пат ќе ви покажеме пример како да ги прелистувате слоевите на JFrame класата, исто така ќе ви покажеме како да го избегнете различното рендерирање на фонтови во Windows и во Linux, а со тоа да апликацијата да ви изгледа идентично на сите оперативни системи. Исто така ќе има и примери како да додавате настани (Events) на компонентите и што се „Layout Managers“ и како се користат.
|
|
|
|
|
|
| |
|
|
---|
JavaTM и Java-базираните ознаки се трговски марки или регистрирани трговски марки на Sun Microsystems, Inc. во САД и други држави. Java.com.mk никако не соработува со Sun Microsystems, Inc. Сите други трговски марки се сопственост на нивните сопственици. |
|