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:
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?
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?