Avatar billede ppstyle Nybegynder
19. oktober 2001 - 14:50 Der er 2 kommentarer og
2 løsninger

Swing - GUI problemer med at vise gif\'fer i en JFrame

Når jeg indsætter gif billeder i min JFrame går det ganske glimrende. Billederne kommer frem som jeg vil have det.

Men når jeg minimerer vinduet billederne er i, er billederne helt forsvundet, således at jeg nu kun ser baggrunden, hvor der også før var gif billeder på ?

Hvis man nu gerne vil have billederne skal være der når man maksimerer vinduet igen, hvordan skal man så gøre ?

takker - Daniel
Avatar billede mipe1 Nybegynder
19. oktober 2001 - 14:52 #1
indsæt billederne i din paint metode, så de bliver repainted hver gang
Avatar billede ppstyle Nybegynder
19. oktober 2001 - 14:56 #2
ok, du siger altså at jeg skal painte mine giffer ?

Lige nu bliver billederne vist ved hjælp af en klasse der nedarver fra JLabel, hvor jeg bare påklistrer et ImageIcon poå den pågældende Label og viser den label i en JFrame.

Det vil sige at jeg kun skal gøre brug af \"draw\" metoderne i Graphics eller ?
Avatar billede ppstyle Nybegynder
19. oktober 2001 - 14:57 #3
Ved godt jeg udvider svaret lidt men tag lige den sidste så får du dine points samt en god weekend :)
Avatar billede t_skytte Nybegynder
19. oktober 2001 - 23:37 #4
repaint kunne løse problemet, men det er ikke altid nødvendigt at anvende denne. Idet jeg ikke lige har din kode ved hånden, kan ikke helt præcis se, hvad dit problem er. Se om du ikke kan få noget inspiration fra nedenstående kode, der er et komplet eksempel på, hvordan du udfra en applikation, åbner en ny frame med et billede i (dette kan naturligvis maximeres og minimeres uden konsekvenser).

// java-filen Picture.java

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

public class Picture extends JFrame implements ActionListener{

  JButton Start = new JButton(\"Show picture\");
  Container felt = new Container();

  public Picture(){
    felt = getContentPane();
    felt.setLayout(new FlowLayout());
    felt.add(Start);

    Start.addActionListener(this);

    addWindowListener(new WinClosing());
    setBounds(100, 100, 100, 100);
    setVisible(true);
  }

  public void showPicture(String path)
    JFrame pic = new JFrame();
    pic.getContentPane().setLayout(
      new BorderLayout(5,5));
    JPanel pn = new JPanel();
    pn.setLayout(new BorderLayout(0,0));
    JLabel lb = new JLabel(new ImageIcon(path));
    pn.add(new JScrollPane(lb),\"Center\");
    pic.getContentPane().add(pn,\"Center\");
    pic.setBounds(100, 150, 400, 400);
    pic.setVisible(true);
  }

  public void actionPerformed(ActionEvent event){
    String kommando = event.getActionCommand();
      if(kommando==\"Show picture\"){
        // stien dit billede ligger på sættes
        // som argument i showPicture.
        showPicture(\"C:\\\\Billder\\\\pic1.gif\");
      }
  }

  public static void main(String args[]) {
    Picture pic = new Picture();
  }

  class WinClosing extends WindowAdapter {
    public void windowClosing(WindowEvent we) {
      System.exit(0);
    }
  }
}

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