簡體   English   中英

ActionListener從一個Jpanel調用另一個Jpanel

[英]ActionListener to call another Jpanel from a Jpanel

我正在嘗試制作一個向導,而不使用我已經看到的可以輕松使向導用於項目的庫,我已經完成了布局,框架和面板,但是當我單擊“->”時出現了問題不轉到panel2,什么也沒有發生,它確實存儲了名稱,但僅此而已。 有人可以幫我嗎?

編輯它現在可以工作了:)現在在顯示第二個“ panel2”時遇到了麻煩,我單擊箭頭后什么也沒做。 大聲笑

package project4;

import java.awt.Color;
import java.awt.GridLayout;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class WizardGUI extends JFrame implements ActionListener {
    private JLabel enterName;
    private JTextField name;
    private JButton prev, fow;
    private String storeName = "";

WizardGUI(){
    super("Wizard");
  name();

}

void name()
{
      JPanel FPanel = new JPanel();
 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
  this.setLayout(new FlowLayout());
  // JLabel textLabel = new JLabel("lol");
 //textLabel.setPreferredSize(new Dimension(300, 100));
 // frame.getContentPane().add(textLabel); 
  //prev = new JButton("<--");
  fow = new JButton ("-->");

 this.add(FPanel);  
  enterName = new JLabel("Enter Your Name: ");
  name = new JTextField(10);
  enterName.setBounds(60, 30,120,30);
  name.setBounds(80,60,130,30);
  this.setSize(300,390); //set frame size
this.setVisible(true);
 FPanel.add(enterName);
 FPanel.add(name);
  //FPanel.add(prev);
   FPanel.add(fow);
   fow.addActionListener(this);

}


 void enter()
       {
JPanel panel2 = new JPanel();
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
  this.setLayout(new FlowLayout());

//prev = new JButton("<--");
  fow = new JButton ("-->");

 this.add(panel2);  
  enterName = new JLabel("Enter Your Name: ");
  name = new JTextField(10);
  enterName.setBounds(60, 30,120,30);
  name.setBounds(80,60,130,30);
  this.setSize(300,390); //set frame size
this.setVisible(true);
 panel2.add(enterName);
 panel2.add(name);
  //FPanel.add(prev);
   panel2.add(fow);
   fow.addActionListener(this);  
this.getContentPane().removeAll();
validate();
repaint();
this.add(panel2);
       }

void add()
{

}

void select()
{

}
 @Override
    public void actionPerformed(ActionEvent e) {
       if  (e.getSource() == fow) {
storeName = name.getText();
enter();

//JOptionPane.showMessageDialog(null, "hello " + storeName);
}


       }
    }

謝謝 :)

你們都擴展了JFrame並創建了自己的JFrame。 這意味着您有兩個JFrame實例。 一個是您的WizardGUI類,我猜是在您的主目錄中引用了,另一個是名為frame的局部變量。

在構造函數中,您正在frame實例中構建所有內容。 在Sscreen方法中,您正在修改this實例,因此您對frame實例所做的任何操作都不會被修改。

您應該擺脫局部變量frame並用this替換對它的所有引用。

另外,您應該在WizardGUI構造函數的第一行中調用super("Wizard") 調用父級構造函數很重要,每個人都忘記這樣做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM