【问题标题】:Sending data to JFrame from another sub JFrame without opening a new JFrame从另一个子 JFrame 向 JFrame 发送数据而不打开新的 JFrame
【发布时间】:2020-03-05 12:35:55
【问题描述】:

我正在用 java swing 做一个巴士预订系统项目。我在将数据从一个传递到另一个时遇到问题。

看到我有一个框架,我可以在其中预订座位。通过点击选择按钮,数据将存储在文本字段中,并将作为选定席位发送到主框架。

主框架是

但我有一个问题,每当我点击 select 按钮时,旧框架没有打开。它打开了一个新框架。我怎么能解决这个问题。从打开新框架开始。

框架座位选择代码为

private void selectbuttonActionPerformed{
    String seats = seatstf.gettext();
    new Billing(seats).setVisible(true);
    this.dispose();
}

而主框架计费代码为

public Billing(String seats){
    initComponents();
    This.seatvar = seats;
    Seattf.setText(""+seatvar);
}

new Billing(seats).setVisible(true); 正在打开一个新的计费框架,而不是打开文本字段中需要数据的旧的计费框架。

如何解决?

【问题讨论】:

标签: java swing jframe


【解决方案1】:

使用new Billing,您可以创建一个框架实例,这当然会打开一个新框架。 将框架保存为实例变量并使用它。

public class SeatFrame extends JFrame {
    private Billing parent;

    public SeatFrame(Billing parent) {
        this.parent = parent;
        // TODO init Frame (add Components etc.)
    }

    ...

    private void selectbuttonActionPerformed(){
        String seats = seatstf.gettext();
        parent.setSeats(seats);
        parent.setVisible(true);
        this.dispose();
    }

    ...

}

Billing 类应如下所示:

...

public Billing(){
    initComponents();
}

public void setSeats(String seats){
    this.seatvar = seats;
    Seattf.setText(seatvar);
}

public void openSeatFrame(){
   new SeatFrame(this).setVisible(true);
   this.dispose();
}

....

【讨论】:

  • 没有。它不工作。一个带有所选座椅框架的新框架正在打开。
  • @hasanrafi 对不起,我的错误。创建座位选择框架时,会自动创建一个新的计费实例。我已经修改了我的代码,它现在应该可以工作了。
  • 我尝试使用您在评论中提供的新代码。我在座位选择框架中遇到问题,它被称为“selectbuttonActionPerforemd(evt)”错误。
  • @hasanrafi 你如何设置你的 ActionListener?试试这个实现selectButton.addActionListener(e -> selectbuttonActionPerformed());
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-15
  • 1970-01-01
  • 1970-01-01
  • 2011-06-22
  • 2013-02-16
  • 2023-03-29
相关资源
最近更新 更多