2014-11-03 64 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