JAVA:为什么我在同一垂直位置(不同的水平位置)不能有两个以上的JLabel?

问题描述 投票:-1回答:1

我正在创建一个带有三个标签的GUI。我在每个标签上使用了setBounds方法,前两个标签位于我在参数中传递的x和y位置。但是,第三个标签只是坐在左边。

这是我的代码:

principleLabel = new JLabel(); 
principleLabel.setText("Principle");
principleLabel.setBounds(101, 10, 100, 50);
frame.getContentPane().add(principleLabel); 

rateLabel = new JLabel(); 
rateLabel.setText("Rate (Percentage)");
rateLabel.setBounds(295, 10, 150, 50);
frame.getContentPane().add(rateLabel); 

yearsLabel = new JLabel(); 
yearsLabel.setText("Years");
yearsLabel.setBounds(555, 10, 50, 50);
frame.getContentPane().add(yearsLabel); 

我尝试将标签放在不同的顺序中,我看到它始终是最后写的表现奇怪的。

My GUI

我将不胜感激任何帮助。谢谢。

java user-interface jlabel
1个回答
0
投票

可以找到使用绝对定位的指南here

容器的布局管理器应设置为null。 (无法从显示的代码中看到您是否这样做。)setbounds方法用于容器中的所有组件。 (看起来你正在这样做。)需要调用容器的重绘方法。

如果您进行任何调整大小,或者组件不适合容器的范围,我不清楚究竟会发生什么。

如果我正在铺设东西,我可能会尝试在JavaFX中使用简单的路径,其中一个使用嵌套的HBox和VBox布局的组合。使用Swing已经有一段时间了,但我怀疑你可以在嵌套的JPanels中使用一堆Box布局来做到这一点。

例如,每个标签和文本控件对都是其自己的JPanel,具有垂直框布局,并且这三对将嵌套在具有水平框布局的JPanel中。 (流程可能也很好。)按钮行将在其自己的JPanel中。我想你应该已经明白了。

© www.soinside.com 2019 - 2024. All rights reserved.