Toon posts:

Java Swing [plaatje met link probleem]

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een class TNOlogo, die is naar mening goed --> compilen geeft geen fouten. Daaronder is een gedeelte van mijn GUI class. Die wel errors geeft.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
/*
Tijmen Kuipers
Juni 2002 Project Blok 1.4
*/

import javax.swing.*;
import javax.swing.event.*;
import java.awt.event.*;
import java.awt.*;
import java.net.*;
import java.io.IOException;

class TNOLogo extends JPanel implements MouseListener
{
    private Image tnologo;
    private static final String WIN_ID = "Windows";
    private static final String WIN_PATH = "rundll32";
    private static final String WIN_FLAG = "url.dll,FileProtocolHandler";
    private String imageUrl;

    /*
    ===============
    public TNOLogo(int x, int y, String imageUrl)
    constructor, loads the images and sets the
    panel, also registers the mouselistener
    ===============
    */
    public TNOLogo(int x, int y, String imageUrl)
    {
        this.imageUrl = imageUrl;
        URL url = ClassLoader.getSystemResource("buttons/but-tno.gif");
        this.setBounds(x,y,100,100);
        this.addMouseListener(this);
        tnologo = Toolkit.getDefaultToolkit().getImage(url);
    }

    /*
    ===============
    public void paintComponent(Graphics g)
    paints the image on the screen
    ===============
    */
    public void paintComponent(Graphics g)
    {
        super.paintComponent(g);
        g.drawImage(tnologo, 0, 0, this);
    }

    /*
    ===============
    MouseEvents
    opens the link when clicked on the panel
    throws an error if it can't open the
    browser
    ===============
    */
    public void mouseEntered(MouseEvent e){}
    public void mouseExited(MouseEvent e){}
    public void mouseClicked(MouseEvent e)
    {
        String cmd = null;

        try
        {
            cmd = WIN_PATH + " " + WIN_FLAG + " " + imageUrl;
            Process p = Runtime.getRuntime().exec(cmd);
        }
        catch(IOException z)
        {
            System.err.println("Could not invoke browser, command=" + cmd);
            System.err.println("Caught: " + z);
        }
    }
    public void mouseReleased(MouseEvent e){}
    public void mousePressed(MouseEvent e){}
}

Hieronder het gedeelte van mijn GUI class
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// ------------------------------------------
// Tijmen juni 2002 (get it working) begin
// ------------------------------------------

    class TNOlogo extends JFrame

        {
        // deze zet het panel op het frame
        this.getContentPane().add(tnologo);

        // empty panel(swing) deez laat je items op je scherm arrangen
        JPanel canvas = new JPanel();
        this.getContentPane().add(canvas)

        TNOLogo tnologo = new TNOLogo(575,423, "http://www.tno.nl/");

        // add the panels to the frame
        this.getContentPane().add(tnologo);

        // and display it
        this.setVisible(true);

        }

Dit levert mij de volgende errors op:


C:\Documents and Settings\kuiperst\Desktop\Tijmen13juni\GUI.java:175: illegal start of type
this.getContentPane().add(tnologo);
^
C:\Documents and Settings\kuiperst\Desktop\Tijmen13juni\GUI.java:175: <identifier> expected
this.getContentPane().add(tnologo);
^
C:\Documents and Settings\kuiperst\Desktop\Tijmen13juni\GUI.java:179: illegal start of type
this.getContentPane().add(canvas)
^
C:\Documents and Settings\kuiperst\Desktop\Tijmen13juni\GUI.java:181: <identifier> expected
TNOLogo tnologo = new TNOLogo(575,423, "http://www.tno.nl/");
^
C:\Documents and Settings\kuiperst\Desktop\Tijmen13juni\GUI.java:184: illegal start of type
this.getContentPane().add(tnologo);
^
C:\Documents and Settings\kuiperst\Desktop\Tijmen13juni\GUI.java:184: <identifier> expected
this.getContentPane().add(tnologo);
^
C:\Documents and Settings\kuiperst\Desktop\Tijmen13juni\GUI.java:187: illegal start of type
this.setVisible(true);
^
C:\Documents and Settings\kuiperst\Desktop\Tijmen13juni\GUI.java:187: <identifier> expected
this.setVisible(true);
^
8 errors

Tool completed with exit code 1


Waar ga ik hier de mist in?

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Je vergeet een constructor aan te maken. Je zit dus zomaar in een object te rommelen.

dus
code:
1
2
3
4
5
6
7
class Persoon{
   private String voornaam, achternaam;
   public Persoon(String voornaam, String achternaam){
     this.voornaam = voornaam;
     this.achternaam = achternaa;
   }
}

