Dodatki








Dodatki




Dodatki

Dodatek A Unicode

UNICODE jest standardem kodowania znaków na
dwu bajtach, pozwalającym na zdefiniowanie 65536 znaków, bez
potrzeby używania różnych stron kodowych dla alfabetów
narodowych. Dla kodowania w standardzie ASCII (kodowanie na
jednym bajcie) mamy do dyspozycji jedynie 256 znaków i aby
uzyskać litery z różnych alfabetów narodowych, trzeba
stosować strony kodowe

W poniższej tabeli zestawiono znaki Unicode
kodujące polskie litery:



Litera

Kod
Unicode
Litera

Kod
Unicode


Ą
0104
Ó
00D3


ą
0105
ó
00F3


Ć
0106
Ś
015A


ć
0107
ś
015B


Ę
0118
Ź
0179


ę
0119
ź
017A


Ł
0141
Ż
017B


ł
0142
ż
017C



Tabela
6-1 Zestawienie znaków Unicode kodujących polskie litery.

Aby w programie Javy użyć znaków Unicode
stosujemy następującą konwencję:

\ukod_znaku

Przykład:

public void paint(Graphics g)
{
g.drawString("Dzi\u0119kuj\u0119 ",10,10);
}


Powyższa metoda paint()
apletu, drukuje na ekranie słowo Dziękuję.

Znaki Unicode są wyświetlane, jeśli system,
w którym uruchamiane są programy stosujące znaki Unicode
implementuje kodowanie znaków Unicode. W przypadku, gdy w
zbiorze czcionek nie jest dostępny obraz graficzny
reprezentujący dany znak, powinien być wyświetlony
automatycznie znak podobny (np. gdy brak litery Ś wyświetlana
jest litera S ).

Uwaga:

Obecnie standard Unicode nie jest jeszcze
zaimplementowany we wszystkich systemach operacyjnych i
przeglądarkach.

Tabele wszystkich znaków Unicode dostępne są
w Internecie pod adresem: http://www.unicode.org/

 

Dodatek B Zestawienie różnic między AWT 1.0 a AWT 1.1




obsługa zdarzeń AWT 1.0
obsługa zdarzeń AWT 1.1


Zdarzenie / Metoda
Wygenerowana przez
Interfejs
Metoda


ACTION_EVENT/action

Button, List,
MenuItem, TextField


ActionListener

actionPerformed(ActionEvent)



ACTION_EVENT/action
Checkbox,
CheckboxMenuItem
Choice

ItemListener

itemStateChanged(ItemEvent)



WINDOW_DESTROY
WINDOW_EXPOSE
WINDOW_ICONIFY
WINDOW_DEICONIFY

Dialog, Frame

WindowListener

windowClosing(WindowEvent)
windowOpened(WindowEvent)
windowIconified(WindowEvent)
windowDeiconified(WindowEvent)
windowClosed(WindowEvent)*
windowActivated(WindowEvent)*
windowDeactivated(WindowEvent)*



WINDOW_MOVED

Dialog, Frame

ComponentListener

componentMoved(ComponentEvent)
componentHidden(ComponentEvent)*
componentResized(ComponentEvent)*
componentShown(ComponentEvent) *



SCROLL_LINE_UP
SCROLL_LINE_DOWN
SCROLL_PAGE_UP
SCROLL_PAGE_DOWN
SCROLL_ABSOLUTE
SCROLL_BEGIN
SCROLL_END

Scrollbar

AdjustmentListener
(lub użyj nowej klasy
ScrollPanel)

adjustmentValueChanged(AdjustmentEvent)




LIST_SELECT
LIST_DESELECT


Checkbox,
CheckboxMenuItem
Choice, List

ItemListener

itemStateChanged(ItemEvent)



MOUSE_DRAG
/mouseDrag
MOUSE_MOVE
/mouseMove

Canvas, Dialog,
Frame, Panel,
Window

MouseMotionListener

mouseDragged(MouseEvent)
mouseMoved(MouseEvent)



