2011-07-10 10 views
5

Çok basit, ne yapmak istediğimi, ancak bunu yapmanın bir yolunu çözemiyorum. Bir JFrame veya JPanel'de, bileşenleri dikey olarak nasıl merkezlersiniz? Yani, HTML'de merkez etiketini kullanmaya benzer. Bileşenler bir sütun içinde ve hepsi ortalanmış.Java - bileşenlerin dikey kolonunu nasıl ortalarsınız?

Ben Y_AXIS ve PAGE_AXIS ile BoxLayout denedi, ama benim için garip bir şekilde bileşenleri hizalar. Tercih edilen boyut setiyle FlowLayout'u kullanmayı denedim, böylece etrafı sarar, ancak ortalamıyor. Gerçekten tek seçenek olmadıkça GridBagLayout gibi basit bir şeye benzememeyi tercih ederim. Yardım et!

+0

bazı örnek kodlar verebilir misiniz? Ayrıca, özel gereksinimleri nelerdir? Bir satıra kaç tane bileşen var? – mre

+0

@little bunny foo foo Her satırda sadece bir bileşen. Özel gereksinimler yok; Çok sık karşılaştığım çok genel bir düzen sorusu. – Shelley

+0

Ben html center etiketinin yapacağı gibi bir şey düşünüyorum, web sayfasındaki her şey arasında bir br etiketi ile. Ortalanmış bir şeylerin dikey bir sütun. – Shelley

cevap

8

Sana farklı bir "x hizalama" ile bileşenleri kullanırken söyleyebilirim bir tahmin yapmak için olsaydı. kullanmayı deneyin:

component.setAlignmentX(JComponent.CENTER_ALIGNMENT); 

fazla bilgi için Fixing Alignment Problems üzerinde Salıncak öğreticisindeki bölümüne bakın.

sonra da SSCCE sen denedi gösteren yayınlayabileceğiniz neyi fazla yardıma ihtiyaç duyarsanız.

Düzenleme:

import java.awt.*; 
import javax.swing.*; 

public class BoxLayoutTest extends JFrame 
{ 
    public BoxLayoutTest() 
    { 
     Box box = new Box(BoxLayout.Y_AXIS); 
     add(box); 

     JLabel label = new JLabel("I'm centered"); 
     label.setAlignmentX(JComponent.CENTER_ALIGNMENT); 

     box.add(Box.createVerticalGlue()); 
     box.add(label); 
     box.add(Box.createVerticalGlue()); 
    } 

    public static void main(String[] args) 
    { 
     BoxLayoutTest frame = new BoxLayoutTest(); 
     frame.setDefaultCloseOperation(EXIT_ON_CLOSE); 
     frame.setSize(300, 300); 
     frame.setLocationRelativeTo(null); 
     frame.setVisible(true); 
    } 
} 
+0

OP yatay olarak değil dikey olarak merkeze bakıyor. – mre

+1

Sonra biraz tutkal da ekleyebilirsiniz. – camickr

+0

+1, Mükemmel çalışma. :) – mre