用Swing做GUI的时候比如有2个界面:1个登陆界面,1个登陆后的界面登陆界面上有个按键,按了后就跳到登陆后的界面这种该怎么做啊?具体点

解决方案 »

  1.   

    new一个登录后的界面对象啊,然后让它显示setVis......(true);
      

  2.   

    麻烦帮我看眼代码这是一个界面1里的按钮事件
    private JButton getJButton() {
    if (jButton == null) {
    jButton = new JButton();
    jButton.setBounds(new Rectangle(150, 275, 83, 33));
    jButton.setText("Send");
    jButton.addActionListener(new java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent e) {
    MyApp m=new MyApp();
    m.messagePanel.setVisible(false);
    m.panel2.setVisible(true); // 这里和上一行的messagePanel,panel2都无法识别,是不是因为JFrame把它设置为私有了?
    }
    });
    }
    return jButton;
    }这是JFrame的代码
    import java.awt.BorderLayout;
    import java.awt.*;
    import javax.swing.JPanel;
    import javax.swing.JFrame;
    import java.awt.CardLayout;
    import java.awt.Rectangle;
    import java.awt.Dimension;public class MyApp extends JFrame { private static final long serialVersionUID = 1L;
    private Panel2 panel2 = null;
    private MessagePanel messagePanel = null;
    private JPanel jContentPane = null;
     /**
     * This is the default constructor
     */
    public MyApp() {
    super();
    initialize();
    } /**
     * This method initializes this
     * 
     * @return void
     */
    private void initialize() {
    this.setSize(532, 360);
    this.setContentPane(getJContentPane());
    this.setTitle("JFrame");
    this.setVisible(false);
    } /**
     * This method initializes panel2
     * 
     * @return Panel2
     */
    private Panel2 getPanel2() {
    if (panel2 == null) {
    panel2 = new Panel2();
    }
    return panel2;
    } /**
     * This method initializes messagePanel
     * 
     * @return MessagePanel
     */
    private MessagePanel getMessagePanel() {
    if (messagePanel == null) {
    messagePanel = new MessagePanel();
    }
    return messagePanel;
    } /**
     * This method initializes jContentPane
     * 
     * @return javax.swing.JPanel
     */
    private JPanel getJContentPane() {
    if (jContentPane == null) {
    jContentPane = new JPanel();
    jContentPane.setLayout(new BorderLayout());
    jContentPane.add(getPanel2(), BorderLayout.NORTH);
    jContentPane.add(getMessagePanel(), BorderLayout.EAST);
    }
    return jContentPane;
    }}  //  @jve:decl-index=0:visual-constraint="11,10"
    我把属性去掉private依然没反映,现在变成了一运行,JFrame上一个Panel都看不到了?怎么回事啊!
      

  3.   

    代码不全,Panel2是有些什么代码也不清楚
      

  4.   

    MyApp m=new MyApp();
                        m.messagePanel.setVisible(false);
                        m.panel2.setVisible(true); 
    直接使用m.setVisible(true);啊,怎么好像你的都是false,false是不显示啊
      

  5.   

      你为什么要显示一个 panel 呢。 。   正确的应该是 
      MyApp m=new MyApp();
      m.setVisible(true);
       无法识别 是因为panel是私有的。。  如果你想得到他调用 getPanel2() 方法。。  发现你代码写的很乱。。  private void initialize() {
            this.setSize(532, 360);
            this.setContentPane(getJContentPane());
            this.setTitle("JFrame");
            this.setVisible(false);    //这里没必要
        }
      

  6.   

    用cardlayout布局可以很容易解决
      

  7.   

    楼上说出了我要的结果。谢谢。
    我的代码是Visual Editor直接拉出来的。所以没看过这种风格的看起来是会比较乱。
    拖出来的就是不生成对象的所以比较囧