MOUSE_DOWN /mouseDown
MOUSE_UP /mouseUp
MOUSE_ENTER
/mouseEnter
MOUSE_EXIT /mouseExit


Canvas, Dialog,
Frame, Panel,
Window

MouseListener

mousePressed(MouseEvent)
mouseReleased(MouseEvent)
mouseEntered(MouseEvent)
mouseExited(MouseEvent)
mouseClicked(MouseEvent)*



KEY_PRESS/keyDown
KEY_RELEASE/keyUp
KEY_ACTION /keyDown
KEY_ACTION_RELEASE
/keyUp

Component

KeyListener

keyPressed(KeyEvent)
keyReleased(KeyEvent)
keyTyped(KeyEvent)*



GOT_FOCUS/gotFocus
LOST_FOCUS/lostFocus

Component

FocusListener

focusGained(FocusEvent)
focusLost(FocusEvent)



brak odpowiednika
w wersji 1.0

 
ContainerListener

componentAdded(ContainerEvent)
componentRemoved(ContainerEvent)




brak
odpowiednika w wersji 1.0
 
TextListener

textValueChanged(TextEvent)



Uwagi:* brak odpowiednika w wersji 1.0




Tabela
6-2 Tabela konwersji obsługi zdarzeń z wersji AWT 1.0 do 1.1



"Stara" metoda
z AWT 1.0
Klasa w której nastąpiła zmiana
Wymiennik z AWT 1.1


action

Component

actionPerformed



AllowsMultipleSelections

List

isMultipleMode



appendText

TextArea

append



bounds

Component

getBounds



clear

List

removeAll



countComponents

Container

getComponentCount



countItems

Choice, List, Menu

getItemCount



countMenus

MenuBar

getMenuCount



deliverEvent

Component, Container

dispatchEvent



disable()

MenuItem

setEnabled(false)



enable()

Component, MenuItem

setEnabled(true)



enable(expression)

Component

setEnabled(expression)



getBoundingBox

Polygon

getBounds



getClipRect

Graphics

getClipBounds



getCurrent

CheckboxGroup

getSelectedCheckbox



getCursorType

Frame

metoda getCursor w klasie Component



getLineIncrement

Scrollbar

getUnitIncrement



getPageIncrement

Scrollbar

getBlockIncrement



getPeer

Component

No replacement.



GetVisible

Scrollbar

getVisibleAmount



gotFocus

Component

processFocusEvent



HandleEvent

Component

processEvent



Hide

Component

setVisible(false)



insertText

TextArea

insert



insets

Container

getInsets



inside

Component, Polygon,
Rectangle

contains



isSelected

List

isIndexSelected



keyDown

Component

processKeyEvent



KeyUp

Component

processKeyEvent



Layout

Component, Container,
ScrollPane

doLayout



locate

Component, Container

getComponentAt



location

Component

getLocation



lostFocus

Component

processFocusEvent



MinimumSize

Component, Container,
TextArea, TextField

getMinimumSize



mouseDown

Component

processMouseEvent



MouseDrag

Component

processMouseMotionEvent



MouseEnter

Component

processMouseEvent



MouseExit

Component

processMouseEvent



MouseMove

Component

processMouseMotionEvent



MouseUp

Component

processMouseEvent



Move

Component, Rectangle

setLocation



nextFocus

Component, Container,
Window

transferFocus



postEvent

Component, Window

dispatchEvent



preferredSize

Component,Container,
TextArea, TextField

getPreferredSize



replaceText

TextArea

replaceRange



reshape

Component, Rectangle

setBounds



resize

Component, Rectangle

setSize



setCurrent

CheckboxGroup

setSelectedCheckbox



setCursor

Frame

metoda setCursor w klasie Component



setEchoCharacter

TextField

setEchoChar



setLineIncrement

Scrollbar

setUnitIncrement



setMultipleSelections

List

setMultipleMode



setPageIncrement

Scrollbar

