2016-06-20 2 views
1

В настоящее время это мой интерфейс: JTextField и JComboBox слишком велики, занимая столько места. enter image description hereОграничить компоненты размера пользовательского интерфейса (не используя метод setBounds())

В идеале, я хотел бы, чтобы это мой UI: Ideal

Как ни странно, я не знаю, почему кнопка «Пуск» ниже обычного размера, не занимают слишком много места. Это то, чего я хочу достичь. Я использую 2 панели, inputPanel содержит boxPanel, который содержит все элементы.

Вот мой код:

public class Selection {  
private JFrame mainFrame; 
final CardLayout cardLayout = new CardLayout(); 
final JPanel mainPanel = new JPanel(cardLayout); 

//inputPanel 
final public ImageIcon goalPic = new ImageIcon(getClass().getResource("/images/goal.png")); 
final public ImageIcon selEmployeePic = new ImageIcon(getClass().getResource("/images/selEmployee.png")); 

JLabel goalPicL = new JLabel(goalPic); 
JLabel selEmployeePicL = new JLabel(selEmployeePic); 

JPanel inputPanel, boxPanel; 

JLabel goalLbl = new JLabel("Input Goal"), selEmployeeLbl = new JLabel("Select Employee"); 
JTextField goal = new JTextField(); 
JComboBox selEmployeeCombo = new JComboBox(); 
JButton start = new JButton("Start"); 

    public Selection(){ 
    try { 
     UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
    } catch (ClassNotFoundException ex) { 
     ex.printStackTrace(); 
    } catch (InstantiationException ex) { 
     ex.printStackTrace(); 
    } catch (IllegalAccessException ex) { 
     ex.printStackTrace(); 
    } catch (UnsupportedLookAndFeelException ex) { 
     ex.printStackTrace(); 
    } 

    mainFrame = new JFrame("Input"); 
    mainFrame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); 
    mainFrame.setSize(1000, 750); 
    mainFrame.setLocationRelativeTo(null); 

    //input Panel 
    inputPanel = new JPanel(); 
    inputPanel.setBackground(Color.white); 
    inputPanel.setLayout(new BorderLayout()); 

    boxPanel = new JPanel(); 
    boxPanel.setBackground(Color.white); 
    boxPanel.setLayout(new BoxLayout(boxPanel, BoxLayout.Y_AXIS));   

    goalPicL.setToolTipText("Input Goal");     
    goalPicL.setAlignmentX(Component.CENTER_ALIGNMENT); 

    goalLbl.setFont(new Font("Calibri", Font.PLAIN, 20)); 
    goalLbl.setAlignmentX(Component.CENTER_ALIGNMENT); 

    goalTextField.setFont(new Font("Calibri", Font.PLAIN, 20)); 
    goalTextField.setAlignmentX(Component.CENTER_ALIGNMENT); 

    employeeCombo = new JComboBox(); 
    employeeCombo.setFont(new Font("Calibri", Font.PLAIN, 18)); 
    employeeCombo.setSelectedIndex(-1); 

    employeePicL.setToolTipText("Select Employee"); 
    emploeePicL.setAlignmentX(Component.CENTER_ALIGNMENT); 

    employeeLbl.setFont(new Font("Calibri", Font.PLAIN, 20)); 
    employeeLbl.setAlignmentX(Component.CENTER_ALIGNMENT); 

    employeeCombo.setAlignmentX(Component.CENTER_ALIGNMENT); 

    start.setFont(new Font("Calibri", Font.PLAIN, 20)); 
    start.setAlignmentX(Component.CENTER_ALIGNMENT); 

    boxPanel.add(goalPicL); 
    boxPanel.add(goalLbl); 
    boxPanel.add(goal); 
    boxPanel.add(employeePicL); 
    boxPanel.add(employeeLbl); 
    boxPanel.add(employeeCombo); 
    boxPanel.add(start); 

    inputPanel.add(boxPanel, BorderLayout.CENTER); 

    mainPanel.add(inputPanel, "Input"); 
    mainFrame.add(mainPanel); 
} 
/** 
* @return main frame of Selection Page 
*/ 
public JFrame getMainFrame() { 
    return mainFrame; 
} 

}

Для главного класса:

public class main { 
public static void main (String[] asdf){ 
    Selection sel = new Selection(); 
    sel.getMainFrame().setVisible(true); 
}  

}

EDIT: Не SetBounds() метод, потому что он не работает

+1

Можете ли вы разместить рабочий код? Я могу помочь с решением. – Beniton

+0

Редактирование данного кода для рабочего. Большое спасибо! – beyonchayyy

+0

@Beniton, надеюсь, что отредактированный код выше полезен. Я не знаю, как я могу отправить изображения, но надеюсь, что это хорошо :) – beyonchayyy

ответ

1

Я изменил код, как показано ниже.

goal.setMaximumSize(new Dimension(200, 25)); 
employeeCombo.setMaximumSize(new Dimension(200, 25)); 

И он отлично работает.

enter image description here

+0

Аллилуйя для таких людей, как ты! – beyonchayyy

Смежные вопросы