在网页上部署时,在Java小程序中切换面板

时间:2014-11-03 18:52:08

标签: java eclipse swing applet

我正在设计一个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());
            }
        }
    });
}

1 个答案:

答案 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);

How to Use CardLayout

查看更多解释和完整示例