setBlockIncrement



show()

Component

setVisible(true)



show(expression)

Component

setVisible(expression)



size

Component

getSize




Tabela
6-3 Zestawienie zmian w AWT 1.1 w porównaniu do AWT 1.0

Uwaga: W tabeli tej zestawione są zmienione
elementy AWT nie uwzględniono tu nowych elementów AWT 1.1.


Dodatek C
Szkielet apletu wielowątkowego

Tworząc nowy aplet w środowisku Visual J++
1.1 możemy skorzystać ze standardowego szkieletu apletu
wielowątkowego, który możemy dowolnie modyfikować. W
przedstawionej w poniższym przykładzie wersji apletu, ładowane
są obrazki, które będą służyły jako klatki animacji. Po
załadowaniu wszystkich obrazków uruchamiany jest aplet.

Ten przykładowy kod, może być przez nas,
oczywiście, wykorzystany w innych środowiskach
programistycznych Javy przy tworzeniu apletów zawierających
animacje lub korzystających z wielowątkowości.

Przykład 6.1 Szkielet apletu wielowątkowego


//***************************************************************
// MultiAplet.java: Applet
//***************************************************************
import java.applet.*;
import java.awt.*;
//===============================================================
// Main Class for applet MultiAplet
//===============================================================
public class MultiAplet extends Applet implements Runnable
{
// THREAD SUPPORT:
// m_MultiAplet is the Thread object for the applet
//-----------------------------------------------------------
private Thread m_MultiAplet = null;

// ANIMATION SUPPORT:
// m_Graphics used for storing the applet's Graphics context
// m_Images[] the array of Image objects for the animation
// m_nCurrImage the index of the next image to be displayed
// m_ImgWidth width of each image
// m_ImgHeight height of each image
// m_fAllLoaded indicates whether all images have been loaded
// NUM_IMAGES number of images used in the animation
//------------------------------------------------------------
private Graphics m_Graphics;
private Image m_Images[];
private int m_nCurrImage;
private int m_nImgWidth = 0;
private int m_nImgHeight = 0;
private boolean m_fAllLoaded = false;
private final int NUM_IMAGES = 18;

// MultiAplet Class Constructor
//-----------------------------------------------------------
public MultiAplet()
{
// TODO: Add constructor code here
}

// APPLET INFO SUPPORT:
// The getAppletInfo() method returns a string describing the
// applet's author, copyright date, or miscellaneous information.
//--------------------------------------------------------------
public String getAppletInfo()
{
return "Name: MultiAplet\r\n" +
"Author: Artur Tyloch\r\n" +
"Created with Microsoft Visual J++ Version 1.1";
}
//The init() method is called by the AWT when an applet is first
//loaded or reloaded. Override this method to perform whatever
// initialization your applet needs, such as initializing data
// structures, loading images or fonts, creating frame windows,
// setting the layout manager, or adding UI components.
//------------------------------------------------------------
public void init()
{
// If you use a ResourceWizard-generated "control creator"
// class to arrange controls in your applet, you may want to
// call its CreateControls() method from within this method.
// Remove the following call to resize() before adding the call
// to CreateControls();
// CreateControls() does its own resizing.
//----------------------------------------------------------
resize(320, 240);

// TODO: Place additional initialization code here
}

// Place additional applet clean up code here. destroy() is
// called when when you applet is terminating and being unloaded.
//-------------------------------------------------------------
public void destroy()
{
// TODO: Place applet cleanup code here
}

// ANIMATION SUPPORT:
// Draws the next image, if all images are currently loaded
//-------------------------------------------------------------
private void displayImage(Graphics g)
{
if (!m_fAllLoaded)
return;

// Draw Image in center of applet
//-----------------------------------------------------------
g.drawImage(m_Images[m_nCurrImage],
(size().width - m_nImgWidth) / 2,
(size().height - m_nImgHeight) / 2, null);
}

// MultiAplet Paint Handler
//--------------------------------------------------------------
public void paint(Graphics g)
{
// ANIMATION SUPPORT:
// The following code displays a status message until all the
// images are loaded. Then it calls displayImage to display the
// current image.
//-----------------------------------------------------------
if (m_fAllLoaded)
{
Rectangle r = g.getClipRect();

g.clearRect(r.x, r.y, r.width, r.height);
displayImage(g);
}
else
g.drawString("Loading images...", 10, 20);

// TODO: Place additional applet Paint code here
}

// The start() method is called when the page containing the
// applet first appears on the screen. The AppletWizard's initial
// implementation of this method starts execution of
// the applet's thread.
//----------------------------------------------------------------
public void start()
{
if (m_MultiAplet == null)
{
m_MultiAplet = new Thread(this);
m_MultiAplet.start();
}
// TODO: Place additional applet start code here
}

// The stop() method is called when the page containing the
// applet is no longer on the screen. The AppletWizard's initial
// implementation of this method stops execution of
// the applet's thread.
//--------------------------------------------------------------
public void stop()
{
if (m_MultiAplet != null)
{
m_MultiAplet.stop();
m_MultiAplet = null;
}

// TODO: Place additional applet stop code here
}

// THREAD SUPPORT
// The run() method is called when the applet's thread is
// started. If your applet performs any ongoing activities without
// waiting for user input, the code for implementing that behavior
// typically goes here. For example, for an applet that performs
// animation, the run() method controls the display of images.
//----------------------------------------------------------------
public void run()
{
m_nCurrImage = 0;

// If re-entering the page, then the images have already
// been loaded.
// m_fAllLoaded == TRUE.
//------------------------------------------------------------
if (!m_fAllLoaded)
{
repaint();
m_Graphics = getGraphics();
m_Images = new Image[NUM_IMAGES];

// Load in all the images
//---------------------------------------------------------
MediaTracker tracker = new MediaTracker(this);
String strImage;

// For each image in the animation, this method first
// constructs a string containing the path to the image file;
// then it begins loading the image into the m_Images array.
// Note that the call to getImage will return before the
// image is completely loaded.
//---------------------------------------------------------
for (int i = 1; i <= NUM_IMAGES; i++)
{
// Build path to next image
//-------------------------------------------------------
strImage = "images/img00" + ((i < 10) ? "0" : "") +
i + ".gif";
m_Images[i-1] = getImage(getDocumentBase(), strImage);

tracker.addImage(m_Images[i-1], 0);
}

// Wait until all images are fully loaded
//----------------------------------------------------------
try
{
tracker.waitForAll();
m_fAllLoaded = !tracker.isErrorAny();
}
catch (InterruptedException e)
{
// TODO: Place exception-handling code here in case an
// InterruptedException is thrown by Thread.sleep(),
// meaning that another thread has interrupted this one
}

if (!m_fAllLoaded)
{
stop();
m_Graphics.drawString("Error loading images!", 10, 40);
return;
}


// Assuming all images are same width and height.
//---------------------------------------------------------
m_nImgWidth = m_Images[0].getWidth(this);
m_nImgHeight = m_Images[0].getHeight(this);
}
repaint();

while (true)
{
try
{
// Draw next image in animation
//-------------------------------------------------------
displayImage(m_Graphics);
m_nCurrImage++;
if (m_nCurrImage == NUM_IMAGES)
m_nCurrImage = 0;

// TODO: Add additional thread-specific code here
Thread.sleep(50);
}
catch (InterruptedException e)
{
// TODO: Place exception-handling code here in case an
// InterruptedException is thrown by Thread.sleep(),
// meaning that another thread has interrupted this one
stop();
}
}
}
// TODO: Place additional applet code here
}


