LAB4 (5) DOC


Laboratorium 4

Cel:

  1. Zapoznanie si´ z bibliotekŕ graficznŕ AWT

  2. Praktyczne budowanie aplikacji z GUI

Komponenty biblioteki AWT

Komponentami, które najcz´ciej wykorzystuje si´ do budowania aplikacji wykorzystujŕcych GUI sŕ: Button, Label, TextField, TextArea, Checkbox, List, Choice oraz Canvas. OczywiĘcie w trakcie rozmieszczania komponentów korzysta si´ z kontenerów oraz klas pomocniczych.

Najlepszŕ metodŕ poznania biblioteki AWT jest jej stosowanie. W ramach laboratorium zostanie zbudowana aplikacja o podanym wyglàdzie graficznym.

0x01 graphic

Menu File posiada nast´pujàce komendy: Open, Save, Exit

Menu Help zawiera komend´: About;

Do aplikacji nale˝y wprowadziç obs∏ug´ zdarzeƒ zwiàzany z wyborami poleceƒ menu. Na polecenia Open i Save powinien pokazaç si´ FileDialog, który pozwala wybraç nazw´ pliku do otwarcia i nazw´ pliku pod który b´dzie zapisany tworzony tekst. Sam proces zapisywania i odczytywania pliku jest poza zakresem tego çwiczenia.

Obs∏uga komendy About z menu Help powinno pokazaç nowe okno dialogowe oparte o klas´ Dialog wyÊwietlajàce informacje o programie.

Osoby, którym starczy czasu mogà wprowadziç obs∏ug´ pozosta∏ych komponentów wyst´pujàcych w oknie aplikacji.

Przyk∏ad rozwiàzania

import java.awt.*;

import java.awt.event.*;

public class AWTTest extends Frame implements ActionListener, ItemListener {

private Choice cFont;

private Checkbox cBold;

private Checkbox cItalic;

private TextArea textArea;

private Checkbox cBlue, cBlack, cRed, cGreen;

public AWTTest() {

super("AWTTest");

setupMenu();

Panel top = new Panel(new GridLayout(1, 2));

Panel topleft = new Panel();

Panel topright = new Panel();

top.add(topleft);

top.add(topright);

topleft.add(new Label("Choose font"));

cFont = new Choice();

cFont.addItem("Helvetica");

cFont.addItem("TimesRoman");

cFont.addItem("Courier");

cFont.addItemListener(this);

topleft.add(cFont);

cBold = new Checkbox("Bold", false);

cBold.addItemListener(this);

topright.add(cBold);

cItalic = new Checkbox("Italic", false);

cItalic.addItemListener(this);

topright.add(cItalic);

add(top, "North");

textArea = new TextArea(10, 60);

add(textArea, "Center");

Panel bottom = new Panel();

CheckboxGroup cbg = new CheckboxGroup();

cBlack = new Checkbox("Black", cbg, true);

cBlack.addItemListener(this);

bottom.add(cBlack);

cRed = new Checkbox("Red", cbg, false);

cRed.addItemListener(this);

bottom.add(cRed);

cGreen = new Checkbox("Green", cbg, false);

cGreen.addItemListener(this);

bottom.add(cGreen);

cBlue = new Checkbox("Blue", cbg, false);

cBlue.addItemListener(this);

bottom.add(cBlue);

add(bottom, "South");

addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

System.exit(0);

}

});

pack();

}

protected void setupMenu() {

MenuBar mb = new MenuBar();

setMenuBar(mb);

Menu file = new Menu("File");

mb.add(file);

MenuItem open = new MenuItem("Open", new MenuShortcut(KeyEvent.VK_O));

open.addActionListener(this);

file.add(open);

MenuItem save = new MenuItem("Save", new MenuShortcut(KeyEvent.VK_S));

save.addActionListener(this);

file.add(save);

file.add(new MenuItem("-"));

MenuItem quit = new MenuItem("Quit", new MenuShortcut(KeyEvent.VK_Q));

quit.addActionListener(this);

file.add(quit);

Menu help = new Menu("Help");

mb.setHelpMenu(help);

MenuItem about = new MenuItem("About...");

about.addActionListener(this);

help.add(about);

}

public void actionPerformed(ActionEvent e) {

if (e.getActionCommand().startsWith("Open")) {

(new FileDialog(this, "Open", FileDialog.LOAD)).show();

}

else if(e.getActionCommand().startsWith("Save")) {

(new FileDialog(this, "Open", FileDialog.SAVE)).show();

}

else if(e.getActionCommand().startsWith("Quit")) {

System.exit(0);

}

else if(e.getActionCommand().startsWith("About")) {

(new AboutDialog(this)).show();

}

}

public void itemStateChanged(ItemEvent e) {

// any font related change

if (e.getSource()==cFont || e.getSource()==cBold || e.getSource()==cItalic) {

int style = cBold.getState() ? Font.BOLD : Font.PLAIN;

style = style | (cItalic.getState() ? Font.ITALIC : Font.PLAIN);

Font font = new Font(cFont.getSelectedItem(), style, 12);

textArea.setFont(font);

}

else if (e.getSource() == cBlack) {

if (cBlack.getState()) {

textArea.setForeground(Color.black);

}

}

else if (e.getSource() == cRed) {

if (cRed.getState()) {

textArea.setForeground(Color.red);

}

}

else if (e.getSource() == cGreen) {

if (cGreen.getState()) {

textArea.setForeground(Color.green);

}

}

else if (e.getSource() == cBlue) {

if (cBlue.getState()) {

textArea.setForeground(Color.blue);

}

}

}

class AboutDialog extends Dialog {

AboutDialog(Frame frame) {

super(frame, "About...", true);

Panel center = new Panel(new GridLayout(3, 1));

center.add(new Label(" "));

center.add(new Label(" PPOJ - laboratorium 4 "));

center.add(new Label(" "));

add (center, "Center");

Button ok = new Button("OK");

// handle button event in anonymous class

ok.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

AboutDialog.this.dispose();

}

});

add(ok, "South");

pack();

}

}

public static void main(String[] args) {

(new AWTTest()).show();

}

}



Wyszukiwarka

Podobne podstrony:
LAB4 DOC
LAB4 14 DOC
lab4 MOD doc
LAB4!17K DOC
Lab4
europejski system energetyczny doc
Lab4
KLASA 1 POZIOM ROZSZERZONY doc Nieznany
5 M1 OsowskiM BalaR ZAD5 doc
lab4 8
Opis zawodu Hostessa, Opis-stanowiska-pracy-DOC
Messerschmitt Me-262, DOC
Opis zawodu Robotnik gospodarczy, Opis-stanowiska-pracy-DOC
Opis zawodu Położna, Opis-stanowiska-pracy-DOC
Opis zawodu Przetwórca ryb, Opis-stanowiska-pracy-DOC

więcej podobnych podstron