Avatar billede riversen Nybegynder
18. februar 2004 - 21:31 Der er 29 kommentarer og
1 løsning

Billeder i applet

Jeg har en JApplet, som indeholder nogle billeder. Det virker fint lokalt, hvor jeg har angivet den fulde sti, men når jeg ligger det på serveren passer stien selvfølgelig ikke. Jeg har prøvet at angive en relativ sti til mappen med billederne i forhold til class filen, men det virker ikke rigtigt.

Hvordan skal det lige klares?
Avatar billede arne_v Ekspert
18. februar 2004 - 21:36 #1
Bruger du:

ImageIcon img = new ImageIcon(getClass().getClassLoader().getResource("dir/fil.ext"));

?
Avatar billede riversen Nybegynder
18. februar 2004 - 21:48 #2
nopes det var den jeg ikke kunne huske

nu når jeg lige har fat i dig igen

Jeg har lavet min applet actionListener på en JButton

  public void actionPerformed( ActionEvent e )
    {
        try
        {
            URL url = new URL( getParameter( "url" ) );
            HttpURLConnection con = ( HttpURLConnection) url.openConnection();
            con.setRequestMethod( "POST" );
            String info = "tekst=" + textArea.getText();
            con.setDoOutput( true );
            con.getOutputStream().write(info.getBytes());
            con.connect();
            if( con.getResponseCode() == HttpURLConnection.HTTP_OK )
                textArea.setText( "Data gemt" );
            else
                textArea.setText( "Det skete ikke" );

            con.disconnect();
        }
        catch( Exception ex ){ ex.printStackTrace(); }

    }

ovenstående bliver udført. Det virker fint, når jeg kører det fra intellij, men hvis jeg kører det lokalt fra html filen, så virker det ikke. Forslag ? Har ellers sat intellij op til at bruge html filen.
Avatar billede riversen Nybegynder
18. februar 2004 - 21:50 #3
Jeg får fat i billederne sådan her:

        File directory = new File( "D:/Rene/Programmeringsprojekter/EditorApplet/emotions" );
        File[] emotions = directory.listFiles();

        for( int i = 0; i < emotions.length; i++ )
        {
            ImageIcon tempIcon = new ImageIcon( emotions[i].getAbsolutePath() );
            JLabel tempLabel = new JLabel( tempIcon );
            tempLabel.setPreferredSize( new Dimension( tempIcon.getIconWidth(), tempIcon.getIconHeight() ) );

            emotionsPanel.add( tempLabel );
        }

hvordan gør jeg det med getClass etc. ?
Avatar billede arne_v Ekspert
18. februar 2004 - 22:06 #4
Hvad fejl får du når det ikke virker ?
Avatar billede arne_v Ekspert
18. februar 2004 - 22:07 #5
Jeg formoder at billederne ligger på serveren ?

Du laver en HTTP GET til et PHP script der returnerer listen af filnavne.

Din kode læser svarer og genererer ImageIcon's udfra det med getResource.
Avatar billede riversen Nybegynder
19. februar 2004 - 07:17 #6
det er posten der ikke virker når jeg kører html'en... kører det lokalt ikke på serveren endnu
Avatar billede riversen Nybegynder
19. februar 2004 - 07:20 #7
access denied, når jeg kører den fra html filen lokalt (altså i browser, istedet for fra intellij)
Avatar billede riversen Nybegynder
19. februar 2004 - 07:27 #8
Jeg henter directory sådan her nu        File directory = new File( getClass().getClassLoader().getResource("emotions").getFile() );

er det OK, når det kommer op på serveren? Applet'en bliver stadig ikke vist nemlig.
Avatar billede riversen Nybegynder
19. februar 2004 - 07:29 #9
Lige for at summere, da de vist er blevet lidt forvirrende:

