В моем проекте есть один экземпляр jframe1 и два экземпляра jframe2. Затем я хочу обновить компонент jframe1txt2 первого экземпляра jframe2. Но когда я вызываю метод perfomaction(), он должен был обновить второй экземпляр jframe2.
public class Jframe1 extends Jframe {
public jframe1() {
Performedaction() {
jframe2.txt2.setText("do it");
}
}
public class jframe2 extends Jframe {
public static JtextFiedl txt2;
public jframe2() {
}
как идентифицировать экземпляр ведьмы JFrame 2 первым или вторым, если вызвать выполняемое действие два раза
Сохраните ссылку на оба
1) Для более быстрой помощи опубликуйте минимальный воспроизводимый пример или Краткий, автономный, правильный пример. Нет какой-то код, который вы быстро набрали, это «что-то вроде» проблема, но код, который имеет правильно написанные заглавные буквы имена классов и будет компилироваться как скопированный. 2) Используйте логичную и последовательную форму отступов строк и блоков кода. Отступы предназначены для облегчения выполнения кода! 3) См. Использование нескольких JFrames, хорошая / плохая практика? 4) Не расширяйте компоненты / окна, если вы можете использовать стандартный экземпляр.




Вот пример .. В примере используются два окна JFrame, и при нажатии кнопки в одном кадре обновляется второе окно JLabel. В примере используется JLabel вместо JTextField.
Механизм использует интерфейс java.util.Observer и класс Observable для обновления из одного окна в другое.
Код примера:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class TwoFramesExample {
public static void main(String [] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new TwoFramesExample().start();
}
});
}
private void start() {
Frame1 f1 = new Frame1();
new Frame2(f1);
}
}
class Frame1 implements Observer {
private JLabel label;
@Override // Observer interface's implemented method
public void update(Observable o, Object data) {
label.setText((String) data); // displays new text in JLabel
}
Frame1() {
JFrame f1 = new JFrame("Frame-1");
f1.getRootPane().setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
label = new JLabel("Click button in frame-2...");
label.setFont(new Font("Dialog", Font.PLAIN, 20));
f1.add(label);
f1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f1.setSize(350, 150);
f1.setLocation(200, 200);
f1.setVisible(true);
}
}
class Frame2 {
private int clicks;
Frame2(Frame1 f1) {
// Create Observable and add Observer
final MessageObservable observable = new MessageObservable();
observable.addObserver(f1);
// Display frame
JFrame f2 = new JFrame("Frame-2");
JButton button = new JButton("Press me");
button.setFont(new Font("Dialog", Font.PLAIN, 20));
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String data = "button clicks in frame-2: [" + ++clicks + "]";
observable.changeData(data);
}
});
f2.add(button);
f2.setSize(250, 150);
f2.setLocation(600, 200);
f2.setVisible(true);
}
}
class MessageObservable extends Observable {
MessageObservable() {
super();
}
void changeData(Object data) {
// the two methods of Observable class
setChanged();
notifyObservers(data);
}
}
staticвам не друг. Каждый экземплярjframe2должен иметь собственный экземплярtxt2, а не общий экземпляр.