[Java] Programma setup -> groot programma

Pagina: 1
Acties:
  • 104 views sinds 30-01-2008
  • Reageer

  • BSeB
  • Registratie: Juni 2001
  • Laatst online: 22-09-2025
Ik ben een programma aan het maken wat uit verschillende menu's moet komen te bestaan. Of beter gezegd.

1 Frame met daarin verschillende Panels die openen of sluiten.

Nu kan misschien wel alles in 1 bestand gepropt worden maar dat is voor later niet overzichtelijk. Hoe doen jullie dat.

Ik kan wel een apparte class aanmaken in een ander bestand voor bijvoorbeeld het menu en 1 voor het aanmaken en selecteren van de lookandfeel.

Maar voordat ik verder ga wil ik eerst advies als dat kan. Hier is namelijk mijn hele programma op gebasseerd.

En niet aankomen met Lees tut's want die heb ik al en een hele hoop ook. Niet dat ik niks wil lezen, een geode tut op dit gebeid is altijd welkom.

  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 21-05 14:59

pjvandesande

GC.Collect(head);

BSeB schreef op 01 oktober 2004 @ 13:58:
Ik kan wel een apparte class aanmaken in een ander bestand voor bijvoorbeeld het menu en 1 voor het aanmaken en selecteren van de lookandfeel.
Dat zou ik sowieso doen ja. Verder kun je natuurlijk zoveel mogelijk in apparte classes doen.
Die kun je mooi scheiden.

  • CyBoB
  • Registratie: Januari 2001
  • Laatst online: 24-12-2025

CyBoB

.::BURB::.

het klinkt een beetje alsof je pas net begint met proggen (in java / OO ) maar over het algemeen word elke class in een aparte file gestopt zoals je dat noemt. verder gaat die "file"/class natuurlijk in zijn eigen package ( "directory structuur" ). met exeptie van innerclasses die toch niet hergebruikt hoeven te worden.

ik kan het verder niet echt onderbouwen omdat het eigenlijk vanzelfsprekend is, maar er zwerven vast wel wat mensen hier rond die het beter weten :)

  • BSeB
  • Registratie: Juni 2001
  • Laatst online: 22-09-2025
Heb veel gephpt en daar heb ik alles altijd inderdaad apart gedaan. Verder heel vroger wat gevisual basict.

En ik ben nu inmiddels weer een tijdje met Java bezig welke me zeer goed bevalt.

Wilde alleen graag weten hoe jullie het daarin doen. Dit omdat dit voor mij de eerste keer is dat ik buiten een enkele file graag schrijven.

  • CyBoB
  • Registratie: Januari 2001
  • Laatst online: 24-12-2025

CyBoB

.::BURB::.

alles in een file is gewoon NOT done :)

je begint natuurlijk altijd met een ontwerp ;) daaruit kan je bepalen welke componenten je gaat krijgen. dit kan je dan gebruiken om je packages in orde te krijgen.

hier voorbeeldje van een project opbouw.

code:
1
2
3
4
5
6
7
8
root (naam van je app oid)
 |_ src (dir met je source files)
       |_ <root package>
            |_ gui
            |_ domain
            |_ data
 |_ bin (dir met binary data, gecompileerde .class files)
       |_ (krijgt automagisch dezelfde structuur als je src dir :P )


tja dit is echt alleen als voorbeeld hoor. ik zou zeggen kijk even naar open source apps of libs. vaak zijn packages verdeeld in logische stukken code. voor de rest kan/moet je dus elke class in een aparte file zetten en in de juiste package.

krijg je dus als je app "Foo" heet het volgende.

foo.gui.FooFrame
foo.gui.FooPanelWeetIkVeel

en dan

foo.Main

waar foo & gui dus de directory is waar je dus FooFrame.java in plaatst enzo

  • BSeB
  • Registratie: Juni 2001
  • Laatst online: 22-09-2025
OK, thnx ik snap nu weer hoe ik classes moest maken. (Subclasses. Dmv extends)

Maar nu hetvolgende en daar ben ik helemaal nieuw mee. Hoe kan ik die subclass in een andere directory zetten. Dus de ap op de root om zo maar te zeggen en dan de subclass uin bijvoorbeeld de map lib die eronder hangt

Verwijderd

Zoek in je Java-boek even het hoofdstuk over packages op en lees dat.

Een package bepaalt niet alleen de fully qualified name van een klasse maar ook waar de classloader naar de klasse zal zoeken en dus in welke directory jij je bestand moet plaatsen.

  • Bobco
  • Registratie: Januari 2001
  • Laatst online: 30-10-2023

Bobco

I used to dream about Verona.

BSeB schreef op 01 oktober 2004 @ 15:24:
OK, thnx ik snap nu weer hoe ik classes moest maken. (Subclasses. Dmv extends)

Maar nu hetvolgende en daar ben ik helemaal nieuw mee. Hoe kan ik die subclass in een andere directory zetten. Dus de ap op de root om zo maar te zeggen en dan de subclass uin bijvoorbeeld de map lib die eronder hangt
Gewoon het juiste import statement gebruiken. Je doet dit immers ook constant als je standaard Java classes gebruikt:

code:
1
2
3
4
5
6
import java.util.ArrayList;

public class MyClass{
  private ArrayList myList = new ArrayList();
  .....
}


De import statements zorgen ervoor dat de compiler (en de classloaders) weten waar ze moeten zoeken naar de classes waar je aan refereert.

Als je nu zelf een class Whatever hebt gemaakt in package applicatie dan kun je deze importeren met import applicatie.Whatever;

With the light in our eyes, it's hard to see.


  • BSeB
  • Registratie: Juni 2001
  • Laatst online: 22-09-2025
Ik snap wel wat er word verteld, alleen heb ik dat al geprobeerd. Het zit namelijk zo:

Ik schrijf mijn programma in de map:

d:\application

daar staat dus de application.java

Daarnaast wil ik mijn subclass in de map:

d:\application\test

deze heet MenuBar.java

Als ik in mijn editor import test.*; erbij zet, dan werkt dit niet. Dit import statements werken alleen als het java standard classes betreft, maar niet als het eigen browsels zijn. Daardoor werkt het niet. Dus hoe kan ik het wel werkend krijgen?

Verwijderd

Heb je je classes in het package 'test' wel publiek gemaakt (dus public class ClassName)? Dit is namelijk nodig als de classes buiten een package zichtbaar moeten zijn.

  • BHR
  • Registratie: Februari 2002
  • Laatst online: 19-05 11:06

BHR

Klinkt als dat je src (en waarschijnlijk ook classpath) voor je project niet goed staat. Je editor (dan wel compiler) weet niet dat hij jouw eigen classes relatief aan d:\application moet zoeken.

[ Voor 1% gewijzigd door BHR op 04-10-2004 08:51 . Reden: was d ipv c ;) ]

No amount of key presses will shut off the Random Bug Generator


  • BSeB
  • Registratie: Juni 2001
  • Laatst online: 22-09-2025
Start van de subclass:

Java:
1
2
3
public class MenuBar extends MenuLookDemo
{
  public JMenuBar createMenuBar()


Start van de superclass:

Java:
1
public class MenuLookDemo {


Inhoud autoexec.bat:

SET PATH=C:\WINDOWS;c:\windows;c:\windows\COMMAND;C:\HICAD2_1105\EXE;C:\HICAD2_1105\BIN;C:\Progra~1\j2sdk1.4.2_05\bin;
SET CLASSPATH=C:\Progra~1\j2sdk1.4.2_05\jre\lib\ext\mysql-connector-java-3.0.15-ga-bin.jar;%CLASSPATH%;.;
SET tmp=C:\TEMP
SET temp=C:\TEMP

[ Voor 41% gewijzigd door BSeB op 04-10-2004 08:57 ]


  • MaxxRide
  • Registratie: April 2000
  • Laatst online: 09-01 10:13

MaxxRide

Surf's up

In welke directory compile je?
Staat je classpath wel goed?

If you are not wiping out you are nog pushing enough...


  • BSeB
  • Registratie: Juni 2001
  • Laatst online: 22-09-2025
Pinda schreef op 04 oktober 2004 @ 09:01:
In welke directory compile je?
Staat je classpath wel goed?
Hierboven staat mijn classpath he!

Moet ik eigenlijk niet in mijn superclass aangeven dat als ik hem compileer naar een class bestand dat hij dan die submap moet aanmaken.?

[ Voor 27% gewijzigd door BSeB op 04-10-2004 10:04 ]


Verwijderd

in d:\application\Application.java

Java:
1
2
3
4
5
6
import test.MenuLookupDemo;

public class Application
{
  ..
}


in d:\application\test\MenuBar.java

Java:
1
2
3
4
5
6
7
8
package test;

import javax.swing.*;

public class MenuBar extends Something
{
  ..
}


De packagenaam en het pad waar je .java file staat (t.o.v. je classpath) moeten dus overeen komen. Tevens moet je bestandsnaam overeen komen met de naam van de public class in je bestand. Na compileren van Application.java krijg je dus

d:\application\Application.class
d:\application\test\MenuBar.class

En nu eens even heel rap gaan lezen over bestanden, klassen en packages in java he...! ;)

[ Voor 43% gewijzigd door Verwijderd op 04-10-2004 10:31 ]


Verwijderd

Als je een java programma maakt dan is het heel erg aan te raden om alle klassen in packages te plaatsen. Ik begin mijn packagenamen bijvoorbeeld altijd met nl.jmaasland.[applicatienaam].

Als ik naar jouw code kijk staat nu alleen de MenuBar in een package (nl. test) en de MenuLookDemo niet. Als je classes in packages gaat plaatsen moet je dat ook aangeven in de eerste (niet-commentaar niet-lege) regel van de source-file. In het geval van MenuBar dus:
Java:
1
2
package test;
//De rest van je code


Verder zou ik eens kijken naar Eclipse. Dit is een erg makkelijk te gebruiken IDE als je bekend bent met de basisbegrippen van Java. Als ik het zo allemaal lees is het aan te raden om eerst alles in de console goed aan de praat te krijgen (zie ook de post van CyBoB en nu ook de post hierboven :) ).

[ Voor 4% gewijzigd door Verwijderd op 04-10-2004 10:36 ]


  • BSeB
  • Registratie: Juni 2001
  • Laatst online: 22-09-2025
Ik had alles zoals jullie al hadden gzegd, had alleen die regel van Package nog niet. Die ga ik zo even testen.

  • BSeB
  • Registratie: Juni 2001
  • Laatst online: 22-09-2025
Gedaan alleen lukt dit dus nog niet om volgende foutmelding:

> Executing: C:\PROGRAM FILES\CONTEXT\ConExec.exe "C:\Program Files\j2sdk1.4.2_05\bin\javac.exe" "F:\Bar\Java\Test\MenuLookDemo.java"

.\test\MenuBar.java:13: cannot resolve symbol
symbol : class MenuLookDemo
location: class test.MenuBar
public class MenuBar extends MenuLookDemo
^
F:\Bar\Java\Test\MenuLookDemo.java:84: cannot resolve symbol
symbol : method createContentPane ()
location: class test.MenuBar
frame.setContentPane(demo.createContentPane());
^
2 errors
> Execution finished.

Verwijderd

Als MenuLookupDemo in test staat moet de package van MenuLookupDemo dus ook test zijn. En zorg dat je current directory de parent dir van test is, anders weet javac niet waar te zoeken naar de klassen in die test package.

dus, bijvoorbeeld...

cd d:\application
javac test\MenuLookupDemo.java

  • BSeB
  • Registratie: Juni 2001
  • Laatst online: 22-09-2025
Als ik in MenuBar opzettelijk een fout maak, en ik wil Menulookdemo compileren geeft hij toch aan dat hij de fout ziet en kan ik hem herstellen. Het is dus niet zo dat hij het bestand niet kan zien.

Verwijderd

Nee, maar je probleem zit em ook in dat ie MenuLookDemo niet kan vinden als ie MenuBar compileert. Dus die zal wel niet in de goeie package zitten oid.

  • BSeB
  • Registratie: Juni 2001
  • Laatst online: 22-09-2025
Even wa duidelijk maken:

Ik heb dus MenuLookDemo.java dit is de superclass. Deze heeft een import test.Menubar;

Dan heb ik in een mapje test wat in de map staat waar ook MenuLookDemo staat. Hierin zit een bestandje MenuBar.java, welke de regel package test; bevat en natuurlijk de regel extends.

