[java] JScrollPane setOpaque(false) werkt niet?

Pagina: 1
Acties:

  • JeroenTheStig
  • Registratie: Mei 2000
  • Laatst online: 05:55
Ik heb een jpanel waarin ik een gif-plaatje teken door de methode paintComponent te overriden. Nu wil ik hierop een JScrollPane met daarin een textarea plaatsen. Een stukje code:

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
private JComponent buildMainPanel() {
        final ImageIcon imageIcon = new ImageIcon(MigratieToolFrame.class.getResource("migraties_logo.gif"));
        JPanel panel = new JPanel(new BorderLayout(10, 10)){
            Image image = imageIcon.getImage();
            {
                setOpaque(false);
            }
            public void paintComponent(Graphics g) {
                g.setColor(Color.WHITE);
                g.fillRect(0, 0, this.getWidth(), this.getHeight());
                g.drawImage(image,
                    this.getWidth() / 2 - image.getWidth(this) / 2,
                    this.getHeight() / 2 - image.getHeight(this) / 2,
                    this);

                super.paintComponent(g);
            }
        };
      
        _textArea.setOpaque(false);

        JScrollPane scrollPane = new JScrollPane(_textArea);
        scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
        scrollPane.setOpaque(false);
        panel.add(scrollPane);
        return panel;
    }


Zoals je ziet heb ik de opaque in zowel de textarea, de scrollpane als de panel op false gezet. Normaal gesproken zou het gif plaatje te zien zijn, omdat de opaque van de componenten uit is geschakeld.
Als ik dit nu draai, dan krijg ik een grijs scherm in plaats van het plaatje. Als ik in plaats van de scrollPane de textarea toevoeg aan de panel, dan gaat het wel goed. Ik heb op internet rond gekeken, en het blijkt dat de JScrollPane een erg irritant ding is om opaque uit te zetten.

Heeft iemand een oplossing voor dit probleem?

  • kasper_vk
  • Registratie: Augustus 2002
  • Laatst online: 08-04-2025
Geen oplossing voor je probleem, maar een alternatief:
Je kunt ook een JLabel gebruiken om een ImageIcon weer te geven, da's standaard functionaliteit van de JLabel, dan hoef je dus geen paint-methode van Java GUI-componenten te gaan overriden.

offtopic:
D.m.v. layoutmanagers kan je die vervolgens ook nog laten centreren, hoef je dat ook niet meer zelf te doen.

The most exciting phrase to hear in science, the one that heralds new discoveries, is not 'Eureka!' but 'That's funny...'


  • JeroenTheStig
  • Registratie: Mei 2000
  • Laatst online: 05:55
Aha, vandaar! thanx :)
kasper_vk schreef op vrijdag 06 mei 2005 @ 13:44:
Geen oplossing voor je probleem, maar een alternatief:
Je kunt ook een JLabel gebruiken om een ImageIcon weer te geven, da's standaard functionaliteit van de JLabel, dan hoef je dus geen paint-methode van Java GUI-componenten te gaan overriden.

offtopic:
D.m.v. layoutmanagers kan je die vervolgens ook nog laten centreren, hoef je dat ook niet meer zelf te doen.
Dat is idd een betere optie. Ik zal dat ook eens proberen.

[ Voor 60% gewijzigd door JeroenTheStig op 06-05-2005 13:47 ]