w7_java.pdf

(477 KB) Pobierz
w7_java
Style interfejsu
• Wygląd wzorowany na standardzie Windows
JAVA - Swing: J-komponenty
• Wygląd wzorowany na standardzie Motif X Windows
Beata Pańczyk - Java (Wykład 7)
• Rodzimy styl interfejsu pakietu Swing (Metal)
2
Definiowanie stylu interfejsu
Klasa UIManager - wygląd GUI;
Metody:
• setLookAndFeel(LookAndFeel) - pozwala
zmienić wygląd GUI
• getCrossPlatformLookAndFeelClassName()
- zwraca obiekt LookAndFeel stylu Metal
• getSystemLookAndFeelClassName() - zwraca
obiekt LookAndFeel stylu €zywanego przez system
operacyjny
Np. - ustawienie stylu Metal
try {UIManager.setLookAndFeel(
UIManager.getCrossPlatformLookAndFeelClassName());}
catch (Exception e)
{System.out.println("Nie moŜna zmienic"); }
Tworzenie szkieletu aplikacji -
przykład 1
import javax.swing.*;
public class swing1 {
public static void main(String[] args) {
JFrame fr = new JFrame("Szkielet aplikacji");
JLabel et = new JLabel("Swing!!!");
fr.getContentPane().add(et);
fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fr.pack();
fr.setVisible(true);
}
}
3
4
Tworzenie szkieletu aplikacji -
przykład 1a
Dodawanie składników do kontenera
• dowolny składnik GUI musi zostać dodany do kontenera
(np. JFrame , JWindow , JPanel , JApplet ) a sam kontener
musi zostać wyświetlony na ekranie;
• JPanel
import javax.swing.*;
public class swing1a extends JFrame {
public swing1a()
//konstruktor klasy swing1a
{
super("Szkielet aplikacji"); //wywołanie konstruktora JFrame
setSize(300,100); //ustalenie wymiarów JFrame
JLabel et = new JLabel("Swing!!!");
getContentPane().add(et); //dodanie et do panelu ramki
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
JPanel - najprostszy kontener (panel) dodawany do
innych kontenerów
• W celu dodania składnika do panelu zawartości kontenera
naleŜy (najczęściej) :
¦ utworzyć panel
JPanel p=newJPanel();
¦ dodać do niego składniki za pomocą metody
p. add(Component)
¦ wywołać metodę
setContentPane(p)
z panelem jako parametrem wywołania
JPanel
}
public static void main(String[] args)
{
swing1a sw1=new swing1a();//utworzenie obiektu klasy swing1a
}
}
5
6
1
27932434.043.png 27932434.044.png 27932434.045.png 27932434.046.png 27932434.001.png 27932434.002.png 27932434.003.png 27932434.004.png 27932434.005.png 27932434.006.png 27932434.007.png
import javax.swing.*;
public class swing2 extends JFrame{
JButton ok=new JButton("OK");
JButton anuluj=new JButton("Anuluj");
JButton koniec=new JButton("Koniec");
public swing2()
{super("Przyciski JButton"); setSize(250,80);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel p1=new JPanel();
p1.add(ok); p1.add(anuluj); p1.add(koniec);
setContentPane(p1);
setVisible(true);
}
public static void main(String[] args)
{swing2 sw2=new swing2();
} }
Dodawanie składników do apletu
• Okno apletu - rodzaj kontenera; część GUI
przeglądarki; w momencie kiedy aplet zaczyna
pracę okno jest juŜ otwarte a jego rozmiary są
określone przez znacznik HTML
• Aplet zaimplementowany w pakiecie Swing
posiada panel zawartości odseparowany od innych
paneli; poszczególne składniki interfejsu
dodawane powinny być do panelu zawartości a nie
do samego apletu
7
8
Dodawanie składników do apletu -
przykład 2a
Standardowe okna dialogowe
import javax.swing.*;
Metody klasy JOptionPane :
• ConfirmDialog - okno do zadawania pytań z
przyciskami Yes , No i Cancel
• InputDialog - wyświetla tekst zachęty i
pozwala uŜytkownikowi na wpisanie dowolnego
tekstu
• MessageDialog - wyświetla informacje
• OptionDialog - kombinacja powyŜszych okien
• JFileChooser - dialog wyboru pliku
• JColorChooser - dialog wyboru kolorów
public class swing2a extends JApplet{
JButton ok=new JButton("OK");
JButton anuluj=new JButton("Anuluj");
JButton koniec=new JButton("Koniec");
public void init()
{
JPanel p1=new JPanel();
p1.add(ok);
p1.add(anuluj);
p1.add(koniec);
setContentPane(p1);
}
}
9
10
Okna dialogowe - przykład 3
import javax.swing.*; import java.awt.event.*; import java.awt.*;
public class dialogi extends JFrame implements ActionListener
{ JFileChooser fc=new JFileChooser();
JButton b1,b2,b3;
dialogi() //konstruktor
{ super("Dialogi");
FlowLayout flow=new FlowLayout(FlowLayout.CENTER,10,10);
getContentPane().setLayout(flow); super.setSize(400,100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
String[] etykieta={"Otwórz plik","Zapisz plik","Wybierz kolor"};
b1=new JButton(etykieta[0]); b1.addActionListener(this);
b2=new JButton(etykieta[1]); b2.addActionListener(this);
b3=new JButton(etykieta[2]); b3.addActionListener(this);
getContentPane().add(b1);
Okna dialogowe - przykład 3
public void actionPerformed(ActionEvent e)
{Object ob1=e.getSource();
if (ob1==b1)
{
int wybor=fc.showSaveDialog(this);
if (wybor==JFileChooser.APPROVE_OPTION)
pisz("Zapisuje plik "+ fc.getSelectedFile()); }
getContentPane().add(b2);
if (ob1==b3)
{ Color kol=JColorChooser.showDialog(this,"Wybierz kolor",
getBackground());
if (kol==null) return;
pisz("Wybrany kolor: "+ kol); setBackground(kol);
} } //koniec metody actionPerformed
getContentPane().add(b3);
setVisible(true);
} //koniec konstruktora dialogi
11
12
2
Dodawanie składników do kontenera -
przykład 2
int wybor=fc.showOpenDialog(this);
if (wybor==JFileChooser.APPROVE_OPTION)
pisz("Otwieram plik "+ fc.getSelectedFile());}
if (ob1==b2)
{
27932434.008.png 27932434.009.png 27932434.010.png 27932434.011.png 27932434.012.png 27932434.013.png 27932434.014.png 27932434.015.png
Okna dialogowe - przykład 3
void pisz(String s)
{ JOptionPane.showMessageDialog(this,s,"Komunikat",
JOptionPane.INFORMATION_MESSAGE);
Okna dialogowe - przykład 3
}
public static void main(String [] args)
{ dialogi d=new dialogi();
}
} //koniec klasy dialogi
13
14
Okna dialogowe - przykład 3
Składniki pakietu Swing - wspólne
metody
javax.swing.JComponent - klasa bazowa pakietu
Swing z metodami:
• setEnabled(boolean) - aktywuje/dezaktywuje
składnik; domyślnie składniki są włączone; stan składnika
podaje metoda isEnabled()
• setVisible(boolean) - wyświetla/ukrywa składnik;
stan składnika podaje metoda isVisible()
• setSize(int,int) - zmienia rozmiary do wysokości i
szerokości podanej jako parametry; getSize() - podaje
rozmiary
• setText() i getText() dla składników tekstowych
• setValue() i getValue() dla składników
przechowujących wartości numeryczne
15
16
Przyciski z ikonami - przykład 4
import javax.swing.*;
public class swing3 extends JFrame{
public swing3()
{super("Ikony na przyciskach");
setSize(100,300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel p1=new JPanel();
ImageIcon ikona1=new ImageIcon("javalogo.gif"),
ikona2=new ImageIcon("sunlogo.gif");
JButton pjava=new JButton(ikona1);
JButton psun=new JButton(ikona2);
p1.add(pjava); p1.add(psun);
setContentPane(p1); setVisible(true);
}
public static void main(String[] args)
{ swing3 sw3=new swing3(); }
Etykiety JLabel
Konstruktory:
• JLabel(String) - etykieta tekstowa
• JLabel(String, int) - etykieta tekstowa z wyrównanie
• JLabel(String, Icon,int) - etykieta z tekstem, ikoną i
określonym sposobem wyrównania
Sposoby wyrównania (domyślnie CENTER):
• SwingConstants.LEFT
• SwingConstants.CENTER
• SwingConstants.RIGHT
UŜyteczne metody:
• setText(String),setIcon(Icon) - ustawienie zawartości
• getText() , getIcon() - odczytanie zawartości etykiety
Np.
JLabel l=JLabel("Koniec",SwingConstants.RIGHT);
}
17
18
3
27932434.016.png 27932434.017.png 27932434.018.png 27932434.019.png 27932434.020.png 27932434.021.png 27932434.022.png 27932434.023.png 27932434.024.png 27932434.025.png 27932434.026.png 27932434.027.png
Pola tekstowe JTextField
Konstruktory:
• JTextField() - tworzy puste pole tekstowe
• JTextField(int) - pole tekstowe o określonej długości
• JTextField(String, int) - pole tekstowe o określonej
długości wypełnione podanym tekstem
UŜyteczne metody:
• setEditable(boolean) - pole edytowane/nie
edytowane, isEditable() zwraca stan pola
• setText(String) - zmiana zawartości pola
• getText() - zwraca zawartość pola
• getSelectedText() - zwraca zaznaczoną przez
uŜytkownika zawartość pola
Pole tekstowe: JPasswordFields , metoda ustalająca
znak pojawiający się na ekranie setEchoChar
Obszary tekstowe JTextArea
setEchoChar((((char
char))))
Konstruktory:
• JTextArea(int,int) - obszar tekstowy o określonej
liczbie wierszy i kolumn
• JTextArea(String,int,int) - obszar tekstowy
wypełniony tekstem
UŜyteczne metody:
• setText(String)
• getText()
• getSelectedText()
• append(String) - dodanie łańcucha na końcu tekstu
• insert(String,int) - wstawienie łańcucha w miejscu
wskazanym przez uŜytkownika
• setLineWrap(true) - automatyczne zawijanie tekstu
19
20
Formularz - przykład 5
import javax.swing.*;
Formularz - przykład 5
public formularz()
{ super("Formularz"); setSize(260,160);
setDefaultCloseOperation(EXIT_ON_CLOSE);
JPanel p1=new JPanel();
JLabel l1=new JLabel("Uzytkownik : ");
JLabel l2=new JLabel("Haslo : ");
JLabel l3=new JLabel("Komentarz : ");
komentarz.setLineWrap(true);
komentarz.setWrapStyleWord(true);
p1.add(l1); p1.add(uzytkownik);
p1.add(l2); p1.add(haslo);
p1.add(l3); p1.add(komentarz);
setContentPane(p1);
setVisible(true);
}
public class formularz extends JFrame
{
JTextField uzytkownik=new JTextField(15);
JPasswordField haslo=new JPasswordField(15);
JTextArea komentarz=new JTextArea(4,15);
public static void main(String[] args)
{
formularz f=new formularz();
}
}
21
22
Panele przewijane JScrollPane
Kontener JScrollPane umoŜliwia przechowywanie składników,
które mogą być przewijane. Konstruktory:
• JScrollPane(Component) - tworzy panel przewijany
zawierający dany składnik
• JScrollPane(Component, int,int) - umoŜliwia ponadto
konfigurację suwaka poziomego i pionowego
Konfiguracja suwaków:
• ScrollPaneConstants
.VERTICAL_SCROLLBAR_ALWAYS
Panel przewijany - przykład 6
import javax.swing.*;
public class panel_przewijany extends JFrame{
public static void main(String[] args) {
panel_przewijany f=new panel_przewijany();
}
public panel_przewijany()
{super("Panel przewijany");
setSize(260,160);
setDefaultCloseOperation(EXIT_ON_CLOSE);
JPanel p1=new JPanel();
JTextArea t=new JTextArea(5,15);
JScrollPane sp=new JScrollPane(t,
ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
p1.add(sp);
setContentPane(p1); setVisible(true);
ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED
.VERTICAL_SCROLLBAR_AS_NEEDED
ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER
.VERTICAL_SCROLLBAR_NEVER
.VERTICAL_SCROLLBAR_NEVER
.HORIZONTAL_SCROLLBAR_ALWAYS
• ScrollPaneConstants
.HORIZONTAL_SCROLLBAR_ALWAYS
.HORIZONTAL_SCROLLBAR_AS_NEEDED
• ScrollPaneConstants
.HORIZONTAL_SCROLLBAR_AS_NEEDED
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER
.HORIZONTAL_SCROLLBAR_NEVER
23
}
}
24
4
setEchoChar
char
ScrollPaneConstants
ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS
ScrollPaneConstants
• ScrollPaneConstants
• ScrollPaneConstants
ScrollPaneConstants
ScrollPaneConstants
.VERTICAL_SCROLLBAR_NEVER
• ScrollPaneConstants
ScrollPaneConstants
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS
.HORIZONTAL_SCROLLBAR_ALWAYS
ScrollPaneConstants
ScrollPaneConstants
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED
ScrollPaneConstants
27932434.028.png 27932434.029.png 27932434.030.png 27932434.031.png 27932434.032.png 27932434.033.png 27932434.034.png 27932434.035.png
Suwaki JScrollBar
Konstruktory:
• JScrollBar(int) - tworzy suwak o podanej orientacji
• JScrollBar(int,int,int,int,int) - dodatkowo
określona wartość początkowa, rozmiar suwadła
(domyślna wartość dla 0), wartość min i max
Orientacja suwaka:
• JScrollBar.HORIZONTAL
• JScrollBar.VERTICAL
Pola wyboru JCheckBox i przyciski
opcji JRadioButton
Konstruktory JCheckBox (analogicznie JRadioButton ):
• JCheckBox(String) - tworzy pole wyboru z etykietą
• JCheckBox(String,boolean) - pole jest/nie jest zaznaczone
• JCheckBox(Icon) - pole wyboru z ikoną
• JCheckBox(Icon,boolean)
• JCheckBox(String, Icon) - pole wyboru z ikoną i etykietą
• JCheckBox(String,Icon,boolean)
Metody:
• setSelected(boolean) - jeśli parametrem jest true to dany
składnik jest zaznaczony
• isSelected() - zwraca wartość boolean
Np.
JSrollBarsb=new
JSrollBar(JScrollBar.HORIZONTAL,33,0,10,50);
25
26
Pola wyboru JCheckBox i przyciski
opcji JRadioButton - ButtonGroup()
Listy rozwijane JComboBox
JComboBox() - konstruktor
addItem(Object) dodawanie elementów do listy
UŜyteczne metody:
• getItemAt(int) - zwraca w postaci tekstu wartość elementu
listy z określonej pozycji
• getItemCount() - zwraca ilość elementów listy
• getSelectedIndex() - zwraca pozycję aktualnie
zaznaczonego elementu listy
• getSelectedItem() - zwraca w postaci tekstu wartość
aktualnie zaznaczonego elementu listy
• getSelectedIndex(int) - zwraca element z pozycji int
• setSelectedIndex(Object) - zaznacza obiekt na liście
• setMaximumRowCount(int) - definiuje ilość wierszy
listy rozwijanej jednocześnie widocznych na ekranie
Obiekt klasy ButtonGroup śledzi wszystkie pola wyboru
lub przyciski opcji w swojej grupie
Np.
ButtonGroupstolice=newButtonGroup();
JRadioButtonparyz=new
JRadioButton("ParyŜ",true);
stolice.add(paryz);
JRadioButtonlondyn=new
JRadioButton("Londyn",true);
stolice.add(londyn);
27
28
Listy rozwijane - przykład 7
import javax.swing.*;
public class lista_rozwijana extends JFrame{
JComboBox mc=new JComboBox();
JComboBox rok=new JComboBox();
public static void main(String[] args)
{ lista_rozwijana f=new lista_rozwijana(); }
public lista_rozwijana()
{super("Lista rozwijana"); setSize(220,90);
setDefaultCloseOperation(EXIT_ON_CLOSE);
JPanel p1=new JPanel();
JLabel l1=new JLabel("Data waźności:");
for (int i=1;i<=12;i++) mc.addItem(""+i);
for (int i=2002;i<=2010;i++) rok.addItem(""+i);
p1.add(l1); p1.add(mc); p1.add(rok);
setContentPane(p1);
setVisible(true);
}}
Suwaki - JSlider
29
Konstruktory:
• JSlider(int, int) - tworzy suwak i ustala min i max
• JSlider(int, int, int) - dodatkowo ustalana jest
wartość początkowa
• JSlider(int, int,int,int) - dodatkowo definiuje
orientację
Ustawianie etykiet:
• setMajorTickSpacing(int) - znaczniki głównej
podziałki
• setMinorTickSpacing(int) - znaczniki podziałki
pomocniczej
• setPaintTicks(boolean) - czy znaczniki podziałki
mają być wyświetlane
• setPaintLabels(boolean) - czy wartości
znaczników podziałki mają być wyświetlane
30
5
27932434.036.png 27932434.037.png 27932434.038.png 27932434.039.png 27932434.040.png 27932434.041.png 27932434.042.png
Zgłoś jeśli naruszono regulamin