Färgblandar Applet - men även Application
Provkör klassen
Tema:
- Panel
- Scrollbar
- Färger
- Hur man fär samma kod att fungera som både Applet och Application
- Konverteringar
Steg 1 - skapa själva blandaren
Skapa en fil med namnet MyPanel.java och sätt in följande kod:
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
// en klass baserad på en Panel
// skall bli en HTML "färgblandarkomponent"
public class MyPanel extends Panel
implements AdjustmentListener // för Scrollbar
{
// Sätt in tre Scrollbar för röd, grön och blå färg
// parametrarna är
// 1 Scrollbar.HORIZONTAL eller Scrollbar.VERTICAL för hur den
// skall visas (horisontellt eller vertikalt)
// 2 Startvärde
// 3 bredden på bubblan (hissen)
// 4 Minsta värde
// 5 Största värde
Scrollbar red = new Scrollbar(Scrollbar.HORIZONTAL ,0,0,0,256);
Scrollbar green = new Scrollbar(Scrollbar.HORIZONTAL,0,0,0,256);
Scrollbar blue = new Scrollbar(Scrollbar.HORIZONTAL,0,0,0,256);
// En textField för att visa HTML färgkoden
TextField code = new TextField("#000000");
// En Label som vi skall färglägga
Label color = new Label();
// denna sker när någon Scrollbar har fått sitt värde ändrat
public void adjustmentValueChanged(AdjustmentEvent e)
{
// Några String variabler för kommande behov
String hex;
String röd;
String grön;
String blå;
// Tag röda Scrollberens värde och använd Integer klassen för
// att konvertera detta värde till en hexadecimal sträng
röd = Integer.toHexString( red.getValue() );
// eftersom toHexString inte gör en utfyllnad med nollor
// för ensiffriga tal måste vi sköta om detta själva
// genom att skarva till en nolla före vid behov
// samma sak upprepas sedan med de andra värdena
if (röd.length() < 2)
röd = "0" + röd ;
grön = Integer.toHexString( green.getValue() );
if (grön.length() < 2)
grön = "0" + grön ;
blå = Integer.toHexString( blue.getValue() );
if (blå.length() < 2)
blå = "0" + blå ;
// HTML färgkode skall fara i formen #RRGGBB där RR är
// hexadecimal kod för röd, GG för grön och BB för blå
hex = "#" + röd + grön + blå ;
// sätt in detta värde men låt strängen konvertera innehållet
// till stora bokstäver
code.setText( hex.toUpperCase() );
// Sätt Labelns färg till den färg vi får om tar alla
// scrollbars värden och blandar ihop en färg
Color theColor = new Color(red.getValue(),
green.getValue(),
blue.getValue() );
color.setBackground( theColor );
}
// konstrueraren för vår panel
public MyPanel()
{
// måste säga åt alla Scrollbar att de skall medela åt
// denna panel om någonting sker
red.addAdjustmentListener( this );
green.addAdjustmentListener( this );
blue.addAdjustmentListener( this );
// istället för att skriva Röd, Grön och Blå vid Scrollbararna
// sätter vi dessa till en färg
// man kan även använda
// red.setBackground( Color.red ) ;
// för att få röd färg
red.setBackground( new Color( 255, 0 , 0 ) ) ;
green.setBackground( new Color( 0 , 255, 0 ) ) ;
blue.setBackground( new Color( 0 , 0 , 255 ) ) ;
color.setBackground( new Color( 0 , 0 , 0 ) ) ;
// skapa en GridLayout med tre rader och 1 kolumn som vi
// kan sätta in scrollbararna i
GridLayout grid = new GridLayout( 3 , 1 );
// skapa en BorderLayout för själva panelen
BorderLayout border = new BorderLayout();
// skapa en Panel med vår 3*1 GridLayout
Panel panel = new Panel( grid );
// sätt sedan i alla tre scrollbars i denna panel
panel.add(red);
panel.add(green);
panel.add(blue);
// sätt en BorderLayout på "huvudpanelen"
this.setLayout( border );
// lägg in den preparerade 3*1 panelen högst upp
this.add("North", panel );
// läg Labeln som skall färgläggas i mitten
this.add("Center", color);
// lägg textboxen för färgkoden längst ner
this.add("South", code);
}
}
Steg 2 - skapa Applet filen
Skapa en fil med namnet MyColor.java och sätt in följande kod:
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
public class MyColor extends Applet
{
// init måste alltid finnas i en Applet
public void init()
{
// för att få panelen att fylla ut helt sätter
// vi in den i mitten i en BorderLayout
this.setLayout( new BorderLayout( ) );
this.add( "Center", new MyPanel( ) );
}
}
Steg 3 - skapa Applikation filen
Skapa en fil med namnet MyApp.java och sätt in följande kod:
import java.awt.*;
import java.awt.event.*;
public class MyApp extends Frame
{
// måste ALLTID finnas i en applikation
public static void main(String args[])
{
// skapa fönstret
MyApp w = new MyApp();
// och gör det synligt
w.setVisible(true);
}
// konstrueraren för fönstret
public MyApp()
{
// förälderns konstruerare - för att få titel
super("HTML Colors");
// måste sätta en lämplig storlek på fönstret
setSize(320, 200);
// för att få panelen att fylla ut helt sätter
// vi in den i mitten i en BorderLayout
this.setLayout( new BorderLayout( ) );
this.add( "Center", new MyPanel( ) );
// för att kunna stänga fönstret måste vi hantera
// windowClosing händelsen. Detta sker här med
// hjälp av en s.k. anonym funktion -
// en som skapas "runtime" som parameter till en
// annan funktion
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
exit();
}
} );
}
// en egen exit funktion
public void exit()
{
setVisible(false); // göm fönstret
dispose(); // frigör alla resurser
System.exit(0); // åter till operativsustemet
}
}
Steg 4 - skapa en HTMLsida för testning av Appleten
Denna fil kan du kalla vad du vill men den måste innehålla följande
kod någonstans i BODY sektionen:
<applet
code=MyColor.class
name=MyColor
width=320
height=200 >
</applet>
Steg 5 - provkör
Efter att ha kompilerat samtliga filer kan du använda menyn:
Project, projektnamn Properties. Beroende på vad du väljer i
"When project loads, run:" kombon i dialogen, kommer du att antingen
köra Appleten eller Applicationen.
Om du har JRE installerat kan du även från kommandoprompten skriva
java MyApp när du finns i projektkatalogen. Om du inte har
JRE, men har MS J++ kan du istället skriva
jview MyApp