我有一个在Java Swing中工作的应用程序,但似乎无法转换为Applet。基本上Applet上有四个按钮,我希望其中一个按钮清除屏幕然后绘制一个新界面(当然,我要为其他按钮添加内容,但我被困在这里)。 / p>
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.JApplet; //import swing applet interface
import java.util.Hashtable;
public class TopMenu extends JApplet{
private JPanel panel = new JPanel();
public void init(){
mainMenu();
}
public void mainMenu() {
// create buttons
panel.setLayout(new GridLayout(2, 2));
JButton collectButton = new JButton("Collect data");
JButton uploadButton = new JButton("Upload");
JButton downloadButton = new JButton("Download");
JButton exploreButton = new JButton("Explore data");
panel.add(collectButton);
panel.add(uploadButton);
panel.add(downloadButton);
panel.add(exploreButton);
collectButton.addActionListener(new ActionListener( ) {
public void actionPerformed(ActionEvent e) {
int numberGFish = 400;
//panel.removeAll();
//panel.add(new JLabel("Just to test"), BorderLayout.CENTER);
//panel.revalidate();
//panel.repaint();
}
});
setContentPane(panel);
}
}
所有代码完全正常,直到我添加ActionListener,然后整个事情变得空白。它编译好了,但是当我在我的服务器上测试时,即使是第一个菜单也没出现,它只是一个空白的面板。我已经尝试在ActionListener位中放入大量非常平庸的东西,以确保它们不是问题,但正如你所看到的那样,甚至只是在那里声明一个数字也行不通。
最初我实际上有一个Listener位调用另一个方法,然后做了其他所有事情,而且这也没有用,我废弃了,因为我想也许这就是问题。
我确信这是如此简单,但我现在已经陷入了很多时间,我真的只是想要测试的东西。感谢建议。
答案 0 :(得分:2)
不知道是否会出现问题,但应在Event Dispatch Thread上创建所有GUI组件。
以下是关于如何制作小程序的Swing教程的推荐代码结构:
public void init() {
//Execute a job on the event-dispatching thread:
//creating this applet's GUI.
try {
javax.swing.SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
createGUI();
}
});
} catch (Exception e) {
System.err.println("createGUI didn't successfully complete");
}
}
private void createGUI() {
JLabel label = new JLabel(
"You are successfully running a Swing applet!");
label.setHorizontalAlignment(JLabel.CENTER);
label.setBorder(BorderFactory.createMatteBorder(1,1,1,1,Color.black));
add(label, BorderLayout.CENTER);
}
答案 1 :(得分:0)
我知道这是一个愚蠢的问题,但我无法理解。我现在已经整理好了。
我完全愚蠢,没有将TopMenu $ 1.class文件复制到服务器。由于某种原因,它可以在没有此文件的情况下工作,但不会添加ActionListener位。所以我从未想过这可能是问题所在。
卫生署!谢谢大家。