【问题标题】:Extending variable scope from one frame to another frame将变量范围从一帧扩展到另一帧
【发布时间】:2020-02-10 07:56:29
【问题描述】:

我有两个基于JFrame 的窗口:SeatLayoutBillSummary。我需要从SeatLayout 帧中获取seatnumber 并将其显示在BillSummary 中,但变量范围仅限于第一帧。

我该怎么做?

【问题讨论】:

  • SeatLayout一个返回座位号的public int getSeatNumber()方法;然后给BillSummary 一个对SeatLayout 的引用,然后它可以使用它来调用SeatLayout 上的getSeatNumber() 方法。

标签: java swing scope jframe


【解决方案1】:

使用多个 JFrame 是一种不好的做法,应该避免。 原因是,它将来会增加更多的问题,维护起来将是一场噩梦。

要回答您的问题,如何将变量从您的父级(JFrame)传递给一个子级(JDialog)。这可以通过使用 JDialog 来实现。

我将通过一个例子来运行。 可以说,您的 BillSummary.java 是 ....

//BillSummary Class
public class billSummary {
   JFrame frame;
   billSummary(JFrame frame) {
    this.frame = frame;
}

  public void launchbillSummary(int seatNumber) {
    // Create a dialog that suits your ui , you can use JPanel as your layout container
    JDialog dialog = new JDialog(frame, "Bill Summary", true);
    dialog.setLayout(new BorderLayout());
    dialog.setSize(100, 100);
    dialog.add(new JLabel(Integer.toString(seatNumber)), BorderLayout.CENTER);
    dialog.setVisible(true);
  }

}

你的座位布局.java

public class seatLayout {

 seatLayout(){  
    //Lets say you have seleted seat number 10
    int defaultSeatNumber = 10;

    //Lets say you have a button and when it is clicked , you pass the data to billsummary page
    JButton enter = new JButton("Enter");

    //Your seatLayout GUI
    JFrame frame = new JFrame("seat layout");
    frame.setSize(300,300);
    frame.add(enter);

    enter.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent arg0) {
            //Do your passing of data/ price of calculation here
            //You pass the data that to your custom dialog -> Bill summary 
            new billSummary(frame).launchbillSummary(defaultSeatNumber);
        }
    });
    frame.setVisible(true);
}


public static void main(String[] args){
    SwingUtilities.invokeLater(new Runnable() {
        @Override
        public void run() {
            new seatLayout();
        }
    });
  }
}

我希望这有助于并回答您的问题。祝你好运:)

【讨论】:

    猜你喜欢
    • 2015-10-02
    • 2017-01-19
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 2011-10-22
    • 1970-01-01
    相关资源
    最近更新 更多