如何在 Java Swing 中对齐组件?
How do I align components in Java Swing?
我正在 Java 中构建一个简单的初学者应用程序,我需要您帮助对齐组件。我要做的是将组件 (JLabel "name") 对齐到面板的左侧。我已经用 "new FlowLayout(FlowLayout.LEFT)" 试过了,但没有用,所以我请求你帮助我。这是框架的图片和下面的源代码。
public class firstClass extends JFrame implements ActionListener {
private JFrame frame1;
private JFrame frame2;
private JPanel mainPanelFirst;
private JPanel secondPanel;
private JButton newWindowButton;
private int mulitplyPanels;
private JLabel leftLabel;
private JLabel rightLabel;
private JComboBox leftCB;
private JComboBox rightCB;
第一个Window:
public JFrame createMainUI(){
frame1 = new JFrame("Main frame");
frame1.setSize(600,600);
frame1.setResizable(false);
frame1.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame1.setVisible(true);
mainPanelFirst = new JPanel();
mainPanelFirst.setLayout(new FlowLayout());
frame1.add(mainPanelFirst);
newWindowButton = new JButton("Open new window");
newWindowButton.addActionListener(this);
mainPanelFirst.add(newWindowButton);
return frame1;
}
第二个Window(包括我要对齐的标签):
public JFrame createSecondUI() {
frame2 = new JFrame("Second frame");
frame2.setSize(600, 600);
frame2.setResizable(false);
frame2.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame2.setVisible(true);
secondPanel = new JPanel();
secondPanel.setLayout(new FlowLayout());
secondPanel.setBackground(Color.gray);
frame2.add(secondPanel);
JPanel topPanel = new JPanel();
topPanel.setLayout(new FlowLayout(70,400,20));
topPanel.setBackground(Color.WHITE);
secondPanel.add(topPanel);
leftLabel = new JLabel("Name:");
topPanel.add(leftLabel);
return frame2;
}
@Override
public void actionPerformed(ActionEvent e) {
createSecondUI();
}
}
感谢您的帮助:)
警告 也请阅读:Should I avoid the use of set(Preferred|Maximum|Minimum)Size methods in Java Swing?
由于 JFrame 不可调整大小,请为 topPanel 指定一个定义的大小:
JPanel topPanel = new JPanel();
topPanel.setPreferredSize(new Dimension(600,100));
topPanel.setLayout(new FlowLayout(FlowLayout.LEFT,400,20));
我建议为您的应用程序使用布局管理器。您正在寻找的最有可能是 BorderLayout,除非您想要特定的能力来控制对象的布局位置和方式。
希望对您有所帮助
我正在 Java 中构建一个简单的初学者应用程序,我需要您帮助对齐组件。我要做的是将组件 (JLabel "name") 对齐到面板的左侧。我已经用 "new FlowLayout(FlowLayout.LEFT)" 试过了,但没有用,所以我请求你帮助我。这是框架的图片和下面的源代码。
public class firstClass extends JFrame implements ActionListener {
private JFrame frame1;
private JFrame frame2;
private JPanel mainPanelFirst;
private JPanel secondPanel;
private JButton newWindowButton;
private int mulitplyPanels;
private JLabel leftLabel;
private JLabel rightLabel;
private JComboBox leftCB;
private JComboBox rightCB;
第一个Window:
public JFrame createMainUI(){
frame1 = new JFrame("Main frame");
frame1.setSize(600,600);
frame1.setResizable(false);
frame1.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame1.setVisible(true);
mainPanelFirst = new JPanel();
mainPanelFirst.setLayout(new FlowLayout());
frame1.add(mainPanelFirst);
newWindowButton = new JButton("Open new window");
newWindowButton.addActionListener(this);
mainPanelFirst.add(newWindowButton);
return frame1;
}
第二个Window(包括我要对齐的标签):
public JFrame createSecondUI() {
frame2 = new JFrame("Second frame");
frame2.setSize(600, 600);
frame2.setResizable(false);
frame2.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame2.setVisible(true);
secondPanel = new JPanel();
secondPanel.setLayout(new FlowLayout());
secondPanel.setBackground(Color.gray);
frame2.add(secondPanel);
JPanel topPanel = new JPanel();
topPanel.setLayout(new FlowLayout(70,400,20));
topPanel.setBackground(Color.WHITE);
secondPanel.add(topPanel);
leftLabel = new JLabel("Name:");
topPanel.add(leftLabel);
return frame2;
}
@Override
public void actionPerformed(ActionEvent e) {
createSecondUI();
}
}
感谢您的帮助:)
警告 也请阅读:Should I avoid the use of set(Preferred|Maximum|Minimum)Size methods in Java Swing?
由于 JFrame 不可调整大小,请为 topPanel 指定一个定义的大小:
JPanel topPanel = new JPanel();
topPanel.setPreferredSize(new Dimension(600,100));
topPanel.setLayout(new FlowLayout(FlowLayout.LEFT,400,20));
我建议为您的应用程序使用布局管理器。您正在寻找的最有可能是 BorderLayout,除非您想要特定的能力来控制对象的布局位置和方式。
希望对您有所帮助