Avatar billede ng-km Nybegynder
05. august 2004 - 19:39 Der er 6 kommentarer og
1 løsning

Tekst på ImageIcon

Jeg indlæser et ImageIcon i mit program med følgende kode:

Image image = Toolkit.getDefaultToolkit().getImage("billede.jpg");
Image scaledImage = image.getScaledInstance(400, -1, Image.SCALE_DEFAULT);
ImageIcon imi = new ImageIcon(scaledImage);

Hvordan for jeg skrevet filens navn på mit imageicon. Jeg har forsøgt at få et Graphics-objekt ud af imi, så jeg kan skrive navnet med drawString(.....) fra Graphics-klassen, men det er ikke rigtigt lykkedes mig. Hvordan gør jeg???
Avatar billede mikkelbm Nybegynder
05. august 2004 - 21:45 #1
Den nemme udgave vil være at lave et JLabel og sætte et icon på den samt tekst:

JLabel l = new JLabel("Mit billede", icon, JLabel.LEADING);

Hvis da kan leve med at teksten står ved siden af og ikke henover.
Ellers skal du rigtig nok have gang i Graphics objektet.
Avatar billede ng-km Nybegynder
05. august 2004 - 22:06 #2
Jeg har prøvet med en JLabel, men jeg skal læse en række billeder ind i en JList, og det er ikke lykkedes mig at få en JLabel med billede ind i en JList, derfor har jeg prøvet at vælge vejen med Graphics-objektet, hvilket også er en lidt flottere løsning hvis det kan lade sig gøre.

Problemet er bare at få et Graphics-objekt trukket ud af mit ImagaIcon.
Avatar billede mikkelbm Nybegynder
05. august 2004 - 22:06 #3
Efter lidt kig på det, ser det nu egentlig ikke ud til at ImageIcon har en paint-metode man kan override...

Jeg har lige bikset et super simpelt eksempel sammen på hvordan det kunne gøres ved hjælp af JPanel og JLabel:


public class MyImagePanel extends JPanel
{
    private ImageIcon icon;
    private String beskrivelse;
   
    public MyImagePanel(Image i, String beskrivelse)
    {
        this.beskrivelse = beskrivelse;
        icon = new ImageIcon(i);
        JLabel label = new JLabel(icon);
        label.setBounds(0, 0, icon.getIconWidth(), icon.getIconHeight());
       
        this.setLayout(null);
        this.add(label);
    }
   
    public void paint(Graphics g)
    {
        super.paint(g);
        g.drawString(beskrivelse, 0, icon.getIconHeight() / 2);
    }
}

Ovenstående oprettes så bare som følgende:

Image i = Toolkit.getDefaultToolkit().getImage("logo.jpg");
MyImagePanel icon = new MyImagePanel(i, "Mit Billede");

Og det tilføjes så til den Container du ønsker...
Avatar billede ng-km Nybegynder
07. august 2004 - 12:50 #4
mikkelbm : Jeg har prøvet at lave dit eksempel, men jeg kan ikke få vist billederne i min JList. Kan du få dem vist direke i en JList??

Jeg prøvede at implementere følgende kode med et BufferedImage-objekt:

Image image = Toolkit.getDefaultToolkit().getImage("billede.jpg");
Image scaledImage = image.getScaledInstance(400, -1, Image.SCALE_DEFAULT);

BufferedImage bufferedImage = new BufferedImage(scaledImage.getWidth(this), scaledImage.getHeight(this), BufferedImage.TYPE_INT_BGR);
Graphics2D bufferedImageGraphics = bufferedImage.createGraphics();
bufferedImageGraphics.drawImage(scaledImage,0,0,null);
bufferedImageGraphics.drawString("Billedets navn", 10,15);
ImageIcon imi = new ImageIcon(BufferedImage );

Og det virkede faktisk..
Avatar billede mikkelbm Nybegynder
07. august 2004 - 12:54 #5
Ahh, nej - jeg havde ikke lige fanget at du skulle bruge det i en JList - min fejl :)

Godt at du fik det til at virke...
Avatar billede mikkelbm Nybegynder
11. september 2004 - 21:55 #6
Husk at lukke dit spørgsmål.

Enten ved at lægge et svar selv, eller hvis du kunne bruge mit svar, så acceptere det.
Avatar billede ng-km Nybegynder
12. september 2004 - 09:53 #7
Sorry....Tak for 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