1. Når jeg kører det fra intellij, virker det fint. Dataene bliver lagt i databasen fra php filen.
2. Når jeg kører det lokalt i browser via html filen virker det ikke. Applet'en bliver vist, men dataene bliver ikke gemt, med beskeden access denied ...
3. Når jeg kopierer til serveren bliver applet'en ikke vist.
Avatar billede riversen Nybegynder
19. februar 2004 - 07:40 #10
Avatar billede riversen Nybegynder
19. februar 2004 - 07:57 #11
hvis jeg fjerner emotioinspanelet bliver applet'en vist på serveren og kan poste, så det er bare lige det emotionspanel der driller.
Avatar billede arne_v Ekspert
19. februar 2004 - 08:24 #12
God morgen.

Hvad type er emotionsPanel ?
Avatar billede arne_v Ekspert
19. februar 2004 - 08:25 #13
Dumt spørgsmål - det kan jeg so se i koden.

private JPanel createEmotionsPanel()

JPanel er Swing og derfor ikke i 1.1
Avatar billede arne_v Ekspert
19. februar 2004 - 08:26 #14
Udkommenter:
  import javax.swing.*;
og få det til at compile uden, så er du af med Swing.

Som hovedregel er Swing alt det der starter med J.
Avatar billede riversen Nybegynder
19. februar 2004 - 08:37 #15
arne_v: jeg har pt. dropet at køre med 1.1... så derfor har jeg lige brugt swing... som sagt virker det fint lokalt, så der er nok et problem med at få fat i de billeder, når det ligger på serveren.
Avatar billede riversen Nybegynder
19. februar 2004 - 08:39 #16
årsagen er, at jeg ikke lige kunne se, det var muligt med icon på label eller button
Avatar billede arne_v Ekspert
19. februar 2004 - 08:44 #17
Det er uden for mit ekspertise område, men jeg ville nok enten kære ren AWT eller
ren Swing.
Avatar billede riversen Nybegynder
19. februar 2004 - 08:47 #18
det er også planen. Dvs. du ikke har noget forslag mht. billederne ?
Avatar billede arne_v Ekspert
19. februar 2004 - 09:06 #19
Ikke umiddelbart.

Men det kan jo troubleshootes. Check i din web servers access log, hvilke
URL's appletten requester.

Du kunne også prøve med fuld URL - altså noget a la:

ImageIcon img = new ImageIcon(new URL(getCodeBase(), "dir/fil.ext"));
Avatar billede riversen Nybegynder
19. februar 2004 - 09:08 #20
ok, jeg roder med det... problemet er jo bare, at jeg vil iterere igennem bibliotekets filer, så jeg er fri for at skive navnet... de er nemlig en hel del.
Avatar billede arne_v Ekspert
19. februar 2004 - 09:57 #21
send POST til PHP
while flere filnavne i svar {
  læs filnavn
  lav ImageIcon med den fil
}
Avatar billede riversen Nybegynder
19. februar 2004 - 14:29 #22
hvordan skal den post se ud ?
Avatar billede riversen Nybegynder
19. februar 2004 - 14:32 #23
eller måske kan det hele samles i en jar ?
Avatar billede labanos Nybegynder
19. februar 2004 - 14:47 #24
jeg bruger personligt at smide billeder i den jar fil min applet er i...

og bagefter er det så noget med:
URL url;
URLClassLoader cl = (URLClassLoader) this.getClass().getClassLoader();
url = cl.findResource("LonControlSystem/SharedBoundary/Images/help.gif");
helpIcon = javax.imageio.ImageIO.read(new BufferedInputStream(url.openStream()));
Avatar billede labanos Nybegynder
19. februar 2004 - 14:48 #25
er btw kode direkte i min japplet...
Avatar billede riversen Nybegynder
19. februar 2004 - 15:28 #26
hvordan loader jeg så applet'en på siden, når den ligger i en jar fil
Avatar billede riversen Nybegynder
19. februar 2004 - 15:29 #27
kan ikke lige se det egentlig løser mit iterationsproblem ?
Avatar billede arne_v Ekspert
19. februar 2004 - 15:34 #28
Det behøver ikke engang være en POST.

En GET til et PHP script som returnerer text/plain med
1 fil per linie.

Din applet læser responsen - en linie ad gangen og added
ImageIcon's.
Avatar billede riversen Nybegynder
19. februar 2004 - 22:40 #29
læg et svar
Avatar billede arne_v Ekspert
19. februar 2004 - 22:42 #30
OK
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