Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在不打开新JFrame的情况下,从另一个子JFrame向JFrame发送数据_Java_Swing_Jframe - Fatal编程技术网

Java 在不打开新JFrame的情况下,从另一个子JFrame向JFrame发送数据

Java 在不打开新JFrame的情况下,从另一个子JFrame向JFrame发送数据,java,swing,jframe,Java,Swing,Jframe,我正在用JavaSwing做一个公交车预订系统的项目。在这里,我有一个从一个到另一个传递数据的问题 public Billing(String seats){ initComponents(); This.seatvar = seats; Seattf.setText(""+seatvar); } 看,我有一个框架,在那里我可以预定座位。单击选择按钮,数据将存储在文本字段中,并作为所选座椅发送到主机架 public Billing(String seats){

我正在用JavaSwing做一个公交车预订系统的项目。在这里,我有一个从一个到另一个传递数据的问题

public Billing(String seats){
    initComponents();
    This.seatvar = seats;
    Seattf.setText(""+seatvar);
}
看,我有一个框架,在那里我可以预定座位。单击选择按钮,数据将存储在文本字段中,并作为所选座椅发送到主机架

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

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

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

public Billing(String seats){
    initComponents();
    This.seatvar = seats;
    Seattf.setText(""+seatvar);
}
但我有一个问题,每当我点击选择按钮时,旧框架就无法打开。它会打开一个新的框架。我怎么能解决这个问题。从打开新的框架

public Billing(String seats){
    initComponents();
    This.seatvar = seats;
    Seattf.setText(""+seatvar);
}
车架座椅选择代码为

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);
}
主框架计费代码为

public Billing(String seats){
    initComponents();
    This.seatvar = seats;
    Seattf.setText(""+seatvar);
}
其中
新账单(座位)。设置可见(true)
正在打开一个新的计费框架,而不打开文本字段中需要数据的旧框架

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

怎么解决呢?

使用
new Billing
创建一个框架实例,当然会打开一个新框架。
public Billing(String seats){
    initComponents();
    This.seatvar = seats;
    Seattf.setText(""+seatvar);
}
将框架另存为实例变量并使用它

public Billing(String seats){
    initComponents();
    This.seatvar = seats;
    Seattf.setText(""+seatvar);
}
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();
    }

    ...

}
计费类应如下所示:

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

public Billing(){
    initComponents();
}

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

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

....

“从另一个子JFrame向JFrame发送数据”该“子JFrame”应该是(模式)
JDialog
。看不,它不起作用了。“正在使用选定的座椅框架打开一个新框架。@hasanrafi抱歉,我的错误。”。当创建座椅选择框架时,将自动创建一个新的计费实例。我已经修改了我的代码,现在应该可以工作了。我尝试了你在评论中提供的新代码。我在座椅选择框中遇到一个问题,它被称为“SelectButtonActionPerformed(evt)”错误。@hasanrafi如何设置ActionListener?尝试此实现
selectButton.addActionListener(e->selectbuttonActionPerformed())