Avatar billede nocol Nybegynder
24. marts 2003 - 15:08 Der er 21 kommentarer og
1 løsning

udarbejdelse af applet program

Hejsa alle sammen,

Jeg har fået lavet nedenstående grundlayout herinde på eksperten, problemet er bare, at det skulle have været som applet så det kan komme ud på Internettet - når det engang er helt færdigt..Derfor ville jeg høre om der var nogen som kunne lave noget tilsvarende dette program - Derudover ville jeg gerne vide hvad jeg præcis skal gøre når jeg skal ligge et program op på en hjemmeside?

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

public class IdraetsProgram extends JFrame implements ActionListener {
   
    private static final String panel1Id = "Panel 1";
    private static final String panel2Id = "Panel 2";
    private static final String panel3Id = "Panel 3";
   
    private JRadioButton button1;
    private JRadioButton button2;
    private JRadioButton button3;
   
    private JPanel cardPanel;
    private CardLayout cards;
   
    public IdraetsProgram() {
        super("Idræt");
        setSize(400,400);
               
        JPanel radioPanel = new JPanel();
        radioPanel.setLayout(new BoxLayout(radioPanel, BoxLayout.Y_AXIS));
        radioPanel.setBorder(BorderFactory.createTitledBorder("Buttons"));
       
        cards = new CardLayout();
        cardPanel = new JPanel(cards);
        ButtonGroup group = new ButtonGroup();
       
        button1 = new JRadioButton("Vælg nr: "+1);
        button1.addActionListener(this);
       
        button2 = new JRadioButton("Vælg nr: "+2);
        button2.addActionListener(this);
       
        button3 = new JRadioButton("Vælg nr: "+2);
        button3.addActionListener(this);
       
        group.add(button1);
        group.add(button2);
        group.add(button3);
        radioPanel.add(button1);
        radioPanel.add(button2);
        radioPanel.add(button3);
               
        MainPanel panel1 = new MainPanel("1");
        MainPanel panel2 = new MainPanel("2");
        MainPanel panel3 = new MainPanel("3");
       
        cardPanel.add(panel1, panel1Id);
        cardPanel.add(panel2, panel2Id);
        cardPanel.add(panel3, panel3Id);
       
        getContentPane().add(cardPanel, BorderLayout.CENTER);
        getContentPane().add(radioPanel, BorderLayout.WEST);
    }
   
    public void actionPerformed(ActionEvent event) {
        if( event.getSource() == button1 ) {
            cards.show(cardPanel, panel1Id);
        }
        else if( event.getSource() == button2 ) {
            cards.show(cardPanel, panel2Id);
        }
        else if( event.getSource() == button3 ) {
            cards.show(cardPanel, panel3Id);
        }
    }
   
    private class MainPanel extends JPanel {
       
        public MainPanel(String name) {
            super(new BorderLayout());
           
            JLabel label = new JLabel(name);
            JTextPane pane = new JTextPane();
            pane.setText("Du har nu valgt panel nr: " +name);
           
            add(label, BorderLayout.NORTH);
            add(new JScrollPane(pane), BorderLayout.CENTER);
        }
    }
}

class Go {
    public static void main(String[] args) {
      new IdraetsProgram().show();
  }
}
Avatar billede magoo20000 Nybegynder
24. marts 2003 - 15:27 #1
Du skal arve fra Applet eller JApplet, og så skal du have en init().
Avatar billede magoo20000 Nybegynder
24. marts 2003 - 15:38 #2
Du bruger Swing komponenter, så du bør arve fra JApplet, men så skal du vide, at det ikke er alle browsere, der understøtter dette!

Hvis folk skal have adgang til appletten fra din hjemmeside, skal du natruligvis lave en reference til den fra dit html. Den bliver så hentet fra serveren og kører i klientens virtuelle maskine (JVM).
Avatar billede magoo20000 Nybegynder
24. marts 2003 - 15:45 #3
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

public class Appletten extends JApplet implements ActionListener{

