2014-11-03 63 views
-1

我正在设计一个小程序,并且我已经制作了一些代码,它在eclipse中与小应用程序查看器一起运行时工作正常。在部署在网页上的java小程序中的面板之间切换

但是,当我尝试将其放在我的网页上,并且小程序必须从一个面板切换到另一个面板时,它不起作用。代码如下所示(这是我尝试使其显示的部分一个新窗格)。

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为了更好地帮助更多的解释和完整的例子)越早,张贴[MCVE](http://stackoverflow.com/help/mcve)(最小完备可验证实施例)。 2)为什么编写一个小程序?如果是由于老师指定它,请将它们转介给[为什么CS教师应该**停止**教Java applets](http://programmers.blogoverflow.com/2013/05/why-cs-teachers-should -stop教学-java的小应用程序/)。 3)对于'开关面板'认为'CardLayout' .. – 2014-11-03 21:50:18

+0

顺便说一句 - '公共Main(){'应该'@Override public void init(){'为一个applet。**和**'final JApplet mainApp =新的JApplet();添加(mainApp); mainApp.add(login);'应该是'add(login);'! – 2014-11-03 22:43:12

回答

1

让生活变得轻松。使用CardLayout

A CardLayout object是一个容器的布局管理器。它将容器中的每个组件视为卡片。一次只能看到一张卡片,容器就像一叠卡片一样。

基本上,您将创建一个主面板来容纳所有其他面板。然后,当您添加面板主面板中,你给那么每一个“名”

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

去的时候,我们要显示一个不同的观点,我们可以只呼吁CardLayoutshow

cardLayout.show(mainPanel, ADMIN_SCREEN); 

参见在How to Use CardLayout