2015-07-19 53 views
1

通过下面的代码,我使用JTextFields和JLabels创建JPanel并将该面板添加到另一个JPanel。如何调整infoPanel上的JTextField之间的间距?在JPanel上填充JTextFields

我试过GridBagLayout和GridLayout有不同的和不希望的结果。现在的方式至少让它们垂直对齐,但我似乎无法在它们上方和下方添加空间。这个问题上的任何大师能够帮忙吗?

public DrawPanelMain() { 
    JPanel btnPanel = new JPanel(); //Creates a new Panel for the buttons 
    JPanel infoPanel = new JPanel(); 
    JPanel fields = new JPanel(); 

    //Text boxes for infoPanel 
    JTextField textField1 = new JTextField(20); 
    JTextField textField2 = new JTextField(20); 
    JTextField textField3 = new JTextField(20); 
    JTextField textField4 = new JTextField(20); 
    JTextField textField5 = new JTextField(20); 
    JTextField textField6 = new JTextField(20); 

    //JLabels for infoPanel 
    JLabel jLabel1 = new JLabel("Serial Number: "); 
    JLabel jLabel2 = new JLabel("Information: "); 
    JLabel jLabel3 = new JLabel("Information: "); 
    JLabel jLabel4 = new JLabel("Information: "); 
    JLabel jLabel5 = new JLabel("Information: "); 
    JLabel jLabel6 = new JLabel("Information: "); 

    //These are the buttons that will be added to the btnPanel 
    btnPanel.add(new JButton(new AddSwitchAction("Add Switch Panel"))); 
    btnPanel.add(new JButton(new PushConfigAction("Push Config"))); 
    btnPanel.add(new JButton(new ActivateAllAction("Activate All"))); 
    btnPanel.add(new JButton(new DeactivateAllAction("Deactivate All"))); 

    //Fields that will be added to infoPanel 
    fields.add(jLabel1); 
    fields.add(textField1); 
    fields.add(jLabel2); 
    fields.add(textField2); 
    fields.add(jLabel3); 
    fields.add(textField3); 
    fields.add(jLabel4); 
    fields.add(textField4); 
    fields.add(jLabel5); 
    fields.add(textField5); 
    fields.add(jLabel6); 
    fields.add(textField6); 

    //Sets border padding for the infoPanel 
    fields.setBorder(new EmptyBorder(20, 20, 0, 20)); 

    //Draws border for the infoPanel 
    infoPanel.setBorder(BorderFactory.createRaisedBevelBorder()); 

    //Sets layout for the fields panel 
    fields.setLayout(new GridLayout(6, 1)); 

    //Add fields to infoPanel 
    infoPanel.add(fields); 

    //Add panels to tabbedPane 
    setLayout(new BorderLayout()); 
    add(tabbedPane, BorderLayout.CENTER); 
    add(btnPanel, BorderLayout.PAGE_END); 
    add(infoPanel, BorderLayout.EAST); 

} 
+2

请看看这篇文章,关于[在Swing GUI的提供空格](HTTP:// stackoverflow.com/q/17874717/1057230)。希望它对这个主题有一些帮助:-)简而言之,对每个'Layout'关注使用重载的构造函数。 –

+2

@ncEcOw你da man,这正是我一直在寻找的! – feltersnach

回答

0

创建一个组合边框

field.setBorder(BorderFactory.createCompoundBorder(
     field.getBorder(), 
     BorderFactory.createEmptyBorder(int top, int left, int bottom, int right))); 

或者放一些插图

field.setMargin(new java.awt.Insets(int top, int left, int bottom, int right));