Avatar billede bagnavnet Nybegynder
04. december 2004 - 16:04 Der er 9 kommentarer og
1 løsning

Frame vist i browser

Hej,

Jeg har følgende:
-------------------------------------------------
import java.awt.*;
import java.awt.event.*;

public class GrafiskVindue extends Frame
{
  Label labelHvadErDitNavn = new Label();
  TextField textFieldNavn = new TextField();
  Button buttonOpdater = new Button();
  TextArea textAreaHilsen = new TextArea();

  public void paint(Graphics g)
  {
    g.drawLine(0,0,50,50);
    g.fillOval(5,20,300,30);

    g.setColor(Color.green);
    String navn = textFieldNavn.getText();
    for (int i=0; i<50; i=i+10)
      g.drawString("Hej "+navn+" !",100+i,30+i);
  }

  // Udviklingsværktøj definerer gerne en separat metode hvor de
  // initialiserer komponenterne. I JBuilder og JDeveloper hedder
  // den jbInit(), mens den hedder initComponents() i Forte/Betbeans.
  // Initialiseringen kunne dog lige så godt ligge direkte her i konstruktøren

  public GrafiskVindue() {
    try {
      jbInit();
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }

  // Udviklingsværktøjets initialisering af komponenter.
  // Ændr med varsomhed, ellers kan værktøjet ikke genkende "sin" kode.

  private void jbInit() throws Exception {
    labelHvadErDitNavn.setText("Hvad er dit navn?");
    labelHvadErDitNavn.setBounds(new Rectangle(15, 69, 108, 15));
    textFieldNavn.setText("Jacob");
    textFieldNavn.setBounds(new Rectangle(129, 61, 95, 29));
    buttonOpdater.setLabel("opdater!");
    buttonOpdater.setBounds(new Rectangle(231, 60, 91, 32));
    buttonOpdater.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        buttonOpdater_actionPerformed(e);
      }
    });
    textAreaHilsen.setText("Her kommer en tekst...");
    textAreaHilsen.setBounds(new Rectangle(6, 102, 316, 78));
    this.setLayout(null);
    this.add(labelHvadErDitNavn, null);
    this.add(textAreaHilsen, null);
    this.add(buttonOpdater, null);
    this.add(textFieldNavn, null);
  }

  void buttonOpdater_actionPerformed(ActionEvent e) {
    String navn = textFieldNavn.getText();
    System.out.println("Opdater! navn="+navn);
    textAreaHilsen.setText("Hej kære "+navn);
    repaint(); // gentegn vinduet
  }
}
---------------------------------------------
public class VisGrafiskVindue
{
  public static void main(String[] arg)
  {
    GrafiskVindue vindue = new GrafiskVindue();  // opret vinduet
    vindue.setSize(350,60);                      // sæt vinduets størrelse
    vindue.setTitle("GrafiskVindue");            // sæt vinduets titel
    vindue.setVisible(true);                      // åbn vinduet
  }
}
--------------------------------------
Html dokumentet ser således ud:
<html>
<head>
  <title>

  Programmet

  </title>
</head>

<body>

  Velkommen til siden!
  <br>
  <applet code="GrafiskVindue.class" width=400 height=300></applet>
  <br>
  Slut herfra!

</body>
</html>
--------------------------------------
Med dette html-dokument kan jeg godt få vist applets, men ikke ovenstående kode (frame). Kan jeg gøre framen til applet eller kan jeg få vist framen på browseren som frame? I så fald hvordan?

Håber I kan hjælpe...
Avatar billede arne_v Ekspert
04. december 2004 - 16:06 #1
Det plejer at være ganske få rettelser man skal lave, hvis man konverterer en Frame
til en Applet (eller en JFrame til en JApplet).

Så bare prøv og ret de par småting som compikeren evt. brokker sig over.
Avatar billede arne_v Ekspert
04. december 2004 - 16:09 #2
Jeg prøvede lige med din kode.

Ændrede Frame til Applet

Tilføjede:

import java.applet.Applet;

