如何从字符串实例化带有名称的变量



试图通过构造函数更好地理解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;
}

相关内容

  • 没有找到相关文章

最新更新