    private static final String panel1Id = "Panel 1";
    private static final String panel2Id = "Panel 2";
    private static final String panel3Id = "Panel 3";

    private JRadioButton button1;
    private JRadioButton button2;
    private JRadioButton button3;

    private JPanel cardPanel;
    private CardLayout cards;

public void init() {
        setSize(400,400);

        JPanel radioPanel = new JPanel();
        radioPanel.setLayout(new BoxLayout(radioPanel, BoxLayout.Y_AXIS));
        radioPanel.setBorder(BorderFactory.createTitledBorder("Buttons"));

        cards = new CardLayout();
        cardPanel = new JPanel(cards);
        ButtonGroup group = new ButtonGroup();

        button1 = new JRadioButton("Vælg nr: "+1);
        button1.addActionListener(this);

        button2 = new JRadioButton("Vælg nr: "+2);
        button2.addActionListener(this);

        button3 = new JRadioButton("Vælg nr: "+2);
        button3.addActionListener(this);

        group.add(button1);
        group.add(button2);
        group.add(button3);
        radioPanel.add(button1);
        radioPanel.add(button2);
        radioPanel.add(button3);

        MainPanel panel1 = new MainPanel("1");
        MainPanel panel2 = new MainPanel("2");
        MainPanel panel3 = new MainPanel("3");

        cardPanel.add(panel1, panel1Id);
        cardPanel.add(panel2, panel2Id);
        cardPanel.add(panel3, panel3Id);

        getContentPane().add(cardPanel, BorderLayout.CENTER);
        getContentPane().add(radioPanel, BorderLayout.WEST);
    }

    public void actionPerformed(ActionEvent event) {
        if( event.getSource() == button1 ) {
            cards.show(cardPanel, panel1Id);
        }
        else if( event.getSource() == button2 ) {
            cards.show(cardPanel, panel2Id);
        }
        else if( event.getSource() == button3 ) {
            cards.show(cardPanel, panel3Id);
        }
    }

    private class MainPanel extends JPanel {

        public MainPanel(String name) {
            super(new BorderLayout());

            JLabel label = new JLabel(name);
            JTextPane pane = new JTextPane();
            pane.setText("Du har nu valgt panel nr: " +name);

            add(label, BorderLayout.NORTH);
            add(new JScrollPane(pane), BorderLayout.CENTER);
        }
    }

    }
/*
class Go {
    public static void main(String[] args) {
      new IdraetsProgram().show();
  }*/
Avatar billede magoo20000 Nybegynder
24. marts 2003 - 15:45 #4
Der er ingen main() i en Applet :-)
Avatar billede nocol Nybegynder
24. marts 2003 - 16:02 #5
nej, det ved jeg godt...og tak - det ser skide godt ud...Hvis nu jeg vil have det oploadet til en hjemmeside...og det skal ligge på en allerede udarbejdet HTML side - hvad skal man så gøre?
Avatar billede magoo20000 Nybegynder
24. marts 2003 - 16:06 #6
Du skal inkludere Applet tag'et i din HTML:
<html>
<applet codebase="" code="Appletten.class" width=600 height=400>
</applet>
<html>
Avatar billede magoo20000 Nybegynder
24. marts 2003 - 16:19 #7
Avatar billede magoo20000 Nybegynder
24. marts 2003 - 19:25 #8
Virker det?
Avatar billede =maddog= Nybegynder
24. marts 2003 - 19:53 #9
Det (indtil videre) ud til at være en rimelig simpel applet. Hvis det er gennemgående ville jeg arve fra Applet og lave det i AWT hvis dette overhovedet er muligt, så en masse brugere ikke skal til at downloade JVM med de problemer det medfører.
Avatar billede nocol Nybegynder
24. marts 2003 - 20:44 #10
Til =maddog=,

Det vil være et program som skal hente noget fra en database...så selve layout delen bliver ikke mere kompliceret end det det er nu!