De dir zijn dan dus:

d:\MenuLookDemo.java ->Superclass
d:\test\MenuBar.java -> Subclass

Hij zou idd de superclass niet kunnen zien alleen kan ik dus in de tut van packages op java niks vinden. Ben namelijk al aan het zoekebn geweest.

Als ik overigens doe in de map d:\javac test\MenuLookDemo.java

Krijg ik 3 errors:

-Package test does not excist
-Import test.MenuBar

[ Voor 13% gewijzigd door BSeB op 04-10-2004 12:49 ]


  • Bobco
  • Registratie: Januari 2001
  • Laatst online: 30-10-2023

Bobco

I used to dream about Verona.

En d:\ staat wel in het classpath dat de compiler meekrijgt? Je compileert nu 1 class en je geeft helemaal geen additionele path info mee. Het is lang geleden dat ik op die manier gecompileerd heb, maar het lijkt me dat de compiler nu alleen in d:\test en op het classpath zoekt naar een definitie van MenuLookDemo. Als d:\ geen onderdeel is van je classpath is de foutmelding logisch.

Volg trouwens de tips hierboven om ALLE classes onder te brengen in een package maar op, het scheelt je vaak een boel ellende.

With the light in our eyes, it's hard to see.


  • BSeB
  • Registratie: Juni 2001
  • Laatst online: 22-09-2025
Bobco schreef op 04 oktober 2004 @ 12:52:
En d:\ staat wel in het classpath dat de compiler meekrijgt? Je compileert nu 1 class en je geeft helemaal geen additionele path info mee. Het is lang geleden dat ik op die manier gecompileerd heb, maar het lijkt me dat de compiler nu alleen in d:\test en op het classpath zoekt naar een definitie van MenuLookDemo. Als d:\ geen onderdeel is van je classpath is de foutmelding logisch.

Volg trouwens de tips hierboven om ALLE classes onder te brengen in een package maar op, het scheelt je vaak een boel ellende.
Als ik alles onderbreng in 1 package word het programma toch onoverzichtelijk!

Btw als ik in de superclass ook package tes; zet dan compiled hij wel alleen kan ik hem dan niet meer starten.

[ Voor 8% gewijzigd door BSeB op 04-10-2004 13:06 ]


Verwijderd

BSeB schreef op 04 oktober 2004 @ 13:02:
[...]


Als ik alles onderbreng in 1 package word het programma toch onoverzichtelijk!

Btw als ik in de superclass ook package tes; zet dan compiled hij wel alleen kan ik hem dan niet meer starten.
bla, hier stond onzin.. geen idee wat je main class is...

dus.. wat is je main class en hoe probeer je die te starten...?

[ Voor 21% gewijzigd door Verwijderd op 04-10-2004 13:15 ]


  • BSeB
  • Registratie: Juni 2001
  • Laatst online: 22-09-2025
Ik zal wle beide stukkies code erop zetten. Het is voor mezelf puur en alleen om te leren hoe zoiets in elkaar steekt en waarom het niet werkt. Dit stukje code is gewoon een geript voorbeeld van sun. Dit wil ik niet gebruiken voor mijn eigen programma!

d:\MenuLookDemo.java
Java:
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
package test;

import test.MenuBar;

import java.awt.*;
import java.awt.event.*;


import javax.swing.JMenuItem;

import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JScrollPane;
import javax.swing.JFrame;

public class MenuLookDemo implements ActionListener, ItemListener
{
    JTextArea output;
    JScrollPane scrollPane;
    String newline = "\n";

    public Container createContentPane() {
        //Create the content-pane-to-be.
        JPanel contentPane = new JPanel(new BorderLayout());
        contentPane.setOpaque(true);

        //Create a scrolled text area.
        output = new JTextArea(5, 30);
        output.setEditable(false);
        scrollPane = new JScrollPane(output);

        //Add the text area to the content pane.
        contentPane.add(scrollPane, BorderLayout.CENTER);

        return contentPane;
    }
    public void actionPerformed(ActionEvent e) {
        JMenuItem source = (JMenuItem)(e.getSource());
        String s = "Action event detected."
                   + newline
                   + "    Event source: " + source.getText()
                   + " (an instance of " + getClassName(source) + ")";
        output.append(s + newline);
        output.setCaretPosition(output.getDocument().getLength());
    }

