[Java] Transparante labels

Pagina: 1
Acties:

  • Kaastosti
  • Registratie: Juni 2000
  • Laatst online: 17-09 16:32

Kaastosti

Vrolijkheid alom!

Topicstarter
Hallo allemaal!

Ik heb een klein probleempje met m'n labeltjes...
Een achtergrondplaatje is leuk, maar labels blijven gezellig grijs en dat is best wel lelijk.

Nou bestaat er bij labels de functie translucent (dacht ik), welke er voor zou moeten kunnen zorgen dat labels transparant worden. Echter als ik deze functie wil gebruiken, resulteerd dit alleen maar in foutmeldingen.

Stel dat ik dit heb:
code:
1
blah = new Label(Label.CENTER);

Hoe kan ik er dan voor zorgen dat deze label alleen de tekst laat zien en verder geen lelijk grijs blokje?

Alvast bedankt!

Een vergissing is menselijk, maar om er echt een puinhoop van te maken heb je een computer nodig.


  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

volgens mij kan dat (nog) niet
(het zou in 1.4 moeten kunnen)

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
In AWT is dit niet mogelijk (ook niet 1.4 voor zover ik weet). Met Swing is dit wel mogelijk. JComponent (JLabel extends JComponent) bevat een methode setOpaque(boolen) die precies doet wat jij wilt... :) Mix echter geen Swing componenten met AWT, dus laat het zitten of stap helemaal over op Swing.

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


  • Kaastosti
  • Registratie: Juni 2000
  • Laatst online: 17-09 16:32

Kaastosti

Vrolijkheid alom!

Topicstarter
Dan laat ik 't wel zitten, want het moet volgende week werken. In pricipe werkt het al, dit zijn alleen wat schoonheidsfoutjes die ik nog weg wil werken.

Overigens: ik heb een foutje getikt..
code:
1
blah = new Label(Label.CENTER);

werkt niet, het moet ook zijn (heb ik ook)
code:
1
blah = new Label("",Label,CENTER);

Maar in ieder geval bedankt voor het kijken :)

Een vergissing is menselijk, maar om er echt een puinhoop van te maken heb je een computer nodig.


  • LEiPiE
  • Registratie: Juni 2001
  • Laatst online: 17-09 21:57

LEiPiE

... (ing. van weinig woorden)

Overigens: ik heb een foutje getikt..
code:
1
blah = new Label(Label.CENTER);

werkt niet, het moet ook zijn (heb ik ook)
code:
1
blah = new Label("",Label,CENTER);

Maar in ieder geval bedankt voor het kijken :)
dan zie je nog niets :Y) , maar ik neem aan dat je later tekst in de label gaat zetten.

Papa x3, PHP-progger, Citrofiel, import-Tukker, muziekliefhebber


  • im_ik
  • Registratie: November 2000
  • Laatst online: 28-12-2025

im_ik

dat ben ik dus

ALs je JLabel gebruikt kan je het gewoon doen met

backgroundColor = new Color(0.7F, 0.7F, 0.0F, 0.5F);
okButton.setBackground(backgroundColor)
okButton.setForeground(blabla)

Oke dit werkt ook met Jlabel..

Bedenk wel dat je dan ok je JPanel en je JInternelFrame tranparant moet make.

Maar wat je beter kunt doen als je allen Swing gebruikt.
Is eve hier kijken
Daar kan je namelijk plugible Swing L&F packets downloaden.

check dit:
Afbeeldingslocatie: http://www.oyoaha.com/images/screenshot/alpha2.gif

Atari Terminator AI - LegoBlockX3 = ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᣳᣝᐤᣜᣳ.ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ.T008ᖟ


  • Kaastosti
  • Registratie: Juni 2000
  • Laatst online: 17-09 16:32

Kaastosti

Vrolijkheid alom!

Topicstarter
Hehe het probleem is nu juist dat ik geen Swing en dergelijken wil gebruiken. Het is een opdracht van school, die ik vorig jaar ook had (maar helaas de producttoetsing niet gehaald heb).

Nu zijn we met een team van 4 opnieuw dit 'project' aan het doen en de code moet zo ongelooooflijk simpel zijn dat iedere idioot die toetsing moet kunnen halen.

Dit is in grote lijnen gelukt, alles werkt en is betrekkelijk simpel, nu alleen dus die labels nog. En dat zonder extra moeilijke code.

Ik ben al aan het proberen geweest met iets als:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class Applet1 extends Applet {
  Label test;
  Color tekst;
  Color kleur;
  public static final double TRANSLUCENT=0.5; //uit de JBuilder help
  public void init(){
    tekst = new Color(156,215,255); //willekeurige kleur
    kleur = new Color(Color.TRANSLUCENT); //uit de JBuilder help
    test = new Label();
    test.setBackground(kleur);
    test.setForeground(tekst);
    add(test);
    test.setText("BLAAT");
  }
  public void paint(Graphics g){
    g.fillRect(100,0,50,100);  //om het label op zowel normale achtergrond als een gekleurde rechthoek te zien als test
  }
}

Volgens JBuilder help zou iets dergelijks moeten werken, het tegendeel is echter jammergenoeg waar.

Een vergissing is menselijk, maar om er echt een puinhoop van te maken heb je een computer nodig.


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 17-09 22:25

Janoz

Moderator Devschuur®

!litemod

Je zou kunnen proberen zelf een label te maken. Als je daarin de paint methode (kan ook een andere van de tekenmethode's zijn hoor, dus pin me er niet op vast) overruled en hierin alleen de tekst neerzet (dus niet eerst het plaatje leegmaakt) zou je het onderliggende component moeten blijven zien.

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

Pagina: 1