Gå til innhold

enkel innføring i hvordan lage applet


Anbefalte innlegg

Videoannonse
Annonse

Her er et lite program jeg ikke har kompilert og testet (av åpenbare grunner (noen poster nedenfor)) - men burde funke bra, demonstrerer online applet.

 

import java.awt.*;
import java.awt.event.*;
import javax.swing.*; // import java.applet.* for stygge komponenter


public class Testprogram extends JApplet
{
private JButton button = new JButton("Klikk her");
private JLabel label = new JLabel("");
private int teller = 0;

   void init() // main metoden til online applets
 {
    button.addActionListener(new ButtonListener()); // lytter til knappen

   Container cp = getContentPane(); // container for appleten
   cp.setLayout(new FlowLayout());
   cp.add(button);
   cp.add(label);
  setSize(300,35);
 }
 // så trenger vi en knappelytter 

   private class ButtonListener implements ActionListener
 { 
   public void actionPerformed(ActionEvent event)
  {
      teller++;
      label.setText(Integer.toString(teller));
      repaint(); // valgfri
   }

 }
}

 

Det burde funke. Går også ann med main metode. Største forskjellen er at basic filbehandling ikke fungerer.

Lenke til kommentar

aaah, føler meg i det konstruktive hjørnet idag.

Her er eksempel på applet med main metode:

 

Main metode brukes hovedsakelig (av meg iallfall ;) ) for å kombinere flere paneler enkelt. Dette finner du ut av selv...

 

 

On to the codage: (og jau - eksempelet kommer fra Java Software Solutions v.3)

// Dots.java
public class Dots
{
 public static void main(String[] args)
 {
  JFrame dotsFrame = new JFrame("Dots");
  dotsFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  dotsFrame.getContentPane().add(new DotsPanel());
  dotsFrame.pack();
  dotsFrame.show();
 }
}
// Så enkelt var det.... 
// Men la oss fixe DotsPanel
// DotsPanel.java

mport javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class DotsPanel extends JPanel
{
  private final int WIDTH = 300, HEIGHT = 200;
  private final int RADIUS = 6;

  private ArrayList pointList;
  private int count;

  //-----------------------------------------------------------------
  //  Sets up this panel to listen for mouse events.
  //-----------------------------------------------------------------
  public DotsPanel()
  {
     pointList = new ArrayList();
     count = 0;

     addMouseListener (new DotsListener());

     setBackground (Color.black);
     setPreferredSize (new Dimension(WIDTH, HEIGHT));
  }

  //-----------------------------------------------------------------
  //  Draws all of the dots stored in the list.
  //-----------------------------------------------------------------
  public void paintComponent (Graphics page)
  {
     super.paintComponent(page);

     page.setColor (Color.green);

     // Retrieve an iterator for the ArrayList of points
     Iterator pointIterator = pointList.iterator();

     while (pointIterator.hasNext())
     {
        Point drawPoint = (Point) pointIterator.next();
        page.fillOval (drawPoint.x - RADIUS, drawPoint.y - RADIUS,
                       RADIUS * 2, RADIUS * 2);
     }

     page.drawString ("Count: " + count, 5, 15);
  }

  //*****************************************************************
  //  Represents the listener for mouse events.
  //*****************************************************************
  private class DotsListener implements MouseListener
  {
     //--------------------------------------------------------------
     //  Adds the current point to the list of points and redraws
     //  whenever the mouse button is pressed.
     //--------------------------------------------------------------
     public void mousePressed (MouseEvent event)
     {
        pointList.add (event.getPoint());
        count++;
        repaint();
     }

     //-----------------------------------------------------------------
     //  Provide empty definitions for unused event methods.
     //-----------------------------------------------------------------
     public void mouseClicked (MouseEvent event) {}
     public void mouseReleased (MouseEvent event) {}
     public void mouseEntered (MouseEvent event) {}
     public void mouseExited (MouseEvent event) {}
  }
} 

 

Lykke til videre :)

Lenke til kommentar

Hei.

Tenkte jeg også skule prøve meg litt på Java (bruker C++ til vanlig)

og prøvde et av eksemplene, men fik det ikke til....