    public void itemStateChanged(ItemEvent e) {
        JMenuItem source = (JMenuItem)(e.getSource());
        String s = "Item event detected."
                   + newline
                   + "    Event source: " + source.getText()
                   + " (an instance of " + getClassName(source) + ")"
                   + newline
                   + "    New state: "
                   + ((e.getStateChange() == ItemEvent.SELECTED) ?
                     "selected":"unselected");
        output.append(s + newline);
        output.setCaretPosition(output.getDocument().getLength());
    }

    // Returns just the class name -- no package info.
    protected String getClassName(Object o) {
        String classString = o.getClass().getName();
        int dotIndex = classString.lastIndexOf(".");
        return classString.substring(dotIndex+1);
    }


         /**
     * Create the GUI and show it.  For thread safety,
     * this method should be invoked from the
     * event-dispatching thread.
     */
    private static void createAndShowGUI() {
        //Make sure we have nice window decorations.
        JFrame.setDefaultLookAndFeelDecorated(true);

        //Create and set up the window.
        JFrame frame = new JFrame("MenuLookDemo");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        //Create and set up the content pane.
        MenuBar demo = new MenuBar();
        
                frame.setJMenuBar(demo.createMenuBar());
        frame.setContentPane(demo.createContentPane());

        //Display the window.
        frame.setSize(450, 260);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        //Schedule a job for the event-dispatching thread:
        //creating and showing this application's GUI.
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }
}


d:\test\MenuBar.java
Java:
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
package test;

import java.awt.*;
import java.awt.event.*;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JMenuBar;
import javax.swing.KeyStroke;
import javax.swing.ImageIcon;

import javax.swing.JPanel;

public class MenuBar extends MenuLookDemo
{
  public JMenuBar createMenuBar()
    {
    JMenuBar menuBar;
    JMenu menu, submenu;
    JMenuItem menuItem;

    //Create the menu bar.
    menuBar = new JMenuBar();

    //Build the first menu.
    menu = new JMenu("Bestand");
    menu.setMnemonic(KeyEvent.VK_B);
    menu.getAccessibleContext().setAccessibleDescription("The only menu in this program that has menu items");
    menuBar.add(menu);

    //a group of JMenuItems
    menuItem = new JMenuItem("Inloggen",KeyEvent.VK_I);
    //menuItem.setMnemonic(KeyEvent.VK_T); //used constructor instead
    menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_I, ActionEvent.ALT_MASK));
    menuItem.getAccessibleContext().setAccessibleDescription("This doesn't really do anything");
    menuItem.addActionListener(this);
    menu.add(menuItem);
    menu.addSeparator();

    menuItem = new JMenuItem("Exit",KeyEvent.VK_X);
    //menuItem.setMnemonic(KeyEvent.VK_T); //used constructor instead
    menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z, ActionEvent.ALT_MASK));
    menuItem.getAccessibleContext().setAccessibleDescription("This doesn't really do anything");
    menuItem.addActionListener(this);
        menu.add(menuItem);

    //Build second menu in the menu bar.
    menu = new JMenu("Bewerken");
    menu.setMnemonic(KeyEvent.VK_B);
    menu.getAccessibleContext().setAccessibleDescription("This menu does nothing");
    menuBar.add(menu);
    
    //a group of JMenuItems
    menuItem = new JMenuItem("Knippen",KeyEvent.VK_N);
    //menuItem.setMnemonic(KeyEvent.VK_T); //used constructor instead
    menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, ActionEvent.ALT_MASK));
    menuItem.getAccessibleContext().setAccessibleDescription("This doesn't really do anything");
    menuItem.addActionListener(this);
        menu.add(menuItem);

        menuItem = new JMenuItem("Kopieren",KeyEvent.VK_K);
    //menuItem.setMnemonic(KeyEvent.VK_T); //used constructor instead
    menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, ActionEvent.ALT_MASK));
    menuItem.getAccessibleContext().setAccessibleDescription("This doesn't really do anything");
    menuItem.addActionListener(this);
        menu.add(menuItem);

        menuItem = new JMenuItem("Plakken",KeyEvent.VK_P);
    //menuItem.setMnemonic(KeyEvent.VK_T); //used constructor instead
    menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, ActionEvent.ALT_MASK));
    menuItem.getAccessibleContext().setAccessibleDescription("This doesn't really do anything");
    menuItem.addActionListener(this);
        menu.add(menuItem);
    menu.addSeparator();

    //a group of JMenuItems
    menuItem = new JMenuItem("Alles Selecteren",KeyEvent.VK_S);
    //menuItem.setMnemonic(KeyEvent.VK_T); //used constructor instead
    menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, ActionEvent.ALT_MASK));
    menuItem.getAccessibleContext().setAccessibleDescription("This doesn't really do anything");
    menuItem.addActionListener(this);
        menu.add(menuItem);

    //Build second menu in the menu bar.
    menu = new JMenu("Help");
    menu.setMnemonic(KeyEvent.VK_H);
    menu.getAccessibleContext().setAccessibleDescription("This menu does nothing");
    menuBar.add(menu);
    
    //a group of JMenuItems
    menuItem = new JMenuItem("Ondersteuning",KeyEvent.VK_O);
    //menuItem.setMnemonic(KeyEvent.VK_T); //used constructor instead
    menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1, ActionEvent.ALT_MASK));
    menuItem.getAccessibleContext().setAccessibleDescription("This doesn't really do anything");
    menuItem.addActionListener(this);
        menu.add(menuItem);
    menu.addSeparator();

    //a group of JMenuItems
    menuItem = new JMenuItem("Info",KeyEvent.VK_I);
    //menuItem.setMnemonic(KeyEvent.VK_T); //used constructor instead
    menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F2, ActionEvent.ALT_MASK));
    menuItem.getAccessibleContext().setAccessibleDescription("This doesn't really do anything");
    menuItem.addActionListener(this);
        menu.add(menuItem);

    return menuBar;
  }
}

  • DaCoTa
  • Registratie: April 2002
  • Laatst online: 22:50
