Как передать данные между 2 кадрами в netbeans? - PullRequest
0 голосов
/ 26 октября 2019

Я использую Netbeans 6.5.1 для создания приложения, которое включает в себя передачу данных между 2 кадрами. Я имею в виду, что пользователь будет вводить данные в первом кадре, а введенные данные должны быть перенесены во второй кадр, не делаявторой кадр виден. Второй кадр не будет виден изначально, и даже после получения данных из первого кадра он не должен становиться видимым, пока не будет нажата определенная кнопка (из другого кадра того же проекта). Я попытался перегрузить конструктор, но когда я вызываю метод в frame-1, я не могу просто сохранить данные (и отобразить их в jLabel). Я могу сделать это только с помощью метода setVisible () как ( new Frame2 (data_to_be_transferred) .setVisible (true); ). Этот метод выполняет работу , но делает второй кадр видимым с данными. Так как же передать данные между двумя кадрами, не делая второй кадр видимым?

Ответы [ 2 ]

0 голосов
/ 26 октября 2019

Пример:

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);
   }
 });
}

Извините, я запутался .. вы можете создать новый экземпляр JFrame в actionPerformed или как я это сделал в e -> , чтолямбда-выражение.

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);
 }
}

А затем подумал о ссылке на другое значение класса AnotherClass (кадр 2) для метки.

    button.addActionListener(e ->{
  data = textField.getText();
  if((data == null) || (data.equals(""))){
   return;
   }else {
AnotherClass anotherClass = new AnotherClass();
anotherClass.label.setText(data);
   }
 });
0 голосов
/ 26 октября 2019

Вы можете создать свой фрейм с данными Frame2 f2 = new Frame2 (data_to_be_transferred);а затем сделать его видимым только при необходимости через f2.setVisible (true);

ИЛИ

сохранить ваши данные для передачи и создавать frame2 позже, когда действительнонеобходимо и сделать его сразу видимым, как вы уже делаете новый Frame2 (data_to_be_transferred) .setVisible (true);

Cheers!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...