og voila så kunne dne vises i appletviewer !
Avatar billede bagnavnet Nybegynder
04. december 2004 - 16:16 #3
Jeg har lige forsøgt, har lavet ændringerne, men når jeg åbner mit html dok. viser den bare en stor grå boks og et kryds i venstre hjøre.
Skal jeg slette min "VisGrafiskeKomponenter"? Eller pejer min html dok. forkert?
Avatar billede arne_v Ekspert
04. december 2004 - 16:17 #4
Check i Java Console hvilken fejl du får.
Avatar billede bagnavnet Nybegynder
04. december 2004 - 16:26 #5
Jeg får denne fejl:
java.lang.ClassCastException

    at sun.applet.AppletPanel.createApplet(Unknown Source)

    at sun.plugin.AppletViewer.createApplet(Unknown Source)

    at sun.applet.AppletPanel.runLoader(Unknown Source)

    at sun.applet.AppletPanel.run(Unknown Source)

    at java.lang.Thread.run(Unknown Source)
Avatar billede arne_v Ekspert
04. december 2004 - 16:28 #6
Og du har rettet

public class GrafiskVindue extends Frame

til

public class GrafiskVindue extends Applet

og compilet ?
Avatar billede bagnavnet Nybegynder
04. december 2004 - 16:38 #7
Sådan ser koden ud nu:
------------------------------------

import java.awt.event.*;

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


public class GrafiskVindue extends Applet
{
  Label labelHvadErDitNavn = new Label();
  TextField textFieldNavn = new TextField();
  Button buttonOpdater = new Button();
  TextArea textAreaHilsen = new TextArea();

  public void paint(Graphics g)
  {
    g.drawLine(0,0,50,50);
    g.fillOval(5,20,300,30);

    g.setColor(Color.green);
    String navn = textFieldNavn.getText();
    for (int i=0; i<50; i=i+10)
      g.drawString("Hej "+navn+" !",100+i,30+i);
  }

  // Udviklingsværktøj definerer gerne en separat metode hvor de
  // initialiserer komponenterne. I JBuilder og JDeveloper hedder
  // den jbInit(), mens den hedder initComponents() i Forte/Betbeans.
  // Initialiseringen kunne dog lige så godt ligge direkte her i konstruktøren

  public GrafiskVindue() {
    try {
      jbInit();
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }

  // Udviklingsværktøjets initialisering af komponenter.
  // Ændr med varsomhed, ellers kan værktøjet ikke genkende "sin" kode.

  private void jbInit() throws Exception {
    labelHvadErDitNavn.setText("Hvad er dit navn?");
    labelHvadErDitNavn.setBounds(new Rectangle(15, 69, 108, 15));
    textFieldNavn.setText("Jacob");
    textFieldNavn.setBounds(new Rectangle(129, 61, 95, 29));
    buttonOpdater.setLabel("opdater!");
    buttonOpdater.setBounds(new Rectangle(231, 60, 91, 32));
    buttonOpdater.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        buttonOpdater_actionPerformed(e);
      }
    });
    textAreaHilsen.setText("Her kommer en tekst...");
    textAreaHilsen.setBounds(new Rectangle(6, 102, 316, 78));
    this.setLayout(null);
    this.add(labelHvadErDitNavn, null);
    this.add(textAreaHilsen, null);
    this.add(buttonOpdater, null);
    this.add(textFieldNavn, null);
  }

  void buttonOpdater_actionPerformed(ActionEvent e) {
    String navn = textFieldNavn.getText();
    System.out.println("Opdater! navn="+navn);
    textAreaHilsen.setText("Hej kære "+navn);
    repaint(); // gentegn vinduet
  }
}
----------------------------------------------------
Hvis jeg forsøger at "run" den som applet i eclipse siger den: No applet found!
Avatar billede bagnavnet Nybegynder
04. december 2004 - 16:41 #8
hov, nu ser det sgu ud til at virke...hmm
Avatar billede bagnavnet Nybegynder
04. december 2004 - 16:44 #9
Sejt! Tak for hjælpen.
Avatar billede arne_v Ekspert
04. december 2004 - 16:48 #10
Godt

så ligger jeg et svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester