java - switch 语句和返回值 - 如何使用 switch 来确定 JPanel 绘制

标签 java swing class jpanel switch-statement

我有一个程序,在不同的类中编写了不同的 JPanel。我想根据用户单击的按钮打印特定的 JPanel。

当程序启动时,它只有三个按钮:“Animals JButton”、“Plants JButton”和一个 JFrame“frame”中的“Refresh JButton”;没有 JPanel。

例如,如果用户单击“Animals JButton”,JFrame 上将打印带有 Animals 的 JPanel。

“AnimalsJPanel”和“PlantsJPanel”是在不同的类中编写的。另一个类“PageReturner”有一个方法可以确定通过开关打印的内容。

public class Redirect {

    String pageAnimals = "pageAnimals";
    String pagePlants = "pagePlants";

    String value;

    public String pageRedirect (String pageID) {
        switch (pageID) {
            case pageAnimals:
                value = (AnimalsJPanel animalsJPanel = new AnimalsJPanel());
            break;
            case pagePlants:
                value = (PlantsJPanel plantsJPanel = new PlantsJPanel());
                break;
            case 2:
                value = null;
                break;
        }
        return null;

    }

}

我在 netbeans 中收到“需要常量字符串表达式”和“不兼容类型”错误。我的 switch 语句可能有什么问题,是否有更好的方法来解决这个问题,即确定要打印的页面。 我想对此进行编码而不是使用卡片布局。我是 JAVA 的新手,正在尝试学习如何从类中获取对象。

我的 switch 语句做得好吗?我正在自学编程,没有人可以咨询。非常感谢任何建议

最佳答案

将在switch case中使用的变量声明为final。

   final String pageAnimals = "pageAnimals";
   final String pagePlants = "pagePlants";

因为所有 case 标签在 Switch 中都应该是编译时常量。

关于java - switch 语句和返回值 - 如何使用 switch 来确定 JPanel 绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18143048/

相关文章:

java - 将文件合并成一个新的大文件,直到用户id的数量达到1000万

java - 使用 SWIG 在重载的 C++ 方法中设置类型

java - 为什么jList中的selectedIndex比集合大小大?

C#:如何判断对象是自定义类还是 native 类型/.NET 类?

java - 在并发程序中从 BlockingQueue 获取对象的最佳方法?

java - Java 中的简短形式 toast

Java 图形绘制自定义圆形

java permgen 对于 Linux 上的 swing 应用程序内存不足,但在 Windows 上则不然

javascript - Mootools - 如何销毁类实例

c# - 2个C#类相互包含为成员