PSN jschut_82 | Xbox: JSchut82
btw, bedoel je je een extern plaatje (.GIF/.BMP) of gewoon een g.drawRect(..) bijvoorbeeld
[ Voor 36% gewijzigd door vogeltje op 19-09-2003 12:41 ]
binnenkort een hele dikke casemod :P
Een extern plaatje..... een GIFvogeltje schreef op 19 September 2003 @ 12:39:
Heb je ook al iets met een Canvas geprobeerd? Ik vind dat nog altijd de meest ideale tekenondergrond
btw, bedoel je je een extern plaatje (.GIF/.BMP) of gewoon een g.drawRect(..) bijvoorbeeld
PSN jschut_82 | Xbox: JSchut82
Post anders eens wat code
binnenkort een hele dikke casemod :P
Hier de 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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
| public class TextEditor extends JFrame
{
JPanel backgroundPanel;
ImageCanvas canvas;
JButton BoldButton;
public void init()
{
canvas = new ImageCanvas();
backgroundPanel = new JPanel();
backgroundPanel.setPreferredSize(new Dimension(450, 100));
BoldButton = new JButton(new StyledEditorKit.BoldAction());
BoldButton.setText("BOLD");
BoldButton.setPreferredSize(new Dimension(22, 22));
BoldButton.setToolTipText("Vetgedrukt");
add(backgroundPanel);
backgroundPanel.add(canvas);
backgroundPanel.add(BoldButton);
}
public void stop()
{
}
}
class ImageCanvas extends Canvas
{
private Image background;
MediaTracker mt;
public void init()
{
mt = new MediaTracker(this);
background = Toolkit.getDefaultToolkit().getImage("background.gif");
mt.addImage(background,1);
try {
mt.waitForAll();
}
catch (InterruptedException e) {}
}
public void paint(Graphics g)
{
g.drawImage(background,0,0,this);
}
}; |
Ik begrijp niet zo goed hoe je dat bedoeld met die canvas......
Misschien wil je dat een beetje toelichten
PSN jschut_82 | Xbox: JSchut82
Dit heb ik toen opgelost door het Canvas apart als een component toe te voegen aan het JPanel.
Ik zit niet thuis, anders had ik daar nog wat source van kunnen posten, helaas
binnenkort een hele dikke casemod :P
In plaats van een AWT Canvas zou ik gewoon een JPanel gebruiken en dan een overriding in de paintComponent( ) gebruiken in plaats van in de paint
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
| public class TextEditor extends Applet
{
ImagePanel backgroundPanel;
JButton BoldButton;
public void init()
{
backgroundPanel = new ImagePanel();
backgroundPanel.setPreferredSize(new Dimension(450, 100));
BoldButton = new JButton(new StyledEditorKit.BoldAction());
BoldButton.setText("BOLD");
BoldButton.setPreferredSize(new Dimension(22, 22));
BoldButton.setToolTipText("Vetgedrukt");
add(backgroundPanel);
backgroundPanel.add(BoldButton);
}
public void stop()
{
// no actions needed here now.
}
}
class ImagePanel extends JPanel
{
private Image background;
MediaTracker mt;
public void init()
{
mt = new MediaTracker(this);
background = Toolkit.getDefaultToolkit().getImage("background.gif");
mt.addImage(background,1);
try {
mt.waitForAll();
}
catch (InterruptedException e) {}
}
public void paintComponent(Graphics g)
{
g.drawImage(background,0,0,this);
}
}; |
Ik zie nu een grijs scherm... Maar als ik op de plek klik waar de Button zou moeten staan dan komtie wel tevoorschijn!
[ Voor 170% gewijzigd door JSchut op 19-09-2003 13:28 ]
PSN jschut_82 | Xbox: JSchut82
http://java.sun.com/docs/books/tutorial/uiswing/index.html voor de Swing turorial waar het instaat (een aanrader imho)JSchut schreef op 19 September 2003 @ 13:11:
Zou je dit kunnen uitleggen..... ik ben nog niet zo lang bezig met java en weet niet hoe je dat kan doen
specefieker:
Verder moet je ook even kijken of het plaatje wel geladen kan worden. Ik heb een vermoeden dat dat het probleem is. Kijk of je pad wel goed staat naar het plaatje en of hij bestaat http://java.sun.com/j2se/...ava/io/File.html#exists()For Swing components, custom painting code goes in the paintComponent method.
[ Voor 21% gewijzigd door Glimi op 19-09-2003 13:33 ]
Dat moet iid sowieso ook nog, om de default paint method aan te roepen.CyBoB schreef op 19 September 2003 @ 14:07:
super.paintComponent(g); eerst aanroepen in de paintComponent methode voordat je iets anders gaat tekenen !!
damn, das was ff graven in mijn geheugen
[ Voor 13% gewijzigd door vogeltje op 19-09-2003 14:14 ]
binnenkort een hele dikke casemod :P
Ik heb nu een plaatje op de achtergrond
Hier ff mijn 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
26
27
28
29
30
31
32
33
34
| public class TextEditor extends Applet
{
public void init()
{
mainPane = new JLayeredPane();
mainPane.setPreferredSize(new Dimension(740, 400));
mainPane.setBounds(0,0,740,400);
backgroundImage = new ImageIcon(this.getClass().getResource(getParameter("backgroundImage")));
imageLabel = new JLabel(backgroundImage);
imageLabel.setBounds(0,0,740,400);
topPanel = new JPanel();
topPanel.setPreferredSize(new Dimension(740, 400));
topPanel.setBounds(0,0,740,400);
topPanel.setOpaque(false);
mainPane.add(imageLabel,0);
mainPane.add(topPanel,1);
mainPane.moveToFront(topPanel);
add(mainPane);
}
JLayeredPane mainPane;
JPanel topPanel;
JLabel imageLabel;
ImageIcon backgroundImage;
} |
Wanneer ik topPanel niet gebruik gaat her goed.... Dan kan ik gewoon buttons ed over het plaatje heen plaatsen.....
Maar ik heb er nu een JPanel over heen gezet en deze transparant gemaakt maar dan zie ik het plaatje niet meer
En aan de bovenkant hou ik altijd een randje van ongeveer 10 px waar ik me mateloos aan irriteer.......
In het kort zijn dit dus mijn vragen:
1. Hoe kan het dat ik me plaatje niet meer zie? ... Kan deze construstie die ik nu gebruik wel?
2. Is het mogelijk om het bovenste randje weg te krijgen?
[ Voor 8% gewijzigd door JSchut op 22-09-2003 12:22 ]
PSN jschut_82 | Xbox: JSchut82