Het eerste wat opvalt is dat beide bestanden in package test zitten, maar dat ze niet op eenzelfde locatie binnen de projectstructuur staan. Zowiezo is het verstandig om een project directory te maken ipv te beginnen bij de root, dus bijvoorbeeld:

D:\SunMenuTest

D:\SunMenuTest\test\MenuLookDemo.java
D:\SunMenuTest\test\MenuBar.java

Hierin heet je project dus SunMenuTest. Die directory is de startplaats en homedirectory van het project. Daaronder heb je een package test, en alle classes die in dat package staan, behoren dus ook in een directory test.

Als je dit werkend hebt, probeer het dan zo voor elkaar te krijgen dat je source bestanden in een src directory krijgt en gecompileerde class files in een bin directory, dus:

D:\SunMenuTest

D:\SunMenuTest\src\test\MenuLookDemo.java
D:\SunMenuTest\src\test\MenuBar.java

D:\SunMenuTest\bin\test\MenuLookDemo.class
D:\SunMenuTest\bin\test\MenuBar.class

Je moet dan dus zowel javac als java anders aanroepen om ze goed met deze directories om te laten gaan, maar als je het eenmaal zo hebt, is het veel overzichtelijker en komt ook beter overeen mocht je een keer overstappen naar een volledige ontwikkelomgeving.

  • BSeB
  • Registratie: Juni 2001
  • Laatst online: 22-09-2025
Aha, maar dat lukt allang. Ik kan ze allebij bij elkjaar zetten en dan werkt het programma gewoon zonder problemen.

Overigens wat ik dus wilde is een aplicatie simuleren. Oftewel de MenuLookDemo.java is eigenlijk de applicatie.

Ik neem aan dat wat jij bedoeld, duis de map bin en src onder de opstartnaam vallen dus als ik ik application opstart dat hij dan uit bin de classes haalt die hij nodig heeft?

  • TukkerTweaker
  • Registratie: November 2001
  • Laatst online: 19-05 16:06
BSeB schreef op 04 oktober 2004 @ 13:16:
d:\MenuLookDemo.java
[code=java]
package test;

import test.MenuBar;

.....
Je hoeft classes uit dezelfde package dir niet te importeren, tenzij er een class in je classpath zit met dezelfde naam.
Pagina: 1