问题标签 [awt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1495 浏览

java - Swing 组件如何在内部创建、布局、重新绘制、事件通知……?

我想知道是否有关于Swing 组件生命周期的好的文档(或(可查看的)电子书)。

无论如何,“生命周期”是正确的术语吗?

我希望找到以下问题的答案:

  • 如何,何时,以何种顺序调用绘画方法
  • 如何,何时,由谁调用哪些事件?
  • 创建组件的方法调用的确切顺序是什么?

我不时遇到我的应用程序的奇怪行为,例如:

  • ComponentListener 的resize 事件在setVisible(true)之前调用
    (因此根窗格具有负尺寸!)
  • 某些组件只有在手动调整 JFrame 大小后才能正确布局
  • 将超类从 JPanel 更改为 JLayeredPane 会导致我的类在另一个容器中的布局不同。
  • 还有很多其他奇怪的事情......
0 投票
1 回答
3282 浏览

java - JLabel 的 setBorder 方法导致绘制问题

我有一个扩展 JLabel 的自定义类。对于该类的特定实例,我想在左侧的文本中添加一些间距。我需要间距,因为我正在设置这个 JLabel 的背景,我不希望文本在彩色背景的边缘附近出现。我摸索了很多并实现了这个(在paint函数中):

这似乎有效,因为它增加了我想要的间距,但是它有一个不幸的副作用,因为它似乎破坏了整个应用程序其余部分的重绘......似乎只有那个特定的组件正在重绘,而不是应用程序的其余部分。我最终将其具体追踪到 setBorder 调用...设置任何类型的边框似乎都会导致相同的损坏行为。我们有两个不同版本的应用程序,一个在 Java 1.5 中运行,一个在 Java 1.6 中运行,Java 1.6 版本似乎可以正常工作,而 Java 1.5 版本则不能。无法将旧版本升级到 Java 1.6...我需要可以在 Java 1.5 中使用的东西。另外,我试过这个(只是想看看它是什么样子):

这似乎也以完全相同的方式破坏了重新绘制。我查看了我们应用程序的源代码,发现了我们设置边框的其他地方(包括空边框),但在 JLabels 上找不到任何地方(只有面板、按钮等)。有人以前见过这样的东西吗?知道如何解决吗?或者也许是另一种获得我需要的间距的方法可以解决这个错误?谢谢。

0 投票
1 回答
2102 浏览

java - java.awt.Frame.setBackground() 在 OS X 中不起作用

我正在尝试消除 OS X 中我的 java 小程序中的一些 UI 渲染错误,但我遇到了一个我无法弄清楚的错误。

我们打开的所有扩展 java.awt.Frame 的窗口似乎都忽略了 setBackground() 调用,而是使用 OS X 默认值(拉丝金属或灰色渐变,具体取决于 OS 版本)。我们打开的任何扩展 Dialog 的东西都可以正常工作。

我尝试覆盖 paint() 方法并在那里绘制背景颜色。但是,这仅部分有效。在某些地方背景确实是正确的颜色,但 Frame 的所有子组件仍然使用 OS X 背景绘制,而不是我设置的背景,所以现在看起来更糟。这些相同的组件类型(面板、复选框等)在几个对话框扩展窗口中使用,它们在那里工作得很好,所以我猜框架一定有什么东西把事情搞砸了。

有没有办法为在 OS X 中工作的框架设置背景颜色?有没有其他人以前见过这个?

请注意,我被困在 Java 1.1 规范的编码中,因为我需要支持 Microsoft JVM(不要让我开始......)。

0 投票
2 回答
7892 浏览

java - 如何从 java 中的图像中获取光栅?

我正在尝试将 gif 图像从 url 加载到 java.util.image.Raster 中,以便我可以操作它。我能找到的加载和解压缩图像的唯一方法是 Toolkit.getImage,它返回一个 java.awt.Image。我需要把它变成一个光栅,这样我就可以使用它了。建议?

0 投票
3 回答
3162 浏览

java - Swing:如何制作带有软边框的非矩形窗口?

如何在 Java 中制作带有软边框的非矩形窗口?
软边框(也称为软剪裁)是没有锯齿伪影的边框。

我在网上搜索了很多,发现了几篇关于半透明和/或非矩形窗口的帖子。

“软边界”这个话题令人困惑。我发现的信息似乎涉及将软边框应用于另一个 Java 组件内的组件。

但是,我可以或不可以将软边框应用于仅放置在桌面上的自定义形状的 JWindow 吗?

我主要指的是以下帖子:
http ://today.java.net/pub/a/today/2008/03/18/translucent-and-shape-swing-windows.html

说到软剪辑,文章转发到
http://weblogs.java.net/blog/campbell/archive/2006/07/java_2d_tricker.html
但是这里描述的是对现有Graphics2D对象的软剪辑。

0 投票
2 回答
744 浏览

java - 当对话框为模态时,为什么单选按钮在 Mac 上的 java.awt.Dialog 中呈现不正确?

我正在 Mac 上测试我的 Java 应用程序,但遇到了一个非常奇怪的问题。出现在模态对话框中的复选框呈现不正确,但非模态对话框工作正常。

例如,假设我有一个带有 2 个单选按钮的窗口。当对话框打开时,第一个被选中。当我单击第二个按钮时,突然看起来两者都被选中了。单击对话框中的其他任何位置都会导致渲染自行修复,并且只会显示选定的按钮。

以下代码为我重现了这一点:

如果我这样称呼它:

java -cp MacTest.jar mactest.Main false

对话框不是模态的,一切正常。但是,如果我告诉它是模态的:

java -cp MacTest.jar mactest.Main true

然后出现渲染问题。

我已经尝试了我能想到的所有技巧来尝试解决问题(无效、doLayout、请求焦点、在选择一个按钮时显式设置每个按钮的状态等)。但到目前为止,我唯一要做的就是完成这项工作是使对话框不是模态的。不幸的是,这不是我的应用程序中的一个选项。

万一这很重要,这是在运行 Java 1.5.0_16 的运行 OS X 10.5 的 MacBook 上。

0 投票
3 回答
1043 浏览

java - 如何识别Java中的按键事件

我在机器人对象上使用键盘事件....

但每次我必须单独指定键....就像

是否有任何技术可以获取/识别每个键......而不是通过单独指定它们......?我在keyCode变量中从服务器端接收键码......所以我可以直接使用这个变量代替“KeyEvent.VK_D”,如r.keyPress(keyCode);

0 投票
15 回答
463957 浏览

java - 为 JFrame 设置背景颜色

您如何设置 JFrame 的背景颜色?

0 投票
3 回答
425 浏览

java - 如何使用 AWT 硬件光标使用两种以上的颜色?

我想为我正在制作的电脑游戏使用硬件光标,AWT 允许我这样做,并指定要使用的图像,但是它只接受 2 种颜色和透明度,这是相当有限的。

我相当肯定在大多数当前系统上可以使用更大的颜色深度,有没有办法在 AWT 中实现这一点?其他方式呢?

0 投票
5 回答
2760 浏览

java - 在 LineBreakMeasurer 中处理 \n

有数千篇文章如何使用 LineBreakMeasurer 绘制多行文本,但没有关于绘制多行文本的文章也考虑到 \n(当你想在文本中的特定位置强制换行时,而不仅仅是当右 - 或左 - 边距结束)。

秘密似乎在于 BreakIterator,但我找不到处理 \n 的实现。