JApplet - skift indhold i contentpane
HejJeg vil gerne have min applet til at kunne skifte udseende/indhold, således at min bruger først for en login billed at se og hvis han/hun logger korrekt ind, skal brugeren se min jtable. Jeg har dog lidt problemer med at få lavet skift af visningen....
Min kode kommer her:
import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTextField;
import dk.elopak.client.util.FormPanel;
import dk.elopak.server.Server;
import dk.elopak.server.data.ConverterServerDataView;
import dk.elopak.server.data.DefaultServerDataView;
import dk.elopak.server.data.FlameSealerServerDataView;
public class GUI extends JApplet {
private FormPanel formPanel;
private JPanel loginContainer;
private JSplitPane dataContainer;
private static DataTable dataTable = null;
private static boolean isLoggedIn = false;
public static JButton moveRowsBtn;
private static final int COLUMNS_TEXTFIELD = 15;
private JTextField txtUserName = new JTextField(COLUMNS_TEXTFIELD);
private JPasswordField txtPassword = new JPasswordField(COLUMNS_TEXTFIELD);
private JButton btnLogin = new JButton("Login");
private boolean isLoginScreenVisible = true;
private static DefaultServerDataView dsdv;
public void paint(Graphics g) {super.paint(g);}
public void start() {super.start();}
public void stop() {super.stop();}
public void destroy() {super.destroy();}
public void init() {
try {
super.init();
javax.swing.SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
loginContainer = new JPanel(new BorderLayout());
dataContainer = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
txtUserName.setText("Jan");
txtPassword.setText("bugaboo");
createAndShowGUI();
}
});
} catch (Exception e) {
System.err.println("createGUI didn't successfully complete");
e.printStackTrace();
}
}
private ActionListener btnLoginActionListener = new ActionListener(){
public void actionPerformed(ActionEvent e){
if(!txtUserName.getText().equals("")){
if (txtPassword.getPassword().length!=0){
boolean valid = Server.validateLogin(txtUserName.getText(), txtPassword.getPassword());
if(valid)switchView();
}else{
displayError("You have to provide a password");
txtPassword.requestFocus();
}
}else{
displayError("You have to provide a username");
txtUserName.requestFocus();
}
}
};
public void createLoginView(){
formPanel = new FormPanel();
btnLogin.addActionListener(btnLoginActionListener);
formPanel.addFrame("Login");
formPanel.addComponents(txtUserName, "UserName");
formPanel.addComponents(txtPassword, "Password");
formPanel.addComponents(btnLogin);
formPanel.closeFrame();
formPanel.fillSpace();
loginContainer.add(formPanel);
loginContainer.setVisible(true);
}
public void createDataView(boolean isConverter){
if(isConverter){
ConverterServerDataView csdv = new ConverterServerDataView();
setDataView(csdv);
dataTable = new DataTable(csdv);
}else{
FlameSealerServerDataView fssdv = new FlameSealerServerDataView();
setDataView(fssdv);
dataTable = new DataTable(fssdv);
}
JScrollPane scrollPane = new JScrollPane(dataTable);
JPanel topPanel = new JPanel();
String[] machineList = ((DefaultServerDataView)dataTable.getModel()).getMachineList();
JComboBox machines = new JComboBox(machineList);
JLabel lastUpdated = new JLabel();
java.sql.Timestamp d = new java.sql.Timestamp(System.currentTimeMillis());
lastUpdated.setText("Last updated : " + Server.getDateFormat().format(d));
moveRowsBtn = new JButton("Move");
moveRowsBtn.addActionListener(btnMoveActionListener);
topPanel.add(machines);
topPanel.add(lastUpdated);
topPanel.add(moveRowsBtn);
JPanel bottomPanel = new JPanel();
scrollPane.setViewportView(dataTable);
bottomPanel.add(scrollPane);
dataContainer.setDividerLocation(110);
dataContainer.setEnabled(false);
dataContainer.setLeftComponent(topPanel);
dataContainer.setRightComponent(scrollPane);
dataContainer.setVisible(true);
}
public void createAndShowGUI() {
if(!isLoggedIn){
createLoginView();
getContentPane().add(loginContainer, BorderLayout.CENTER);
}else{
getContentPane().add(dataContainer, BorderLayout.CENTER);
}
}
