2013-04-26 5 views
1

Я как бы расстроен групповым макетом. Как я могу сделать так, чтобы метка upLabel была центрирована на красной верхней панели?Центр JLabel внутри JPanel с GroupLayout

Этот пример не работает, и я попробовал много вещей, так что это была моя последняя попытка, прежде чем я выгнал монитор из окна ;-)

Я знаю, что есть лучшие способы центра для текста в пределах JPanel, но я просто хотел поиграть и хотел понять основы. Я читаю примеры с oracle.com, но они намного сложнее и честно легче понять. Но эта простая задача для меня не работает.

Многие приветствия и благодарности

import java.awt.Color; 
import javax.swing.GroupLayout; 
import javax.swing.GroupLayout.Alignment; 
import javax.swing.*; 

public class Main1 extends JFrame{ 

public static void main(String[] args) { 
    new Main1().begin(); 
} 

public void begin() { 
    try { 
     UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 

     setResizable(true); 
     setSize(500, 500); 
     setTitle("Hauptmenue"); 
     setLocationRelativeTo(null); 
     setVisible(true); 
     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     GroupLayout layout = new GroupLayout(this.getContentPane()); 
     this.getContentPane().setLayout(layout); 

     layout.setAutoCreateGaps(true); 
     layout.setAutoCreateContainerGaps(true); 

     JPanel up = new JPanel(); 
     up.setBackground(Color.RED); 
     JPanel mid = new JPanel(); 
     JPanel bot = new JPanel(); 

     // von links 
     layout.setHorizontalGroup(layout.createParallelGroup(). 
       addComponent(up,300, 400, Short.MAX_VALUE). 
       addComponent(mid). 
       addComponent(bot)); 
     // von oben 
     layout.setVerticalGroup(layout.createSequentialGroup().addComponent(up). 
       addComponent(mid). 
       addComponent(bot)); 

     layout = new GroupLayout(up); 
     up.setLayout(layout); 

     JLabel upLabel = new JLabel("Dummy Text"); 

     layout.setHorizontalGroup(layout.createSequentialGroup().addComponent(upLabel, 300, 400, Short.MAX_VALUE)); 
     layout.setVerticalGroup(layout.createSequentialGroup().addComponent(upLabel)); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
} 
+0

GroupLayout был фактически разработан для использования с GUI Builder, как Jigloo или Matisse – keuleJ

+0

+1 для публикации SSCCE. :) –

ответ

2

Для горизонтального выравнивания, изменение:

JLabel upLabel = new JLabel("Dummy Text"); 

To:

JLabel upLabel = new JLabel("Dummy Text", SwingConstants.CENTER); 
+2

oh my god :-) - теперь мне нужен новый монитор :-) – Hauke

+0

Люди (включая меня) часто забывают, что макеты должны сочетаться с такими вещами, как выравнивание компонентов, границы компонентов, прокладка макета, макет пустых пробелов. –

+0

часто забывают, что идея о макете должна основываться на приличном количестве искусства – mKorbel