<applet>
import java.awt.*;
import java.awt.event.*;
import javax.swing.*; // import java.applet.* for stygge komponenter


public class Testprogram extends JApplet
{
private JButton button = new JButton("Klikk her");
private JLabel label = new JLabel("");
private int teller = 0;

  void init() // main metoden til online applets
{
   button.addActionListener(new ButtonListener()); // lytter til knappen

  Container cp = getContentPane(); // container for appleten
  cp.setLayout(new FlowLayout());
  cp.add(button);
  cp.add(label);
 setSize(300,35);
}
// så trenger vi en knappelytter 

  private class ButtonListener implements ActionListener
{ 
  public void actionPerformed(ActionEvent event)
 {
     teller++;
     label.setText(Integer.toString(teller));
     repaint(); // valgfri
  }

}
}
</applet>

Er det bare at browseren min ikke har støte for java?

 

Edit: Bør kanskje si hva som er galt...

Får et helt grått område i vinduet..

Endret av <BøNilzen>
Lenke til kommentar
Hei.

Tenkte jeg også skule prøve meg litt på Java (bruker C++ til vanlig)

og prøvde et av eksemplene, men fik det ikke til....

<applet>
import java.awt.*;
import java.awt.event.*;
import javax.swing.*; // import java.applet.* for stygge komponenter


public class Testprogram extends JApplet
{
private JButton button = new JButton("Klikk her");
private JLabel label = new JLabel("");
private int teller = 0;

  void init() // main metoden til online applets
{
   button.addActionListener(new ButtonListener()); // lytter til knappen

  Container cp = getContentPane(); // container for appleten
  cp.setLayout(new FlowLayout());
  cp.add(button);
  cp.add(label);
 setSize(300,35);
}
// så trenger vi en knappelytter 

  private class ButtonListener implements ActionListener
{ 
  public void actionPerformed(ActionEvent event)
 {
     teller++;
     label.setText(Integer.toString(teller));
     repaint(); // valgfri
  }

}
}
</applet>

Er det bare at browseren min ikke har støte for java?

 

Edit: Bør kanskje si hva som er galt...

Får et helt grått område i vinduet..

Du kan ikke plassere kildekoden i html filen, den må kompileres til en bytecode fil (.class) som så lastes opp på nettstedet og refereres fra en <applet> tag.

Lenke til kommentar

lærte meg java for endel år siden og lagde da endel applets. har lagt merke til at alle eksemplene her inneholder følgende:

 

import java.swing.*;

 

er dette fordi dette er en 'oppgradering' som lager finere/bedre utseene/design på appleten?

 

noen tips angående litteratur til en stakkar som holder på å ta opp igjen java? lest igjennom 'java for dummies' som jeg kjøpte for en del år siden og lest litt i 'ivor nortons beginning java' men den er så tunglest...

Lenke til kommentar
lærte meg java for endel år siden og lagde da endel applets. har lagt merke til at alle eksemplene her inneholder følgende:

 

import java.swing.*;

 

er dette fordi dette er en 'oppgradering' som lager finere/bedre utseene/design på appleten?

I Java 2 (1.2 og nyere ) ble javax biblioteket innført (java extended) med bla. swing som en oppgradering. De synlige forskjellene er det ser mye bedre ut med bla. annet forskjelling 'look and feel' innebygget (f.eks standard java, windows og gtk+ looks innebygget). De har vert tilgjengelig en stund, men siden M$ sin VM som fulgte med IE inntil nylig er basert på Java 1.1.3 har de normalt ikke vert kompatible med IE.

 

Graphics2D er også kommet med som en kraftig forbedring av de gamle java.awt.Graphics grensesnittet og standardimplementasjonene fra det gamle AWT rammeverket. Fra Java 1.4.0 er mange 'offscreen' tegneoperasjoner implementert med Direct Draw (win)/ DRI (nix) som gir en grunnleggende HW aksellerasjon til primitive operasjoner slik at Java faktisk er blitt raskere enn f.eks C med SDL mot en software buffer. Myten om at java ikke egner seg til grafikk begynner så smått å bli utdatert.

 

De nye klassene oppfører seg også litt anderledes, men det merker du fort når du begynner å programmere mot dem.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...