[java] Headerfile ?

Pagina: 1
Acties:

  • josteman
  • Registratie: Mei 2002
  • Laatst online: 21-12-2022
Is het mogelijk om in java net als in C++ een headerfile te maken waarin je een aantal definities zet?
Ik heb namelijk een programma met verschillende pannels en deze moeten allemaal dezelfde kleur hebben, het is dan het makkelijkst als ik dan alleen ACHTERGROND kan neerzetten.

Groeten Josteman

Boei


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Nee, dat is niet mogelijk.

Een manier: kijk eens naar hoe het in Swing gedaan wordt met de interface SwingConstants.
Een andere manier: maak 1 klasse waarin je wat public static finals zet en noem die klasse GuiConfig of iets van die strekking. Benader die statics vervolgens met
Java:
1
2
3
4
import jouwpackage.GuiConfig;

// ...
someFunc ( GuiConfig.BACKGROUND_COLOR );


Er zijn nog veel meer manieren te bedenken, maar includes kun je iig vergeten :)

[ Voor 8% gewijzigd door drm op 15-03-2004 20:27 ]

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 26-05 00:01

Janoz

Moderator Devschuur®

!litemod

Je kunt een apparte class maken waarin je de configuratie zet. Waneer je hier static velden (Of liever nog getters) maakt kun je die gewon met Classname.ACHTERGROND gebruiken.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • josteman
  • Registratie: Mei 2002
  • Laatst online: 21-12-2022
Oke ik zal dat gebruiken. Bedankt

Boei


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
drm: Er zijn nog veel meer manieren te bedenken, maar includes kun je iig vergeten :)
In Java 1.5 is er een static import feature toegevoegd. Dit betekent dat je alle static methoden en velden van een klasse die je op deze wijze importeert kan gebruiken zonder steeds de class te noemen.

code:
1
2
3
4
5
6
7
8
9
10
package foo;

public class Foo {
  public static final int BAR = 1;
  public static final int FRED = 2;
  
  public static void foo(int x) {
    System.err.println(String.valueOf(x));
  }
}


code:
1
2
3
4
5
6
7
8
import static foo.Foo.*;

public class Main {
  public static void main(String[] ps) {
    foo(FRED);
    foo(BAR);
  }
}


Een soort van include dus, maar niet van headers natuurlijk ;) .

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


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Gek genoeg had ik al een flauw vermoeden dat ik het niet zo resoluut had moeten zeggen O-) :P

Ik ga zeer binnenkort toch de nieuwe features in 1.5 eens even goed doornemen, want ik begin al weer hopeloos achter te raken :+

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
drm schreef op 15 maart 2004 @ 22:26:
(...)Ik ga zeer binnenkort toch de nieuwe features in 1.5 eens even goed doornemen, want ik begin al weer hopeloos achter te raken :+
http://java.sun.com/j2se/...lnotes/features.html#lang voor de features die aan de taal zijn toegevoegd :)

[edit] Dat heb je met mensen op hoge posities he, die verliezen contact met de praktijk >:)

[ Voor 13% gewijzigd door Glimi op 15-03-2004 23:20 ]


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Onderaan JSR 201 staan linkjes naar uitleg over de nieuwe features (buiten generics). Info over static import staat hier:

http://jcp.org/aboutJava/.../tiger/static-import.html

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


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Overigens had ik Foo eerst niet in een package gestopt, maar dat werkte niet. Je kan dus niet "import static Foo.*". Ik heb het maar even opgelost door die klasse wel in een package te stoppen :o .

Ik weet niet of dit een bug of een feature is, zo goed zit ik ook niet in al die nieuwe features ;) . Een dezer dagen eens kijken of hier een bug is gesubmit of dat er ergens iets over in de docs staat.

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


  • Robtimus
  • Registratie: November 2002
  • Laatst online: 21:44

Robtimus

me Robtimus no like you

Janoz schreef op 15 maart 2004 @ 20:27:
Je kunt een apparte class maken waarin je de configuratie zet. Waneer je hier static velden (Of liever nog getters) maakt kun je die gewon met Classname.ACHTERGROND gebruiken.
Waarom getters gebruiken? Gewoon final maken zoals mbravenboer al liet zien, dat werkt hetzelfde.

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
mbravenboer schreef op 15 maart 2004 @ 22:46:
(...)Ik weet niet of dit een bug of een feature is, zo goed zit ik ook niet in al die nieuwe features ;) . Een dezer dagen eens kijken of hier een bug is gesubmit of dat er ergens iets over in de docs staat.
Bug
Ben m'n login even kwijt, dus kan niet controleren of de link werkt :+

[ Voor 5% gewijzigd door Glimi op 16-03-2004 09:57 ]


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 26-05 00:01

Janoz

Moderator Devschuur®

!litemod

Door dat extra niveau toe te voegen maak je van je constnts classe een configurator. Nu is dat lang niet altijd nodig, maar het voorbeeld van de topicstarter heeft het over een achtergrond kleur. Dit zijn dingen die ik eerder in een configurrator bestand zou hebben dan in een constants class. Misschien zelfs nog wel rechtstreeks uit de window manager zodat alle applicaties er hetzelfde uitzien.

voorbeeldje:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package net.tweakers;

public class Configurator {
  private static Map configData = new HashMap();
  static {
    configData.put("achtergrondkleur",new Color(Color.GREY));
    configData.put("voorgrondkleur",new Color(Color.WHITE));
    configData.put("randkleur",new Color(Color.BLACK));
  }
  public static Object get(String key){
    return configData.get(key);
  }
  public static Object get(String key, Object default){
    Object result = get(key);
    if (Object == null) return default;
    else return result;
}

Dit lijkt misschien wat overkill. Je zult je resultaat nog moeten casten en eventueel controleren op null. Waneer je echter je configuratie wat flexibeler wilt maken is het verhaal ineens heel anders. Waneer je nu bijvoorbeeld je constanten uit een xml of properties document of zelfs een database wilt halen hoef je alleen je configurator aan te passen.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 19:32

Gerco

Professional Newbie

* Gerco houdt zijn mond maar, Janoz zegt het veel beteren sneller

[ Voor 111% gewijzigd door Gerco op 16-03-2004 10:02 ]

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!

Pagina: 1