Po uruchomieniu tego apletu na ekranie widzimy
obracającą się kulę ziemską:



Ilustracja 6-1 Obraz działania wygenerowanego przez
Visual J++ 1.1 szkieletu apletu.


Dodatek D
Kod apletu z buforowaniem MojRysownik

Opis patrz punkt.

import java.applet.*;
import java.awt.*;
public class MojRysownik extends Applet implements Runnable
{
private int m_X = 60, m_Y = 50, m_oldX, m_oldY;
private Thread animWatek;
private Font font;
private Graphics buforGraf;
private Image bufor;
private Dimension rozmiarBuf, d;
public void init()
{
d = this.size();
font = new Font("Arial", Font.BOLD, 20);
m_oldX=m_X;
m_oldY=m_Y;
}
public void start()
{
if (animWatek == null) animWatek = new Thread(this,"Rysownik");
animWatek.start();
}
public void stop()
{
if (animWatek != null) animWatek.stop();
animWatek=null;
}

public void run()
{
boolean lewo = true;
while (Thread.currentThread() == animWatek)
{
if (m_X > 110) lewo = true;
if (m_X < 10) lewo = false;
if (lewo)
{ m_X--; m_Y--; }
else
{ m_X++; m_Y++; }
repaint();
try {
Thread.sleep(50);
} catch (InterruptedException e){
}
}
}
private void kolka(Graphics g, int x)
{
for (int i = 0; i<7; i++ )
g.drawOval(x+i*21,30,20,20);
}

public void paint(Graphics g)
{ update(g); }
public void update(Graphics g)
{
// zmiena d przechowuje rozmiar obszaru rysowania na ekranie:
if ( (buforGraf == null) || (d.width != rozmiarBuf.width) || (d.height != rozmiarBuf.height) )
{
rozmiarBuf = d;
bufor = createImage(d.width, d.height);
buforGraf = bufor.getGraphics();
}
buforGraf.setFont(font);
buforGraf.setColor(getBackground());
buforGraf.fillRect(0, 0, d.width, d.height);
buforGraf.setColor(Color.black);
buforGraf.fillRect(10,50,280,25);
buforGraf.setColor(Color.white);
buforGraf.drawString("animacja z buforowaniem", m_X, 20);
buforGraf.setColor(Color.yellow);
buforGraf.drawString("autor: arturt tyloch", 40, m_Y);
buforGraf.setColor(Color.black);
kolka(buforGraf, m_X);
g.drawImage(bufor, 0, 0, this);
}
}




Dodatek E Wersja apletu ZaladujURL z obsługą zdarzeń w modelu
delegacyjnym

Opis
patrz.

import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class ZaladujURL extends Applet
{
public void init()
{
final Button btnZaladuj = new Button("Zaladuj strone");
final TextField txtCo = new
TextField("http://friko.onet.pl/po/arturt/index.html");
setLayout(new BorderLayout());
add("North",txtCo);
add("Center",btnZaladuj);
btnZaladuj.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
if (evt.getSource() == btnZaladuj)
try
{
getAppletContext().showDocument(new
java.net.URL(getCodeBase()+"tmp.html"),"_self");
}
catch (Exception exc)
{
exc.printStackTrace();
txtCo.setText("Zly adres");
}

}
});
}
}




Wyszukiwarka

Podobne podstrony:
CHEMIA materiały dodatkowe
20 Organizacja usług dodatkowych w zakładzie hotelarskim
22 Dodatki
8 DODATKI
warunki dodatkowe mikro lub kwasy
D20152211 zmieniające rozporządzenie w sprawie dodatków do uposażenia zasadniczego żołnierzy zawodow
bezkontaktowy dodatkowy dzwonek do telefonu
645 Informacja dodatkowa wprowadzenie do sprawozdania finasowego
ADNOTACJE krótka, dodatkowa notatka, informacja; dopisek, przypis, przypisek
Opinia Europejskiego Komitetu Ekonomiczno Społecznego w sprawie GMO w UE (opinia dodatkowa)
inf dodatk
Wyższa emerytura bez dodatkowego oszczędzania
Peugeot 508 napełnianie zbiornika dodatku(1)
znaki drogowe dodatkowe
Dodatki do emerytur i rent

więcej podobnych podstron