我正在创建带有三个标签的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);
我尝试按不同的顺序放置标签,但我发现它始终是最后写得奇怪的。
我将不胜感激。谢谢。
答案 0 :(得分:0)
有关使用绝对定位的指南,请参见here。
容器的布局管理器应设置为null。 (从显示的代码中看不到是否正在执行此操作。) setbounds方法用于容器中的所有组件。 (看起来您正在这样做。) 需要调用容器的重绘方法。
如果您进行任何调整大小,或者该组件不适合容器的范围,我不清楚会发生什么。
如果要进行布局,我可能会尝试在JavaFX中走一条简单的路线,其中使用了嵌套的HBox和VBox布局的组合。自从使用Swing已经有一段时间了,但是我怀疑您可以在嵌套的JPanels中使用一堆Box布局来做到这一点。
例如,每个标签和文本控件对将是其自己的具有垂直框布局的JPanel,而这三对将嵌套在具有水平框布局的JPanel中。 (流程也可能很好。)按钮行将位于其自己的JPanel中。我想你明白了。