Java 教程是针对 JDK 8 编写的。本页面中描述的示例和实践不利用后续版本中引入的改进,并可能使用不再可用的技术。
有关 Java SE 9 及后续版本中更新的语言特性的摘要,请参阅 Java 语言更改。
有关所有 JDK 发布的新功能、增强功能以及已移除或弃用选项的信息,请参阅 JDK 发布说明。
本节讨论使用组件时可能遇到的问题。如果在本节中找不到您的问题,请参考以下各节:
问题:我在实现模型(或与 Java SE 平台标准版中的某个代码相似的其他代码)时遇到了问题。
问题:每当文本字段中的文本更新时,文本字段的大小会发生变化。
JTextField
构造函数的 int
参数或 setColumns
方法来实现。问题:当重新绘制时,内容窗格的某些区域看起来很奇怪。
setOpaque(true)
来实现。请注意,虽然在大多数外观中,JPanel
是不透明的,但在 GTK+ 外观中不是这样的。有关详细信息,请参阅 将组件添加到内容窗格。问题:我的程序表现出奇怪的症状,有时似乎与时间有关。
问题:我的模态对话框在其他窗口后面消失。
问题:滚动条策略似乎不按预期工作。
VERTICAL_SCROLLBAR_AS_NEEDED
和 HORIZONTAL_SCROLLBAR_AS_NEEDED
策略的实现中存在错误。如果对您的项目可行,请使用最新版本的 Swing。revalidate
。问题:我的滚动窗格没有滚动条。
VERTICAL_SCROLLBAR_ALWAYS
或 HORIZONTAL_SCROLLBAR_ALWAYS
。getPreferredScrollableViewportSize
方法返回该值。有关详细信息,请参阅 调整滚动窗格大小。问题:我的分割窗格的分隔条不会移动!
问题:JSplitPane
的 setDividerLocation
方法不起作用。
setDividerLocation(double)
方法没有效果。您可以使用 setDividerLocation(int)
或指定分割窗格所包含的组件和分割窗格的调整权重的首选大小来解决此问题。有关详细信息,请参阅 定位分隔条并限制其范围。问题:我的工具栏中的按钮太大。
button.setMargin(new Insets(0,0,0,0));
问题:分层窗格中的组件层级不正确。实际上,层级似乎被颠倒 - 深度越低组件越高。
int
而不是 Integer
,则可能会发生此问题。要查看发生的情况,请在 LayeredPaneDemo
类中将layeredPane.add(label, new Integer(i));
layeredPane.add(label, i);
。问题:colorChooser
的方法调用 colorChooser.setPreviewPanel(null)
无法如预期般移除颜色选择器的预览面板。
null
参数指定默认预览面板。要删除预览面板,请指定一个没有大小的标准面板,例如:colorChooser.setPreviewPanel(new JPanel());