gpt4 book ai didi

java - 框架可以访问另一个框架的按钮/组件吗?

转载 作者:行者123 更新时间:2023-11-29 05:45:59 25 4
gpt4 key购买 nike

我有两个框架,我想单击框架 2 中的按钮并禁用框架 1 中的按钮。这可能吗?该程序从 frame1 开始执行并打开 frame2。它来自这个 frame2,我想在 frame1 中禁用该按钮但是它不起作用.....如何完成?

附加信息:我在使用面板时也有类似的问题。我只是不明白。请帮忙!

这是程序开始执行的 frame1 的编码:

public class Frame1 extends javax.swing.JFrame {

Frame2 frm2 = new Frame2();

public Frame1() {
initComponents();
}

public void buttonDisable(){
Btn1.setEnabled(false);
}
private void Btn1ActionPerformed(java.awt.event.ActionEvent evt) {
frm2.setVisible(true);
}

public static void main(String args[]) {

java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new Frame1().setVisible(true);
}
});
}

public javax.swing.JButton Btn1;

}

这是 frame2 的编码,我想从中禁用该按钮:

public class Frame2 extends javax.swing.JFrame {

public Frame2() {
initComponents();
}

private void Btn2ActionPerformed(java.awt.event.ActionEvent evt) {
Frame1 frm1 = new Frame1();
frm1.buttonDisable();
}

public static void main(String args[]) {

java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new Frame2().setVisible(true);
}
});
}

public javax.swing.JButton Btn2;

}

最佳答案

这很简单,您的抽象也能正常工作。这是实现您想要的目标的基本方法:

class FrameTwo extends JFrame {
private FramOne firstFrame;

public FrameTwo(FrameOne firstFrame) {
this.firstFrame = firstFrame;
};

public void doSomething() {
System.out.println(this.firstFrame.someMethod());
};
};

基本上,我将 FrameOne 类的实例传递给 FrameTwo 构造函数。有几个选项可以实现这一点,使用静态成员,使用两个框架作为某个类的实例,使用 View 抽象等。你的问题是简单的 OOP,也许阅读更多相关内容。

此外,请注意,您可以将 import javax.swing.Frame 添加到文件的顶部,然后您只需键入 class FrameOne extends Frame 而不是 类 FrameOne 扩展了 javax.swing.Frame;

最重要

在同一个应用程序中使用多个框架是非常不常见的,强烈建议不要使用。我会考虑创建使用 JPanel 嵌套元素的 View ,然后您可以在同一框架内切换面板和对话框。

关于java - 框架可以访问另一个框架的按钮/组件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15842324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com