控制 Mac 上 JButton 的外观

发布于 2024-12-17 03:58:06 字数 524 浏览 0 评论 0原文

对于我的作业,我需要 JFrame 中的网格 JPanel 中的 JButton 的二维数组。单击时 JButton 必须改变颜色。我无法让它们保持任何颜色。

我实现了 上一个线程,发现解决方法仅产生边框颜色:

JButton button = new JButton("test");
button.setBackground(Color.RED);
button.setOpaque(true);

取消边框绘制:

button.setBorderPainted(false);

只会导致整个 JFrame 变为红色。

此问题仅适用于 MAC 计算机,而不是分配的预期问题。

有什么想法吗?

For my assignment I need a 2 dimensional array of JButtons in a grid JPanel in a JFrame. The JButtons must change color when clicked. I cannot get them to hold any color.

I implemented the solutions proposed in a previous thread and found that the work around only produced border color:

JButton button = new JButton("test");
button.setBackground(Color.RED);
button.setOpaque(true);

unpainting the border:

button.setBorderPainted(false);

simply causes the entire JFrame to be red.

This issue is only with MAC computers and not the intended problem of the assignment.

Any thoughts?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

情痴 2024-12-24 03:58:06

请记住:Swing 工具包非常擅长使系统看起来“几乎正确”。但是,如果您确实需要系统感觉,还有其他更适合的选项,例如 SWT。

如果你想要一致性,那么 Swing 总是可以默认为老式小程序外观,虽然有点无聊,但非常可靠。这样做的好处是,当我们回滚到这个看起来更简单的 GUI 时工具包、平台特定的怪癖似乎神奇地消失了。

我认为您可能会发现您的问题很容易解决如果您只需将外观和感觉设置为标准挥杆风格的外观和感觉。

解决方案

我建议致电

    UIManager.setLookAndFeel(
        UIManager.getCrossPlatformLookAndFeelClassName());

In初始化应用程序的静态代码块。

Remember : The Swing toolkit is pretty good at getting the system look and feel "almost right". If you really need the system feel, however, there are other options like SWT that are a little better suited.

If you want consistency then Swing can always default to the old school applet look which, although a little boring, is pretty reliable . The upside of this is that, when we roll back to this more simplistic looking gui toolkit, platform specific quirks magically seem to disappear .

I think you might find your problem solved quite easily if you simply set the look and feel to the standard swing style look and feel.

The Solution

I would suggest a call to

    UIManager.setLookAndFeel(
        UIManager.getCrossPlatformLookAndFeelClassName());

In the static code block where you initialize your application.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文