Ik heb het scherm onderverdeeld in drie JPanels, die weer JPanels bevatten mocht dat nodig zijn. Het rechter JPanel, daar wil ik een CardLayout gebruiken omdat ik dan verschillende dingen daar kan laten zien op een gemakkelijke manier zonder gelijk tabjes te gebruiken. Ik ben zover gekomen. Het cardlayout gedeelte is een aanpassing van deze tutorial:
http://java.sun.com/docs/...1dot4/CardLayoutDemo.java
Als ik dit compileer gaat het goed, als ik het run en op knop1 klik, gebeurt het volgende:
Ik mis net even dat kleine stukje volgens mij.....
http://java.sun.com/docs/...1dot4/CardLayoutDemo.java
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
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
| package sudswing;//ik moet *alles* in een package gooien, ook nog zoiets vreemds, classpath ingesteld as advertised import java.awt.*; import java.awt.event.*; import javax.swing.*; public class CompacterGui extends JFrame implements ActionListener { JButton knop1, knop2, knop3, hoi, hai, houdoe, zien; JTextArea messageArea; JPanel lp, cp, tp, bp, rpd, rpi, rp; final static String inventory = "Inventory View"; final static String defaultview = "Default View"; CardLayout cl = new CardLayout(); CompacterGui() { JPanel lp = new JPanel(); JPanel cp = new JPanel(); JPanel tp = new JPanel(); JPanel bp = new JPanel(); JPanel rp = new JPanel(cl); JPanel rpd = new JPanel(); JPanel rpi = new JPanel(); JPanel messagePanel = new JPanel(); JScrollPane messageScroll; lp.setSize(140,400); lp.setPreferredSize(new Dimension(140,400)); rpd.setSize(140,400); rpd.setPreferredSize(new Dimension(140,400)); rpi.setSize(140,400); rpi.setPreferredSize(new Dimension(140,400)); cp.setSize(400,400); cp.setPreferredSize(new Dimension(400,400)); tp.setSize(400,200); tp.setPreferredSize(new Dimension(400,200)); bp.setSize(400,200); bp.setPreferredSize(new Dimension(400,200)); Icon image = new ImageIcon("E:/studie/java/sudswing/suderia.jpg"); //.....en een absoluut pad naar het plaatje JLabel imageHolder = new JLabel(image); tp.add(imageHolder); tp.setBackground(Color.black); bp.setLayout(new BorderLayout()); messagePanel.setBackground(Color.black); bp.add(messagePanel, BorderLayout.PAGE_START); messageArea = new JTextArea(8, 30); messageArea.setLineWrap(true); messageArea.setWrapStyleWord(true); messageArea.setMargin(new Insets(5,5,5,5)); messageScroll = new JScrollPane(messageArea); bp.add(messageScroll, BorderLayout.CENTER); bp.setBackground(Color.black); cp.add(tp, BorderLayout.NORTH); cp.add(bp, BorderLayout.SOUTH); cp.setBackground(Color.black); JButton knop1 = new JButton("knop1"); JButton knop2 = new JButton("knop2"); JButton knop3 = new JButton("knop3"); lp.add(knop1); lp.add(knop2); lp.add(knop3); lp.setBackground(Color.black); JButton hoi = new JButton("hoi"); JButton hai = new JButton("hai"); JButton houdoe = new JButton("houdoe"); JButton zien = new JButton("zien"); rpd.add(hoi); rpd.add(hai); rpd.add(houdoe); rpd.setBackground(Color.black); rpi.add(zien); rp.add(defaultview, rpd); rp.add(inventory, rpi); knop1.addActionListener(this); knop2.addActionListener(this); knop3.addActionListener(this); zien.addActionListener(this); Container c = getContentPane(); c.add(lp, BorderLayout.WEST); c.add(cp, BorderLayout.CENTER); c.add(rp, BorderLayout.EAST); c.setBackground(Color.black); setTitle(" "); setLocation(100, 100); setSize(780, 400); setVisible(true); setDefaultCloseOperation(EXIT_ON_CLOSE); setResizable(false); messageArea.append("Eerste regel."); } public void actionPerformed(ActionEvent e) { if (e.getActionCommand() == "knop1") { messageArea.append("\nknop1"); rpSwitchTo(inventory); } if (e.getActionCommand() == "knop2") { messageArea.append("\nknop2"); } if (e.getActionCommand() == "knop3") { messageArea.append("\nknop3"); } } public void rpSwitchTo(String goTo) { cl.show(rp, goTo); } } |
Als ik dit compileer gaat het goed, als ik het run en op knop1 klik, gebeurt het volgende:
code:
1
2
3
4
5
| Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at java.awt.CardLayout.show(CardLayout.java:504)
at sudswing.CompacterGui.rpSwitchTo(CompacterGui.java:120)
at sudswing.CompacterGui.actionPerformed(CompacterGui.java:109)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849) |
Ik mis net even dat kleine stukje volgens mij.....
iOS developer