Avatar billede sfriis Nybegynder
13. april 2003 - 22:20 Der er 6 kommentarer og
1 løsning

Image på Button

Jeg er ved at lave en Swing JAplet om til AWT men kan ikke finde ud af at loade Image på Button
Nedenstående er fra en Swing aplikation

piecesPanel.setLayout(new GridLayout(4,4));
        piecesPanel.setBackground(Color.black);
        pieces = new JButton[SIZE];
        for(int i = 0; i < SIZE; i++) {
            pieces[i] = new JButton();
                        pieces[i].setBorder(BorderFactory.createEmptyBorder());
                        pieces[i].setSize(85,85);
                        pieces[i].setIcon(createImageIcon("brikker/brik"+(i+1)+".jpg"));
            pieces[i].addActionListener(this);
                        pieces[i].setActionCommand(Integer.toString(i+1));
            piecesPanel.add(pieces[i]);
        }
        pieces[15].setVisible(false);
//og videre længere nede
        private ImageIcon createImageIcon(String path) {
        java.net.URL imgURL = PuzzleGUI2.class.getResource(path);
            if (imgURL != null) {
                return new ImageIcon(imgURL);
            } else {
                System.err.println("Couldn't find file: " + path);
                return null;
            }
        }

Jeg har forsøgt at lave dette om til AWT men jeg kan ikke få billederne frem på knapperne. Jeg har lavet følgende

        piecesPanel.setLayout(new GridLayout(4,4));
        piecesPanel.setBackground(Color.black);
        pieces = new Button[SIZE];
        for(int i = 0; i < SIZE; i++) {
            pieces[i] = new Button();
                        //pieces[i].setBorder(BorderFactory.createEmptyBorder());
                        pieces[i].setSize(85,85);
                        Image img = getImage(getImgPath("brikker/brik"+(i+1)+".jpg"));
                        pieces[i].prepareImage(img,85,85,this);
            pieces[i].addActionListener(this);
                        pieces[i].setActionCommand(Integer.toString(i+1));
                        pieces[i].setSize(85,85);
            piecesPanel.add(pieces[i]);
        }
        pieces[15].setVisible(false);
//og videre længere nede
      private java.net.URL getImgPath(String path) {
            java.net.URL imgURL = PuzzleAppGUI.class.getResource(path);
            if (imgURL != null) {
                return imgURL;
            } else {
                System.err.println("Couldn't find file: " + path);
                return null;
            }
        }

er der nogen der kan hjælpe mig på vej
Avatar billede =maddog= Nybegynder
14. april 2003 - 02:29 #1
Du må ikke bruge Button. Den har nativ kilde og vil altid være grim og grå. Du bliver nød til at lave din egen button klasse ud fra Component.
Det er ikke så svært endda.
Download denne zip-fil
http://www.dsr.kvl.dk/~maddog/applets/AWTgui.zip
den indeholder en del lightweight klasser til brug i AWT. Der er en klasse der hedder LWButton. Det er den du skal have fat i. (findes i xgui dir).
Avatar billede sfriis Nybegynder
14. april 2003 - 08:58 #2
Ok - kigger på det
takker for hjælpen
send lige et svar så du kan få dine point
Avatar billede =maddog= Nybegynder
14. april 2003 - 13:30 #3
siden du ikke kan bruge setIcon i AWT, vil jeg gerne være helt sikker på at du har fået den hjælp du behøver før jeg svarer. Jeg vil nødigt have at du accepterer et svar før du er færdig med dit problem
Avatar billede sfriis Nybegynder
14. april 2003 - 16:22 #4
Jeg mener at jeg har fået det svar der kan bringe mig videre.
Jeg har lavet en applikation med Swing komponeneter og konverteret den om så den kan virke som en applet også baseret på Swing, begge dele virker som det skal. Imidlertid har jeg kastet mig over opgaven med at lave den om, baseret på AWT komponenter. Det er også gået fint nok, men i den proces er jeg løbet ind i problemet med image på de Button som jeg bruger, ifølge din første kommentar er det en gal vej jeg er gået og du har anvist en anden vej. Det var det jeg efterlyste, og vil derfor prøve mig frem der. Jeg har imidlertid andre opgaver at løse og min grundlæggende viden om AWT er noget jeg skal arbejde med så der vil gå noget tid inden at jeg får et færdigt resultat.
Jeg er glad for at blive ført på rette vej så jeg ikke sidder og bøvler med noget der ikke kan lade sig gøre i AWT, du har anvist en vej jeg kan gå og det vil jeg udforske.

Det var en lang smøre, men jeg håber at det kunne tilfredstille din samvittighed og dermed modtage dine point med glæde, jeg bad om at blive hjulpet på vej og det er jeg blevet :-)
Avatar billede =maddog= Nybegynder
14. april 2003 - 17:47 #5
OK. Bare du er klar over der er forskelle. Jeg tænkte at du måske ville få problemer med "flimmer" da AWT komponenter ikke har dobbelt-buffer. Eller noget lignende.
Men den tid den sorg. Jeg vil ligge et svar og høste mine point.
(PS: Når du læser igennem klasserne i xgui pakken tror jeg også du får et meget bedre forhold til hvorledes komponenter virker, f.x. hvordan en lytter registreres og sender events videre. En sidegevinst.)
Avatar billede =maddog= Nybegynder
14. april 2003 - 17:47 #6
for hunden da. glemte at lave det som et svar.
Avatar billede sfriis Nybegynder
14. april 2003 - 17:57 #7
Fint - når jeg løber ind i problemer jeg ikke kan hitte ud af, stiller jeg et nyt spørgsmål.
Endnu engang tak får hjælpen
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