JFrame.setBackground()不工作 – 为什么?
JFrame mainFrame = new JFrame(); mainFrame.setSize(100, 100); mainFrame.setBackground(Color.CYAN); mainFrame.setVisible(true);
我的目的是创建一个青色背景的窗口。 这有什么问题? 正如我所料,我的窗户没有青色!
此外,任何人都可以指出为什么我似乎有所有的颜色重复(有一个Color.CYAN和一个Color.cyan)。 这两者之间有什么不同吗? 也许在Java中有枚举之前,较旧的那个是常量,第二个来自Enum?
谢谢
为什么窗户不像预期的那样是青色的?
这里的问题是显示JFrame
内容的区域实际上是“内容窗格”,而不是JFrame
本身的内容。
因此,以下行:
mainFrame.setBackground(Color.CYAN);
正在更改JFrame
的颜色,但这实际上不是显示JFrame
时立即可见的部分。
通过将上面的行更改为以下内容,我们需要更改所谓的“内容窗格*”(请参阅如何使用根窗格进行说明)的颜色:
mainFrame.getContentPane().setBackground(Color.CYAN);
在Swing中使用Frames在开始时可能会非常不直观,因此我强烈建议您查看我在本答案底部列出的资源。
Color.CYAN
和Color.cyan
之间有区别吗?
不,两者之间没有区别 – 它们都是Color
类中的常量,它们是Color
对象本身。 唯一的区别在于常量的名称。
引入Color
类时引入了具有小写名称的常量(似乎是JDK 1.0,因为Color
类的Java API规范中没有“Since”表示法),并且稍后在JDK中添加了大写名称1.4。
可能添加了大写的命名常量,以使Color
类中的常量名称与Java编程语言的代码约定一致,在第9节:命名约定中声明常量应为全大写字母。
资源
有关如何使用框架的更多信息, Java教程中的以下资源将会引起关注:
-
如何制作框架 – 关于如何制作框架的一般信息。
-
如何使用根窗格 – 有关窗格的更具体信息,包括不同窗格如何相互关联的说明。
- 使用顶级容器
这应该工作:
JFrame mainFrame = new JFrame(); mainFrame.setSize(100, 100); mainFrame.getContentPane().setBackground(Color.CYAN); mainFrame.setVisible(true);
您想要设置JFrame内容窗格的颜色。
除了名称之外,上部和驼峰的颜色常数之间没有区别。
- Java BouncyCastle Cast6Engine(CAST-256)加密
- 无法使用超链接实现Struts 2令牌拦截器
- 从字符串到解析
- JPA:@PrimaryKeyJoinColumn(…)和@JoinColumn(…,insertable =?,updatable =?)相同?
- 在webapp中从java设置Oracle NLS_LANGUAGE
- 按钮和文本字段不会显示在Java中
- transformer.setOutputProperty(OutputKeys.ENCODING,“UTF-8”)不起作用
- 任何人都有运气在Java中写一个非常快的tiff查看器/编辑器吗?
- 更新maven项目模块中的父版本