gpt4 book ai didi

java - swing 避免重写 jframe 选项

转载 作者:行者123 更新时间:2023-12-02 05:07:21 25 4
gpt4 key购买 nike

嗯,我的程序中有很多 JFrame,我不想一直编写 setSize()、setRessized()、setVisible 等代码

那么我怎样才能避免这样做,我无法扩展,因为我已经扩展了 Jframe 我该怎么做?

提前致谢...

最佳答案

一般来说,不鼓励扩展像 JFrame 这样的通用类,部分原因是您没有向框架添加任何附加功能(您只是配置它),您可以还将自己锁定在给定的实现中,从而降低组件的可重用性,

你可以...

使用“工厂”模式生成一个实用程序类来为您完成工作......

public class FrameFactory {
public static JFrame createFrameWithTitle(String title) {
JFrame frame = new JFrame(title);
return frame;
}

public static JFrame createNonResizableFrameWithTitle(String title) {
JFrame frame = createFrameWithTtitle(title);
frame.setResizable(false);
return frame;
}
//...
}

你可以...

使用“构建器”模式...

public class FrameBuilder {

private String title;
private int closeOperation;
private boolean resizable;

public FrameBuilder() {
closeOperation = JFrame.DISPOSE_ON_CLOSE;
resizable = false;
}

public FrameBuilder setTitle(String title) {
this.title = title;
return this;
}

public FrameBuilder setDefaultCloseOperation(int op) {
this.closeOperation = op;
return this;
}

public FrameBuilder setResizable(boolean resizable) {
this.resizable = resizable;
return this;
}

public String getTitle() {
return title;
}

public boolean isResizable() {
return resizable;
}

public int getCloseOperation() {
return closeOperation;
}

public JFrame build() {
JFrame frame = new JFrame(getTitle());
frame.setResizable(isResizable());
frame.setDefaultCloseOperation(getCloseOperation());
return frame;
}

}

这将允许您定义一系列“通用”属性,这些属性可以通过一个或多个链接方法进行修改以提供一定程度的自定义...

JFrame frame = new FrameBuilder().
setTitle("Test").
setResizable(true).
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE).
build();

关于java - swing 避免重写 jframe 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27661233/

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