ipv
code:
1
2
3
4
5
6
7
class Persoon{
   private String voornaam, achternaam;
   {//je zit hier niet in een methode
     this.voornaam = voornaam;
     this.achternaam = achternaa;
   }
}

tip 1:
ga geen interface implementeren op een hoofd class (dus geen mouseListener laten implementeren op je JPanel). Je weet namelijk niet of het daaronder ook gebeurd want als dat zo is, dan bij jij aan het overriden en zal de onderliggende functionaliteit niet worden uitgevoerd. Daarom kan je beter een innerclass maken die niets anders doet dan die interface implementeren. Dus.
code:
1
2
3
4
5
6
7
8
9
10
11
public class TNOLogo extends JPanel{
   public TNOLogo(){
     addMouseListener(new MouseListenerImpl());
   }

   private class MouseListenerImpl implements MouseListener{
     ...alle methodes van de mouse listener..
     ...eventueel kan je ook een MouseAdapter gebruiken als
     ...je alleen geintereseerd bent in een paar methodes.
   }
}

tip2: waarom maak je niet gebruik van een JLabel ofzo om een plaatje om te laten zien. Dan heb je dat geouwehoer ook niet met dat paint gebeuren ed.

tip3: je kan beter een prefix gebruiken voor member variablen, dus:
code:
1
2
3
4
5
6
7
class Persoon{
    private String _voornaam;
    
    public void setVoornaam(String voornaam){
     _voornaam = voornaam;
    }
}

zo kan je heel eenvoudig zien wat een lokale of een member variable is.

tip4: controleren of de objecten die je aankrijgt wel goed zijn. dus.
code:
1
2
3
4
5
6
7
8
9
10
class Persoon{
    private String _voornaam;
    
    public void setVoornaam(String voornaam){
     if(voornaam == null){
         throw new NullPointerException("voornaam can`t be null");
     }  
     _voornaam = voornaam;
    }
}

Verwijderd

Topicstarter
Tanx alvast ik ga er nu mee klooien!

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Compileerfouten moet je toch echt zelf op kunnen lossen met behulp van de gegeven meldingen... Als je nog niet genoeg ervaring hebt met Java (wat ik vermoed als je statements in een klasse opneemt en de statements ook nog niet bepaald kloppen/logisch zijn) kan je het beste eens een goede handleiding erbij pakken en die goed doornemen.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

Topicstarter
Op dinsdag 18 juni 2002 10:29 schreef mbravenboer het volgende:
Compileerfouten moet je toch echt zelf op kunnen lossen met behulp van de gegeven meldingen... Als je nog niet genoeg ervaring hebt met Java (wat ik vermoed als je statements in een klasse opneemt en de statements ook nog niet bepaald kloppen/logisch zijn) kan je het beste eens een goede handleiding erbij pakken en die goed doornemen.
Ik heb inderdaad niet enorm veel ervaring met Java en ik zit hier met een boek Java Stap voor stap en probeer zoveel mogelijk te snappen. Ik heb dit jaar gewoon te weinig aan java gedaan, maar ik zit nu in de project weken en het gaat nu puur over java en ik probeer mezelf nuttig te maken. En een beetje (boel) hulp kan ik wel gebruiken om de juiste weg te bewandelen!

Ik waardeer de hulp van alarmnummer ook enorm

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Persoonlijk raak ik niet zo opgewonden van die stap voor stap, dummies en 24 uur boeken ;) . Misschien dat je iets meer hebt aan documentatie die wat meer in gaat op de achtergrond van de taal en niet tracht om jou binnen zo kort mogelijke tijd het gevoel te geven dat je in Java kunt programmeren ;) .

Het probleem van dit laatste is namelijk dat dat waarschijnlijk best tegen zal vallen en wij hier de komende tijd overspoeld worden met vragen die je met wat conceptueel inzicht best zelf op zou kunnen lossen :) .

Ik post af en toe dit dictaat weleens wat wordt gebruikt op de Universiteit Utrecht voor het vak Imperatief Programmeren. Over het algemeen wordt dit stuk als zeer goed ervaren, zeker tov dergelijke boeken... Kijk er eens naar :) .

http://www.cs.uu.nl/docs/vakken/imp-2/literatuur.html

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

Op dinsdag 18 juni 2002 10:39 schreef mbravenboer het volgende:
Persoonlijk raak ik niet zo opgewonden van die stap voor stap, dummies en 24 uur boeken ;) . Misschien dat je iets meer hebt aan documentatie die wat meer in gaat op de achtergrond van de taal en niet tracht om jou binnen zo kort mogelijke tijd het gevoel te geven dat je in Java kunt programmeren ;) .
Java stap voor stap is een goed boek hoor :( ;)

Het legt de basis goed uit, en is redelijk interessant :)
Pagina: 1