FileDialog fileDialog = null; if(arg...

Linki


» Dzieci to nie książeczki do kolorowania. Nie da się wypełnić ich naszymi ulubionymi kolorami.
»
return replaceStream;}// sprawdza, czy obiekt zapisu nie został już zainicjowanyif (replaceWriter != null) {throw new IOException("Obiekt zapisu...
»
go tam jeszcze znajdzie...
»
Ktoś wreszcie wspomniał o królów zamiarach,O biednych ludach, o despotach, carach,Izba znudzona krzyczy: "Do porządku!"Aż tu minister skarbu, jakby z...
»
- Na to teĹś nie ma czasu...
»
— Chętnie wysłucham — odparł Beaurain chowając kopertę do kieszeni...
»
XZD*DQ ]D F]\QQRß SRGNRURZ :LHOH ZVND]XMH QD WR *H QDWXUD EXGRZDåD DSDUDW UDFMRQDOQRFL QLH SRQDG DSDUDWHP ELRORJLF]QHM UHJXODFML OHF] UD]HP ] QLP´ >...
»
Dla nich bowiem typowe jest kreowanie popytu wtempie szybszym niż podaży, co wywołuje presję nawzrost cen, działającą od tej właśnie — tj...
»
67
»
Normalnego dnia Bracia spędzali w bibliotece od sześciu do ośmiu godzin...
»
3|51|Zaprawde, Bóg jest moim i waszym Panem! Przeto czcijcie Go! To jest droga prosta!"3|52|A kiedy Jezus poczul w nich niewiare, powiedzial: "Kto jest moim...

Dzieci to nie książeczki do kolorowania. Nie da się wypełnić ich naszymi ulubionymi kolorami.

equals("Save")) {
fileDialog =
new FileDialog(frame, "Save",
FileDialog.SAVE);
}
if(arg.equals("Load")) {
fileDialog =
new FileDialog(frame, "Load",
FileDialog.LOAD);
}
fileDialog.show();

154
dir = fileDialog.getDirectory();
file = fileDialog.getFile();
repaint();
return true;
}
return false;
}
public void paint(Graphics gDC)
{
gDC.drawString("Dir: " + dir, 10, 50);
gDC.drawString("File: " + file, 10, 70);
}
}

Program wyś wietla nazwę katalogu i pliku, wybrane w oknie dialogu plikowego.


_________________________________________________________________________________________
Kontrolki

Kontrolką jest sterownik stanowiący kompozycję komponentów. Komponenty zaleca się wyposażyć w metody
minimumSize i preferredSize, a na rzecz kontrolki wywołać metodę validate. W przeciwnym razie może się
zdarzyć, że elementy kontrolki nie będą właściwie wykreślane.


public Dimension minimumSize()
Metoda określa minimalny rozmiar komponentu.

public Dimension preferredSize()
Metoda określa ulubiony rozmiar komponentu.

public void validate()
Metoda powoduje ponowne przeliczenie rozmiarów i położenia komponentu.


Uwaga: Jedynym sposobem dodania metody minimumSize i preferredSize do klasy predefiniowanej (np.
Button), jest utworzenie jej podklasy.

Na przykład

class MyButton extends Button {
MyButton(String caption)
{
super(caption);
}
public Dimension minimumSize()
{
return new Dimension(20, 20);
}
// ...
}

Klasa MyButton moż e być uż ywana w taki sam sposób jak klasa Button.

Od klasy Button róż ni się własną metodą minimumSize.


Następujący aplet, pokazany podczas wykonywania na ekranie Kontrolka, ilustruje sposób wykorzystania
własnego sterownika (zdefiniowanego za pomocą klas Display i Key), z trójwymiarowymi przyciskami
umożliwiającymi wprowadzanie liczb całkowitych.

Uwaga: Przycisk S kontrolki oprogramowano w taki sposób, aby umożliwiał wyeksportowanie liczby ze
sterownika (klasa Display definiuje sterownik- wyś wietlacz, a klasa Key sterownik- przycisk).

155

Ekran Kontrolka
### display.gif

<applet code=Master.class width=130 height=180>
</applet>

===============================================

import java.applet.*;
import java.awt.*;

public
class Master extends Applet {
private Display theDisplay;
private TextField theCell;
public void init()
{
setLayout(new BorderLayout());
theCell = new TextField("Ready");
theDisplay = new Display();
add("North", theCell);
add("East", theDisplay);
}
public boolean mouseUp(Event evt, int x, int y)
{
int value = theDisplay.getValue();
theCell.setText(String.valueOf(value));
return true;
}
}

Aplet tworzy klatkę tekstową i wyś wietlacz z przyciskami. Procedura mouseUp rozpoznaje naciś nię cie przycisku
S wyś wietlacza i obsługuje je w taki sposób, ż e liczbę znajdują cą się w wyś wietlaczu wstawia do klatki.


Klasa Display

Klasa Display definiuje wyświetlacz z przyciskami. Zwolnienie przycisku S nie powoduje obsłużenia tego
zdarzenia (po naciśnięciu przycisku S metoda mouseUp zwraca false). Stwarza to możliwość obsłużenia go w
pojemniku kontrolki.

class Display extends Panel {
private int value = 0;
private Panel display = new Panel();
private TextField number = new TextField("0");
private Panel buttons = new Panel();
private static String labels = "7894561230 S";
private char lastKey = '0';

Display()
{
display.setLayout(new BorderLayout());
buttons.setLayout(new GridLayout(4, 3));
for(int i = 0; i < 12 ; i++) {
char chr = labels.charAt(i);
Key key = new Key(this, chr);
buttons.add(key);
}
display.add("North", number);
display.add("Center", buttons);
add(display);
}
public void setLastKey(char key)
{
lastKey = key;
}
int getValue()
{
return value;

156
}
void setValue(int value)
{
this.value = value;
number.setText(new String("" + value));
}
public boolean handleEvent(Event evt)
{
if(evt.id == Event.MOUSE_UP)
return mouseUp(evt, evt.x, evt.y);
return true;
}
public boolean mouseUp(Event evt, int x, int y)
{
switch(lastKey) {
case ' ':
value = 0;
number.setText("0");
return true;
case 'S':
return false; // nie obsłużono, posłano dalej
default:
int digit = lastKey - '0';
value = value * 10 + digit;
number.setText(String.valueOf(value));
return true;
}
}
}


Klasa Key

Klasa Key definiuje trójwymiarowy przycisk wyświetlacza. Efekt trójwymiarowości uzyskano przez
wykreślenie łuków w kolorze czarnym i białym. Wybrany rozmiar przycisków określa metoda preferredSize.

Naciśnięcie przycisku wyświetlacza powoduje wykreślenie go w postaci wciśniętej. Zwolnienie przycisku
powoduje zapamiętanie wciśniętego przycisku, ale bez obsłużenia tego zdarzenia (metoda mouseUp zwraca
false). Umożliwia to obsłużenie tego zdarzenia w pojemniku-wyświetlaczu Display.

class Key extends Panel {
Display display;
private char theKey;
private Color color;
private boolean mouseIsDown = false;

Key(Display display, char theKey)
{
this.display = display;
this.theKey = theKey;
}
public boolean mouseDown(Event evt, int x, int y)
{
mouseIsDown = true;
repaint();
return true;
}
public boolean mouseUp(Event evt, int x, int y)
{

Powered by MyScript