- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用枚举中声明的WIDTH和HEIGHT来设置框架的大小
setSize(dimension.getValue(), dimension.getValue());
但是当我进行测试时,我在输出中收到的不是枚举值,而是枚举基数顺序(在本例中为 {1,2})。我必须如何更改代码才能返回正确的值?
public enum Dimension {
WIDTH(700), HEIGHT(400);
private final int value;
private Dimension(int value) {
this.value = value;
}
public int getValue(){
return value;
}
}
public class MainFrame extends JFrame {
private Dimension dimension;
public static void main(String[] args) {
final MainFrame mainFrame = new MainFrame();
mainFrame.setVisible(true);
}
public MainFrame() {
initGameFrame();
}
private void initGameFrame() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(dimension.getValue(), dimension.getValue());
add(gamePanel);
setResizable(false);
setUndecorated(true);
pack();
setLocationRelativeTo(null);
}
}
最佳答案
您的问题标题是:
getting values from enum fields
但这就是您的问题:您没有从枚举字段获取值。您应该使用:
Dimension.WIDTH.getValue()
Dimension.HEIGHT.getValue()
不是,
Dimension.getValue()
这具有完全不同的含义。
<小时/>顺便说一句,就我自己而言,我会避免在任何地方调用 setSize(...)
,而是会使用组件的首选大小。如果需要精确指定或通过公式指定,那么我会重写其 getPreferredSize()
方法。
另一方面,我会避免提供与核心 Java 类名称冲突的类、接口(interface)或枚举名称。例如,我会将 Dimension 重命名为 GuiDimension 或类似名称。
<小时/>编辑
请注意,使用此枚举:
public enum Fubar {
FOO, BAR
}
Fubar.FOO 和 Fubar.BAR 不是“静态字段”。它们是枚举 Fubar 的常量实例。我认为您可能对这个概念感到困惑。
<小时/>编辑2
您声明:
well, i have to explain much better my problem, you don't understand... I know that being enum HEIGHT and WIDTH are not static members, but if you put them in any class and you want these two fields are used by other classes, will surely have to be initialized private static int height = 400 .... to prevent this I adopted the enum.
The problem of my question was that i couldnt get access to the values of these enum
这又令人困惑。可以按照上述方式获取值:Dimension.WIDTH.getValue()
和 Dimension.HEIGHT.getValue()
。您的问题表明您认为必须传入实例变量并且不能直接使用枚举,这就引出了为什么的问题。
关于java - 从枚举字段获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22425712/
我是一名优秀的程序员,十分优秀!