我是Java GUI编程的新手,对BoxLayout
有一个奇怪的问题:我有一个JLabel
和Icon
。标签上添加了两个JButtons
。CCD_ 5从CCD_ 8被放置在CCD_ 7的CCD_。现在我希望这两个JButtons
总是在JLabel
的中心,即使当我调整JFrame
的大小时也是如此。对于setAlignmentX()
,J按钮在水平方向居中,但对于垂直方向,setAlignmentY()
没有解决方案。
这是代码:
package footballQuestioner;
import java.awt.BorderLayout;
import javax.swing.BoxLayout;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class Houdini {
public static void main(String[] args) {
JFrame frame = new House();
}
}
class House extends JFrame {
private JLabel label = new JLabel(
new ImageIcon(
"C:\Users\laudatio\Documents\Java\MyProject\src\footballQuestioner\footballfield.jpg")
);
private JButton one=new JButton("one");
private JButton two=new JButton("two");
public House() {
label.setLayout(new BoxLayout(label, BoxLayout.Y_AXIS));
label.add(one);
label.add(two);
one.setAlignmentX(CENTER_ALIGNMENT);
one.setAlignmentY(CENTER_ALIGNMENT);
two.setAlignmentX(CENTER_ALIGNMENT);
two.setAlignmentY(CENTER_ALIGNMENT);
setLayout(new BorderLayout());
setLocation(300, 500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(true);
add(label,BorderLayout.CENTER);
pack();
setVisible(true);
}
}
请帮忙!:-(((
但是对于垂直方向没有setAlignmentY()的解决方案。
在两个组件前后使用"胶水"。有关更多信息和示例,请参阅Swing教程中关于如何使用长方体布局的部分。
尽管MadProgrammers评论使用GridBagLayout
是一个更容易的解决方案,但了解"胶水"one_answers"支柱"可能有助于自定义BoxLayout
的布局。