gpt4 book ai didi

java - 将 JFrame 设置为只读

转载 作者:行者123 更新时间:2023-12-01 18:05:37 25 4
gpt4 key购买 nike

是否有任何方法可以将 JFrame 转换为只读,类似于 Collections.unmodifyingList()

我需要将它作为参数传递给许多类,但我不希望它们关闭窗口或执行除咨询之外的任何操作。另外,我需要一些可用的自定义方法(因为我正在扩展 JFrame)。

(我的意思不是禁用所有组件,我的意思是如果您有对该对象的引用,则无法在该对象上写入)。

最佳答案

不,没有办法做到这一点。正确的解决方案是根本不扩展 JFrame。一般来说,您永远不应该扩展组件类来完成您只需调用其公共(public)方法就可以完成的事情;像 JFrame 这样的类的常规使用并不构成一种新型的 JFrame,就像将不同的人放在大众汽车中不能将其视为一种新型汽车一样。

相反,您应该将 JFrame 包装在一个不扩展任何内容的类中,并将 JFrame 隐藏在其中。然后你可以只暴露你想要暴露的方法:

public class MyAppWindow {
private final JFrame frame;

private final JComponent frameContents;

public MyAppWindow() {
this.frame = new JFrame("My App");
this.frameContents = new JPanel();
// Set up frameContents here...
}

public void show() {
frame.setVisible(true);
}

public void hide() {
frame.setVisible(false);
}

public void addField(Component field,
String labelText) {

JLabel label = new JLabel(labelText);
label.setLabelFor(field);

// Create layout constraints for label here...

frameContents.add(label, constraints);

// Create layout constraints for field here...

frameContents.add(field, constraints);
}
}

从技术上讲,没有 extends 子句的类将从 Object 继承。

关于java - 将 JFrame 设置为只读,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36679602/

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