Java 实现与图片相似的gui?
我的计划是得到一个类似的输出,但出于某种原因,我只得到南面板 我的逻辑是要有一个主面板,北-中-南Java 实现与图片相似的gui?,java,swing,user-interface,awt,Java,Swing,User Interface,Awt,我的计划是得到一个类似的输出,但出于某种原因,我只得到南面板 我的逻辑是要有一个主面板,北-中-南 在北部,我将放置Jlabel和Textfield,并将其向右对齐 在中心我会让它空着 在南部,我将在第一行中添加一个BoxLayout y轴,另一个面板具有居中的BoxLayout 另一个BoxLayour在South BoxLayour行的第二行中,我将添加另一个BoxLayout并将其向左对齐 这是我的密码: public static void main(String args[])
- 在北部,我将放置Jlabel和Textfield,并将其向右对齐
- 在中心我会让它空着
- 在南部,我将在第一行中添加一个BoxLayout y轴,另一个面板具有居中的BoxLayout
public static void main(String args[]) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
JFrame frame = new JFrame();
frame.setSize(new Dimension(500,600));
JPanel MainPanel = new JPanel();
frame.add(MainPanel);
JPanel NorthPanel = new JPanel(); //upper panel to add boxx layout and inside it 2 panls
JPanel ToPanel = new JPanel(); //inside north
JPanel SubjectPanel = new JPanel(); //inside north
NorthPanel.setLayout(new BoxLayout(NorthPanel, BoxLayout.Y_AXIS));
MainPanel.add(NorthPanel, BorderLayout.NORTH);
JLabel SubjectLabel = new JLabel("Subject"); SubjectLabel.setAlignmentX(Component.RIGHT_ALIGNMENT);
JTextField SubjectTextField = new JTextField(20); SubjectTextField.setAlignmentX(Component.RIGHT_ALIGNMENT);
JLabel ToLabel = new JLabel("To"); ToLabel.setAlignmentX(Component.RIGHT_ALIGNMENT);
JTextField ToTextField = new JTextField(20); ToTextField.setAlignmentX(Component.RIGHT_ALIGNMENT);
ToPanel.add(ToLabel);
ToPanel.add(ToTextField);
ToPanel.add(SubjectLabel);
ToPanel.add(SubjectTextField);
NorthPanel.add(ToPanel);
JPanel CenterPanel = new JPanel(); //Center panel blank
MainPanel.add(CenterPanel, BorderLayout.CENTER);
///
JPanel SouthPanel = new JPanel();
NorthPanel.setLayout(new BoxLayout(NorthPanel, BoxLayout.Y_AXIS));
JPanel FontPanels = new JPanel();
FontPanels.setLayout(new BoxLayout(FontPanels, BoxLayout.PAGE_AXIS));
FontPanels.add(new JButton("Bold"));
FontPanels.add(new JButton("Italic"));
FontPanels.add(new JButton("Underlined"));
FontPanels.add(new JButton("Undo"));
FontPanels.add(new JButton("Redo"));
FontPanels.setAlignmentX(Component.CENTER_ALIGNMENT);
JPanel OptionPanel = new JPanel();
OptionPanel.setLayout(new BoxLayout(OptionPanel, BoxLayout.PAGE_AXIS));
FontPanels.setLayout(new BoxLayout(FontPanels, BoxLayout.PAGE_AXIS));
OptionPanel.add(new JButton("Send"));
OptionPanel.setAlignmentX(Component.CENTER_ALIGNMENT);
SouthPanel.add(FontPanels);
SouthPanel.add(OptionPanel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
您没有向JFrame添加任何内容,因此它自然会显示一个空白的JFrame 要显示每个组件,您需要执行
frame.add(组件)代码>
我将框架的布局管理器留给您。在我看来,您好像忘记了将组件添加到框架中。即使将其添加到框架中,输出仍然不同(1-)变量名称不应以大写字符开头。代码很难阅读,因为所有变量都像类名一样突出显示。如果您希望人们帮助确保代码易于阅读。1)“实现与图片相似的gui?”为什么?太可怕了。To
字段应该比Subject
字段短&字段和标签都需要一些空白。文本区域(创建和添加的内容在哪里,顺便说一下?)需要一个滚动窗格。下一行按钮可以,但最后一行也需要空白。2) 代替frame.setSize(新尺寸(500600))
(这比猜测好不了多少)更改frame.setVisible(true)代码>到frame.pack();frame.setVisible(true)代码>我不能只添加“frame.add(MainPanel);”吗?因为我稍后会添加所有内容,理论上你是正确的-唯一确定的方法是你测试它。最好从Swing开始,一次添加一个组件。