有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在netbeans中的两个帧之间传输数据?

我正在使用Netbeans 6.5.1创建一个涉及在两个帧之间传输数据的应用程序,我的意思是用户将在第一个帧中输入数据,并且输入的数据必须传输到第二个帧,而不使第二个帧可见。第二帧最初将不可见,即使在从第一帧获取数据后,在按下某个按钮(来自同一项目的不同帧)之前,第二帧也不得可见。我尝试重载构造函数,但在第1帧中调用该方法时,我无法仅存储数据(并在jLabel中显示数据)。我只能使用setVisible()方法作为(newFrame2(数据要传输))来实现这一点。setVisible(真))。此方法执行任务,但它使第二帧与数据可见。那么,如何在两帧之间传输数据而不使第二帧可见


共 (2) 个答案

  1. # 1 楼答案

    你可以用数据创建你的框架(数据被传输);然后通过f2使其仅在需要时可见。setVisible(真)

    或者

    保留要传输的数据,仅在以后确实需要时创建frame2,并使其立即可见,就像您已经在执行的新frame2(数据要传输)一样。setVisible(真)

    干杯

  2. # 2 楼答案

    例如:

    public class SomeClass extends JFrame {
     JPanel panel;
     JTextField textField;
     JButton button;
     JLabel label;
     String data;
     SomeClass() {
      panel = new JPanel();
      textField = new JTextField(16);
      button = new JButton("Magic");
      label = new JLabel();
      panel.add(button);
      panel.add(textField);
      setContentPane(panel);
      setSize(400,100);
      setVisible(true);
     }
    public static void main(String[] args) {
      new SomeClass();
     }
    button.addActionListener(e ->{
      data = textField.getText();
      if((data == null) || (data.equals(""))){
       return;
       }else {
       this.remove(panel)
       JPanel panel2 = new JPanel();
       label = new JLabel();
       panel.add(label);
       this.setContentPane(panel2);
       label.setText(data);
       }
     });
    }
    

    对不起,我搞糊涂了。。您可以在actionPerformed中创建新的JFrame实例,或者像我在e->这是lambda表达式

    public class AnotherClass extends JFrame {
     JPanel panel;
     JLabel label;
     AnotherClass() {
      panel = new JPanel();
      label = new JLabel();
      panel.add(label);
      setContentPane(panel);
      setSize(400,100);
      setVisible(true);
     }
    }
    

    然后考虑另一个类(第2帧)的引用为标签设置值

        button.addActionListener(e ->{
      data = textField.getText();
      if((data == null) || (data.equals(""))){
       return;
       }else {
    AnotherClass anotherClass = new AnotherClass();
    anotherClass.label.setText(data);
       }
     });