尝试使用构造函数更好地理解Swing和AWT,但现在我对构造函数有疑问。
根据布尔最大化是否为 true ,我想设置一个具有相同值的新公共布尔变量。事情是我可能需要多个JFrame但我不能创建相同的公共变量名称,如果为true。 如何使用基于动态字符串的名称实例化布尔值
public void setJframe(JFrame name, boolean maximize,) {
if (maximize == true){
name.setExtendedState(name.getExtendedState()|JFrame.MAXIMIZED_BOTH);
}
else {
name.setLocationRelativeTo(null);
}
}
额外澄清
在 if 部分中,如果它可以远程实现,就会发生类似情况。 括号用于表示整个变量名称,并在与字符串混合的反射内
public boolean (getField(name) + "Max") = maximize;
我知道编译器会以某种方式做某些事情,如果我放在这里并没有反映出来,那就不要活着。
答案 0 :(得分:1)
反思观点课程&字段定义,使您能够动态地实例化类(通过变量名称)。它不允许您动态定义字段或类。
正如Hovercraft所说,你可能想要一个参考。
使用变量可以引用所需的对象,然后设置现有的属性' /或在其上应用所需的行为。
例如:
public void setupJFrame (JFrame frame, boolean maximize) {
if (maximize) {
frame.setExtendedState( frame.getExtendedState()|JFrame.MAXIMIZED_BOTH);
} else {
frame.setLocationRelativeTo(null);
}
}
如果你需要知道' JFrame'它处于什么状态,您可以将其子类化以添加存储该属性的属性,或者(或许更好)只是制作一个“吸气剂”。或者静态的“吸气者”使用它的现有状态来回答这个问题的实用方法。
public static boolean isFrameMaximized (JFrame frame) {
if ((frame.getExtendedState() & JFrame.MAXIMIZED_BOTH) == JFrame.MAXIMIZED_BOTH)
return true;
return false;
}