Avatar billede fasterlars Nybegynder
19. november 2006 - 22:08 Der er 10 kommentarer

Lave et billede til en knap

Hej.

Jeg er ny til java, og har intet held haft med at finde svar på mit spørgsmål andre steder på nettet.

Jeg har denne simple java kode, som viser 2 billeder på forskellige koordinater.

Hvordan assigner jeg en action, til hver af billederne, så de altså fungerer som knapper? Funktionen på f.eks. billede 1, skal være at man kan ændre billede 2, så det bliver erstattet af f.eks. billede 3. Desuden skal der være onmouseover funktioner på knapperne.

Tak!

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

public class interface1 extends Applet {

public void update(Graphics g)
{
        paint(g);
    }


  public void paint(Graphics g) {
    URL u = getCodeBase();
    Image interfaceny_01 = getImage(u, "interfaceny_01.gif");
    Image interfaceny_02 = getImage(u, "interfaceny_02.gif");
    Image interfaceny_03 = getImage(u, "interfaceny_03.gif");
   
    Dimension d = getSize();
    int h = d.height;
    int w = d.width;

    g.drawImage(interfaceny_01, 0, 0, this);     
    g.drawImage(interfaceny_02, 51, 0, this);
    g.drawImage(interfaceny_03, 440, 0, this);
   
   
  }
}
Avatar billede winners79 Nybegynder
19. november 2006 - 22:57 #1
http://www.eksperten.dk/spm/744681

er det, det der du tænker på?
Avatar billede fasterlars Nybegynder
20. november 2006 - 09:46 #2
Tak for dit svar!

Jeg har kigget på det spørgsmål du linker til, og tror sagtens at det ville kunne bruges! Problemet er bare, at jeg som sagt er grøn i faget, og jeg har altså ikke kunne greje hvordan jeg sætter det ind i en JButton, og tilføjer imageicon..
Syntes godt nok det er noget langhåret, selvom det her er den simple del af java.
Kan du overtales til at vise et ganske simpelt eksempel?
Avatar billede winners79 Nybegynder
20. november 2006 - 11:04 #3
public static void main(String[] args) {
        JFrame frame = new JFrame();
       
       
        ImageIcon icon = new ImageIcon("blue-man01.png");
        label = new JLabel(icon);
        label.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent e) {
                label.setIcon(new ImageIcon("blue-man02.png"));
            }
        });
       
       
        frame.add(label);
        frame.setVisible(true);
        frame.pack();
       

    }
Avatar billede fasterlars Nybegynder
20. november 2006 - 14:43 #4
Tak for eksemplet.
Den vil dog ikke kompilere da den ikke kan genkende variablen label.
Har dog inkluderet java.awt.*; og javax.swing.*;
Ved du hvad der kan være galt?

Desuden, hvor definerer jeg hvilke billeder den skal skifte til ved f.eks. mouseover?
Avatar billede winners79 Nybegynder
20. november 2006 - 14:56 #5
// static da den skal bruges i main bare som eksemple, undgå at brug static variabler // ellers
private static JLabel label;

public static void main(String[] args) {
        JFrame frame = new JFrame();
     
     
        ImageIcon icon = new ImageIcon("blue-man01.png");
        label = new JLabel(icon);
        label.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent e) {
                label.setIcon(new ImageIcon("blue-man02.png"));
            }
        });
     
     
        frame.add(label);
        frame.setVisible(true);
        frame.pack();
     

    }
Avatar billede mikkelbm Nybegynder
20. november 2006 - 16:43 #6
"undgå at brug static variabler" - Det kommer vel meget an på hvad ens formål med variablerne er? :)
Avatar billede mikkelbm Nybegynder
20. november 2006 - 16:46 #7
Jeg kan være enig så langt, at man skal undgå statiske variabler i forbindelse med gui-controls, da disse kun kan vises et sted ad gangen, og det derfor ikke vil give mening at opbevare en statisk instans af dem. Men igen kan det forsvares at bruge statiske variabler der også.
Avatar billede fasterlars Nybegynder
21. november 2006 - 21:46 #8
Hej.

Nu kan den sagtens kompilere.
Dog kan jeg ikke se nogle billeder, hverken i applet viewer eller i min browser.
Det er vel frame.add(label); som adder det til canvas? Og jo, billederne ligger i samme mappe :)
Avatar billede mikkelbm Nybegynder
21. november 2006 - 22:17 #9
I samme mappe som hvad? .class filerne eller .java filerne?

Og hvordan kører du programmet?
Avatar billede fasterlars Nybegynder
21. november 2006 - 22:28 #10
Jeg bruger bluej, som lægger alle filer i samme mappe som "projektet" er oprettet i. Både .java og .class filerne. I samme mappe ligger så billederne. Den generer så en html fil som jeg kan køre bagefter. Og så har den så en applet viewer funktion. Kan ikke se nogle af billederne på nogle af disse måder. Det er dog ikke png, men gif jeg henviser til, men det burde vel ikke have noget at sige...
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