我正在设计一个applet,并且我已经制作了一些代码,这些代码在使用applet viewer在eclipse中运行时工作正常。
然而,当我尝试将它放在我的网页上并且applet必须从一个面板切换到另一个面板时它不起作用..代码看起来如下(这是我试图让它显示的部分新窗格)。
enter code here
package roomBooking;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.lang.*;
import java.sql.*;
import java.awt.GridLayout;
import javax.swing.*;
public class Main extends JApplet {
Connect connection = new Connect();
final LoginScreen login = new LoginScreen();
SessionStorage session = new SessionStorage();
final AdminPanel admin = new AdminPanel();
public Main(){
final JApplet mainApp = new JApplet();
add(mainApp);
mainApp.add(login);
//handle login
login.okay.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e){
User newUser = new User(login.username.getText());
session.setUsersLoggedIn(newUser);
admin.setWelcome(new JLabel("Welcome "+ newUser.getName()));
admin.add(admin.getWelcome());
admin.add(admin.getRoomAdministration());
if (newUser.getPassword().equals(login.pass.getText()) && newUser.getUserlevel() == 1 ){
login.setVisible(false);
admin.setVisible(true);
mainApp.remove(login);
mainApp.add(admin);
mainApp.revalidate();
mainApp.repaint();
}
else if (newUser.getPassword().equals(login.pass.getText()) && newUser.getUserlevel() == 2){
}
else if (newUser.getPassword().equals(login.pass.getText()) && newUser.getUserlevel() == 3){
}
else if (newUser.getPassword().equals(login.pass.getText()) && newUser.getUserlevel() == 4){
}
else{
JOptionPane error = new JOptionPane("Wrong username or password");
error.setVisible(true);
System.out.println(newUser.getPassword());
}
}
});
}
答案 0 :(得分:1)
让生活变得轻松。使用CardLayout
CardLayout
对象是容器的布局管理器。它将容器中的每个组件视为卡片。一次只能看到一张卡片,而容器就像一堆卡片一样。
基本上,您将创建一个主面板来容纳所有其他面板。然后,当您将面板添加到主面板时,然后为每个“name”提供
LoginScreen login = new LoginScreen();
AdminPanel admin = new AdminPanel();
JPanel mainPanel = new JPanel();
final String LOGIN_SCREEN = "login";
...
CardLayout cardLayuot = new CardLayout();
mainPanel.setLayout(cardLayout);
mainPanel.add(login, LOGIN_SCREEN);
mainPanel.add(admin, ADMIN_SCREEN);
当我们想要显示不同的观点时,我们只需在show
上调用CardLayout
。
cardLayout.show(mainPanel, ADMIN_SCREEN);
查看更多解释和完整示例