2012-07-25 1 views
1

Я пытаюсь установить размер gridlayout jpanel. Вот код:Как установить размер gridlayout jpanel

JFrame myFrame = new JFrame();  
    myFrame.setLayout(new FlowLayout()); 
    myFrame.setLocation(400, 100); 
    myFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
    JLabel jlMins = new JLabel("Number of minutes for tutoring session (should be a positive decimal number): 0.0"); 
    JLabel jlEarnings = new JLabel("Earnings in dollars and cents received (should be positive decimal number): 0.0"); 
    jtfMins = new JTextField(20); 
    jtfEarnings = new JTextField(20); 
    JPanel jpMins = new JPanel(new BorderLayout()); 
    JPanel jpEarnings = new JPanel(new BorderLayout()); 
    jpMins.setPreferredSize(new Dimension(300,50)); 
    jpEarnings.setPreferredSize(new Dimension(300,50)); 
    jpMins.add(jlMins,BorderLayout.NORTH); 
    jpMins.add(jtfMins,BorderLayout.CENTER); 
    jpEarnings.add(jlEarnings,BorderLayout.NORTH); 
    jpEarnings.add(jtfEarnings,BorderLayout.CENTER); 
    JButton jbQuit = new JButton("Quit"); 
    JButton jbEnter = new JButton("Enter"); 
    JButton jbReport = new JButton("Run Report"); 
    jbQuit.setActionCommand("quit"); 
    jbEnter.setActionCommand("enter"); 
    jbReport.setActionCommand("report"); 
    jbQuit.addActionListener(this); 
    jbEnter.addActionListener(this); 
    jbReport.addActionListener(this); 
    JPanel jpButtons = new JPanel(new GridLayout(4,1,0,20)); 
    jpButtons.setSize(new Dimension(50,150)); 
    jpButtons.add(jbEnter); 
    jpButtons.add(jbReport); 
    jpButtons.add(jbQuit); 
    JPanel jpNorth = new JPanel(new BorderLayout()); 
    jpNorth.add(jpMins,BorderLayout.NORTH); 
    jpNorth.add(jpEarnings,BorderLayout.CENTER); 
    jpNorth.add(jpButtons,BorderLayout.SOUTH); 
    jtaReports = new JTextArea(); 
    jtaReports.setColumns(40); 
    jtaReports.setRows(10); 
    jtaReports.setLineWrap(true); 
    JScrollPane jspReports = new JScrollPane(jtaReports); 
    jspReports.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); 
    JPanel jpSouth = new JPanel(); 
    jpSouth.setPreferredSize(new Dimension(350,200)); 
    jpSouth.add(jspReports); 
    JPanel jpMain = new JPanel(new BorderLayout()); 
    jpMain.add(jpNorth,BorderLayout.NORTH); 
    jpMain.add(jpSouth,BorderLayout.SOUTH); 
    jpMain.setPreferredSize(new Dimension(500,500)); 
    myFrame.setContentPane(jpMain); 
    myFrame.pack(); 
    myFrame.setVisible(true); 

Имя панели - jpButtons. Из приведенного выше кода я говорю в основном об этом разделе:

JButton jbQuit = new JButton("Quit"); 
JButton jbEnter = new JButton("Enter"); 
JButton jbReport = new JButton("Run Report"); 
jbQuit.setActionCommand("quit"); 
jbEnter.setActionCommand("enter"); 
jbReport.setActionCommand("report"); 
jbQuit.addActionListener(this); 
jbEnter.addActionListener(this); 
jbReport.addActionListener(this); 
JPanel jpButtons = new JPanel(new GridLayout(4,1,0,20)); 
jpButtons.setSize(new Dimension(50,150)); 
jpButtons.add(jbEnter); 
jpButtons.add(jbReport); 
jpButtons.add(jbQuit); 

Как именно SetSize и setPreferredSize работу или как заставить их работать должным образом на JPanel, компонентов и т.д.

+0

Человек, ваш код серьезно относится к [Type Embedded in Name] (http://www.codinghorror.com/blog/2006/05/code-smells.html) – Mohayemin

ответ

4

масштабирования и позиционирования обрабатывается менеджером компоновки; пусть он выполняет свою работу.

+0

Другой альтернативой является расширение «JPanel» и переопределение это [getPreferredSize] (http://docs.oracle.com/javase/7/docs/api/javax/swing/JComponent.html#getPreferredSize()) метод :-) –

+0

@GagandeepBali, я не думаю, что обходной путь применим к этому конкретному менеджеру макетов. Лучшим решением было бы вложить компоненты в экземпляры «JPanel», которые добавляются непосредственно в диспетчер компоновки. Или еще лучше, используйте соответствующий менеджер макетов. – mre

+0

Мой плохой, никогда не смотрел на GridLayout в вопросе :( –

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

  • Нет связанных вопросов^_^