试图通过构造函数更好地理解Swing和AWT,但是现在我有一个关于构造函数的问题。
基于布尔值最大化是否为true我想设置一个具有相同值的新公共布尔变量。问题是,我可能需要多个jframe,但如果为真,我不能创建相同的公共变量名。如何实例化一个基于动态字符串
的布尔值public void setJframe(JFrame name, boolean maximize,) {
if (maximize == true){
name.setExtendedState(name.getExtendedState()|JFrame.MAXIMIZED_BOTH);
}
else {
name.setLocationRelativeTo(null);
}
}
额外说明
在if部分中,它将类似于if 's remote possible。括号表示整个变量名,并且在与字符串
混合的反射中。public boolean (getField(name) + "Max") = maximize;
我知道编译器做事有一定的方式,如果我在这里写的东西没有反映出来,就不会把我活活吃掉。
反射视图class &字段定义,并使您能够动态实例化类(通过变量名称)。它不允许您动态定义字段或类。
正如气垫船所说,你可能需要一个参考。
使用变量可以让你引用你想要的对象,然后设置现有的"属性"/或在其上应用你想要的行为。
例如:public void setupJFrame (JFrame frame, boolean maximize) {
if (maximize) {
frame.setExtendedState( frame.getExtendedState()|JFrame.MAXIMIZED_BOTH);
} else {
frame.setLocationRelativeTo(null);
}
}
如果你需要知道'JFrame'的状态,你可以创建它的子类来添加一个属性来存储它,或者(也许更好)创建一个'getter'或静态'getter'实用方法来使用它的现有状态来回答这个问题。
public static boolean isFrameMaximized (JFrame frame) {
if ((frame.getExtendedState() & JFrame.MAXIMIZED_BOTH) == JFrame.MAXIMIZED_BOTH)
return true;
return false;
}