Goed, daar ben ik weer...
Na een dag bezig te zijn geweest om een simpel plaatje te kunnen weergeven, werd duidelijk dat het plaatje met behulp van een drawImage gemaakt moest worden i.v.m. meerdere (transparante) 'cirkels' die later over de image geplaatst moeten worden.
Ik heb de volgende functie die een image ophaalt van de harde schijf: (kep bij de toolkit en bij de bufferedimage regels een enter geslagen om de tabel van got niet helemaal te vern**ken)
Ik haal dus een image op, zet deze in de Image variabele img. Dan zet ik deze zolang in een ImageIcon, zodat ik daar de hoogte en breedte van de image op kan halen. Dit werkt ook wel. Op de een of andere manier werkt het met img.getHeight(io) niet, dan krijg ik een -1 terug, wat errors veroorzaakt.
Goed, verder, ik zet hem in een BufferedImage, ik had gelezen dat dat beter met Graphics2D ofzo zou werken. Maar goed, dan nu mijn paint functie:
Ik maak hier dus een graphics object van plaatje, en die wil ik dus tekenen, maar hij beland al helemaal niet in deze functie, en als hij dat doet, dan krijg ik een NullPointerException, omdat g en g2d leeg zijn...
Het plaatje zou op een panel moeten komen. Verder is de constructor van deze class als volgt:
Hoe kan ik nu in godsnaam dat plaatje afbeelden op het JLabel?? Ik ben het na meer dan 6 uur proberen wel zat nu
Iemand?
Na een dag bezig te zijn geweest om een simpel plaatje te kunnen weergeven, werd duidelijk dat het plaatje met behulp van een drawImage gemaakt moest worden i.v.m. meerdere (transparante) 'cirkels' die later over de image geplaatst moeten worden.
Ik heb de volgende functie die een image ophaalt van de harde schijf: (kep bij de toolkit en bij de bufferedimage regels een enter geslagen om de tabel van got niet helemaal te vern**ken)
code:
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
| public void showChooser() {
JFileChooser chooser = new JFileChooser();
chooser.setAcceptAllFileFilterUsed(false);
chooser.addChoosableFileFilter(new OwnFilter());
int returnVal = chooser.showOpenDialog(this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
img = Toolkit.getDefaultToolkit().getImage _
(chooser.getSelectedFile().getAbsolutePath());
ImageIcon imageIcon = new ImageIcon(img);
int imageHeight = imageIcon.getIconHeight();
int imageWidth = imageIcon.getIconWidth();
plaatje = new BufferedImage(imageWidth, imageHeight, _
BufferedImage.TYPE_INT_RGB);
// en hier moet er toch wat gebeuren dan?
System.out.println(imageHeight + " " + imageWidth);
//jLabel.setIcon(imageIcon);
mapPanel.invalidate();
mapPanel.validate();
repaint();
}
} |
Ik haal dus een image op, zet deze in de Image variabele img. Dan zet ik deze zolang in een ImageIcon, zodat ik daar de hoogte en breedte van de image op kan halen. Dit werkt ook wel. Op de een of andere manier werkt het met img.getHeight(io) niet, dan krijg ik een -1 terug, wat errors veroorzaakt.
Goed, verder, ik zet hem in een BufferedImage, ik had gelezen dat dat beter met Graphics2D ofzo zou werken. Maar goed, dan nu mijn paint functie:
code:
1
2
3
4
5
6
7
| public void paintComponent(Graphics g) {
Graphics g2d = plaatje.createGraphics();
//Graphics g2d = (Graphics)g;
System.out.println("al hier geweest?!");
g2d.drawImage(plaatje, 0, 0, io);
g2d.dispose();
} |
Ik maak hier dus een graphics object van plaatje, en die wil ik dus tekenen, maar hij beland al helemaal niet in deze functie, en als hij dat doet, dan krijg ik een NullPointerException, omdat g en g2d leeg zijn...
Het plaatje zou op een panel moeten komen. Verder is de constructor van deze class als volgt:
code:
1
2
3
4
5
| public OpenFiles(JPanel mapPanel) {
this.mapPanel = mapPanel;
jLabel = new JLabel();
mapPanel.add(jLabel, BorderLayout.NORTH);
} |
Hoe kan ik nu in godsnaam dat plaatje afbeelden op het JLabel?? Ik ben het na meer dan 6 uur proberen wel zat nu
Iemand?