我正在努力控制我的组件。我有一个包含JPanel的JFrame。我的组件如JLabel和JTextArea被添加到此Panel中。所以我的问题是:
如何控制这些组件?我尝试过使用
GridBagConstraints constraints = new GridBagConstraints();
constraints.gridx = 1;
但它似乎不起作用..
这是我的函数初始化我的GUI:
public void initGUI()
{
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
final JFrame frame = new JFrame("instantINFO!");
frame.setSize(screenSize.width, screenSize.height);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new GridBagLayout());
final JPanel panel = new JPanel();
weather = new JTextArea(vær, 6, 20);
weather.setFont(new Font("Arial", Font.BOLD, 16));
weather.setLineWrap(true);
weather.setWrapStyleWord(true);
weather.setOpaque(false);
weather.setEditable(false);
stedLabel = new JLabel(sted);
dagLabel = new JLabel(dag);
panel.add(weather);
panel.add(stedLabel);
panel.add(dagLabel);
frame.add(panel);
frame.setVisible(true);
}
例如,我希望天气标签位于左上角,边距为几个像素。
答案 0 :(得分:4)
默认情况下,JPanel使用FlowLayout。默认情况下,组件在面板上的一行中居中。如果您希望组件保持对齐,则需要更改流布局以使组件对齐。阅读FlowLayout API以了解如何执行此操作。
我还建议您查看Using Layout Managers上的Swing教程以获取工作示例。
答案 1 :(得分:2)
您应该学习Layout Managers来控制您的组件布局
例如,我希望天气标签位于左上角, 带有几个像素的边距。
要按像素控制组件位置,可以使用setLocation()方法,但是您应该设置绝对布局或者只需将组件布局设置为null,这将支持x,y位置控制
像一样的代码aPanel.setLayout(null);
...
aButton.setLocation(10,3);
aPanel.add(aButton);
我喜欢绝对位置控制的例子,所以我想分享它example观看它以观察概念
祝你好运:)答案 2 :(得分:1)
正如其他提到的答案,你应该学习布局管理员。您可以使用java IDE GUI设计器为您完成此工作。您可以使用netbeans has a Swing GUI builder通过拖放来构建组件。
最新的eclipse Indigo版本现在提供了一个不错的WindowBuilder工具。