Jeg har dog ikke forstand på det du laver så hvis du har et udkast til hvordan ovenstående program skal laves på din måde - må du meget gerne det...
Avatar billede magoo20000 Nybegynder
24. marts 2003 - 21:04 #11
Ja, enig. Indtil videre er der en del problemer med JApplets. Det er lidt en skam, idet Swing har den fordel, at den ikke benytter native kode, som f.eks. Awt gør.
Avatar billede magoo20000 Nybegynder
24. marts 2003 - 21:35 #12
Eksemplet kræver lidt mere med Awt, idet der ikke eksisterer radiobuttons der. JRadiobutton er en del af Swing - jeg mener de kom med fra SDK 1.3.

Man kan godt lave tilsvarende med Awt - løsningen her kunne være at samle checkboxes, der er grupperet sammen i en CheckboxGroup.
Avatar billede magoo20000 Nybegynder
24. marts 2003 - 21:45 #13
Avatar billede =maddog= Nybegynder
24. marts 2003 - 23:10 #14
Jeg har lavet en del letvægtskomponenter (altså uden nativ kode) til AWT, det bl.a. understøtter transparency.
Hvis det har interesse kan jeg pakke dem og ligge dem tilgengængeligt ud på nettet.
Et eksempel på brugen kan findes i denne AWT applet (vælg punktet "Scan for effect")
http://morrowind.melian.cc/potionmachine/
Avatar billede =maddog= Nybegynder
24. marts 2003 - 23:22 #15
Og for at give endnu et link til sværvægts-/letvægtskomponent debatten så er her et link fra sun's eget ekspert-panel med grafiske eksempler på hvor galt det kan gå (eksemplet med interne frames er noget man frygter med gru - grafisk blokering af titelbaren.
Hvis du vil teste det selv så prøv
public class EmptyButton extends Button {
public EmptyButton(String s) { super(s) }
public void paint(Graphics g) {
  // nu laver vi en fuldstændig tom paint metode
  // og så skulle der jo ikke være antydningen af en
  // knap vel!? Det er der bare alligevel for i Button
  // klassen bliver den platforms-afhængige native kode
  // til at danne en knap kaldt via en
  // static {
  //  native void C++KODE
  // }
  // blok og den kan vi ikke gøre noget ved. Ikke engang z-index!
}
}
Avatar billede =maddog= Nybegynder
24. marts 2003 - 23:23 #16
Avatar billede magoo20000 Nybegynder
25. marts 2003 - 08:48 #17
maddog >> Det ser interessant ud. Jeg vil meget gerne se nærmere på det - vil du ligge det på nettet?
Avatar billede =maddog= Nybegynder
25. marts 2003 - 18:02 #18
Det vil jeg gøre. Det meste af koden mangler kommentering så det kan være det først bliver i morgen.
Avatar billede nocol Nybegynder
25. marts 2003 - 20:01 #19
ja, selvom jeg ikke er den store haj - vil jeg da også gerne se på det...

Det program, som du har lavet, har måske ikke det omtalte problem med at folk skal til at downloade JVM ?
Avatar billede =maddog= Nybegynder
25. marts 2003 - 22:13 #20
Det har den nemlig ikke. Den er Java 1.1 kompatibel og kan afvikles i IE4 og NS4.2+ uden yderligere JVM en den der er i browseren.
Avatar billede =maddog= Nybegynder
25. marts 2003 - 22:51 #21
www.dsr.kvl.dk/~maddog/applets/AWTgui.zip
indeholder hvad jeg lige har på lager. noget af det er lidt halvfærdigt, men jeg bygger på det efterhånden som jeg får brug for det.
I er velkommen til at bruge det og ændre det efter behov, men jeg ville sætte pris på en lille comment i så fald (// xgui classes by Brian maddog Eriksen).
Jeg laver disse komponenter efterhånden som behovet opstår. Det er ofte at der bliver sat pris på en JVM fri applet.
Avatar billede nocol Nybegynder
28. marts 2003 - 22:08 #22
Hej igen - jeg har vist ikke helt den store viden om dette som i - derfor kunne det være fedt, igen, hvis en af jer gad udarbejde et design, lignende det magoo2000 lavede, men som ikke har det problem som =maddog= snakker
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