所以我正在创建这个applet,我希望在其中有完整的swing组件。我查看了所有文档,我已经创建了applet,如果我覆盖update(Graphics g)
方法,我可以在其中显示一些内容,但只是向contentPane
添加组件似乎没有这样做!我做错了什么?
import javax.swing.JApplet;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import org.steephill.kindlab.LabApp;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.FormLayout;
public class ClientApplet extends JApplet {
ClientTreePanel treePanel;
public void destroy() {
// Put your code here
}
public String getAppletInfo() {
return "KindLab Client Applet";
}
public void init() {
try {
LabApp.initializeHibernate();
if (!LabApp.authenticate("user", "pass")) {
JOptionPane.showMessageDialog(this, "authentication failed");
} else {
try {
javax.swing.SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
createGUI();
}
});
} catch (Exception e) {
System.err.println("createGUI didn't successfully complete");
}
}
} catch (Exception ex) {
JOptionPane.showMessageDialog(this, "error intitializing applet\r\n" + ex.getMessage());
}
}
protected void createGUI() {
treePanel = new ClientTreePanel();
treePanel.setVisible(true);
getContentPane().add(new JLabel("TESTING!"));
getContentPane().add(treePanel);
System.out.println("THIS DOES RUN");
}
public void start() {
// Put your code here
}
public void stop() {
// Put your code here
}
/* if I uncomment this method, it WORKS and I get "Hello World!"
public void paint(Graphics g) {
super.paint(g);
g.drawString("Hello World!",25,25);
}
*/
}
请帮忙!谢谢你! 约书亚
答案 0 :(得分:2)
我在这里看到了代码的几个问题:
由于您没有调用pack(),因此不会计算布局,对于您的情况,可能不会显示任何内容(您没有提供ClientTreePanel的代码)。
答案 1 :(得分:1)
你不应该拥有来调用pack() - 当你首次实现组件时会计算布局,这会在你调用pack时发生 - 而且当组件首次变为可见时也是如此。< / p>
“无约束地添加组件”在正确的轨道上 - 您应该将代码添加到内容窗格的代码更改为:
getContentPane().add(new JLabel("TESTING!"), BorderLayout.NORTH);
getContentPane().add(treePanel, BorderLayout.CENTER);
另一个问题是为什么你的ClientTreePanel组件没有显示 - 它可能是大小调整,布局问题,或其他东西 - 但是没有看到那些代码,它只是猜测。
答案 2 :(得分:1)
尝试删除你的绘画方法,你会发现它有效。问题可能是因为你有一个paint方法,所有的改变都是通过它来完成的。这很奇怪,因为它确实显示了一个JButton。