2016-04-19 2 views
2

Привет, ребята, я действительно новичок в качании на Java, но я создал простую программу с 1 JLabel, которая говорит, что вы хотите продолжить и 2 JButtons один, который говорит «да» и тот, который говорит «нет».Как я могу выровнять все мои компоненты swing в левом верхнем углу JPanel/JFrame

Я использую GridBaGLayout для организации JPanel/JFrame. Моя программа компилируется и работает отлично, но GridBagLayout центрирует все мои компоненты в центре JFrame. Поскольку я новичок в качелях, может кто-нибудь показать мне, как можно будет выровнять все мои компоненты в верхнем левом углу JFrame?

Спасибо! :)

+0

Используете ли вы IDE? –

+0

Если вы не выполняете домашнее задание, рассмотрите JOptionPane, функцию ядра Swing для общих диалогов, например. JOptionPane.showConfirmDialog (null, «Хотели бы вы продолжить», «Продолжить?», JOptionPane.YES_NO_OPTION); – Adam

ответ

1

Это может быть не реальный ответ, но в любом случае: прекратите использование GridBagLayout. У этого есть так много ловушек и настолько хрупкий, чтобы использовать, поэтому, пожалуйста, не используйте его.

Используйте лучшую альтернативу, такую ​​как MigLayout, и узнайте об этом. Не утруждайте себя изучением любого Менеджера макетов по умолчанию Java, за исключением случаев, когда вам действительно нужно.

пример с использованием MigLayout:

JPanel panel = new JPanel(new MigLayout("","","")); 

panel.add(myJButton1, "wrap"); 
panel.add(myJButton2, "wrap"); 
panel.add(myJButton3, "wrap"); 
panel.add(myJButton4, "wrap"); 
panel.add(myJButton5, "wrap"); 
panel.add(myJButton6, "wrap"); 

enter image description here

+0

Спасибо за ваш отзыв! Я собираюсь опробовать обоих ваших парней waymmthanka! :) – shrillhook

1

Там есть несколько способов, вы можете сделать это, вы могли бы добавить все компоненты в другой контейнер, а затем макет, который контейнер в контейнере, но основной принцип остался бы ...

Example

import java.awt.EventQueue; 
import java.awt.GridBagConstraints; 
import java.awt.GridBagLayout; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.UIManager; 
import javax.swing.UnsupportedLookAndFeelException; 

public class Test { 

    public static void main(String[] args) { 
     new Test(); 
    } 

    public Test() { 
     EventQueue.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
       } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) { 
        ex.printStackTrace(); 
       } 

       JFrame frame = new JFrame("Testing"); 
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       frame.add(new TestPane()); 
       frame.pack(); 
       frame.setLocationRelativeTo(null); 
       frame.setVisible(true); 
      } 
     }); 
    } 

    public class TestPane extends JPanel { 

     public TestPane() { 
      setLayout(new GridBagLayout()); 
      GridBagConstraints gbc= new GridBagConstraints(); 
      gbc.weightx = 1; 
      gbc.anchor = GridBagConstraints.WEST; 
      gbc.gridwidth = GridBagConstraints.REMAINDER; 

      for (int index = 0; index < 10; index++) { 
       add(new JButton("Test"), gbc); 
      } 

      gbc.weighty = 1; 
      add(new JLabel(), gbc); 
     } 

    } 

} 

В принципе, это добавляет «скрытый» компонент к последней строке, которая хочет использовать оставшееся пространство контейнера, заставляя компоненты в верхнем/левом углу контейнера

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