2013-12-09 4 views
3

Я использую класс GridLayout в Java для компоновки некоторых компонентов пользовательского интерфейса. Изображение здесь:GridLayout java center alignment

enter image description here

Я хотел бы получить Создать корзину изображение и соответствующий текст будет выровнен центром в соответствующих ячеек в панели. Для получения дополнительной информации - изображение корзины покупок должно быть в центре серой ячейки панели. И текст в JTextArea должен быть выровнен по центру. Вы можете помочь. Мой код прилагается.

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

class ImageDemo extends JFrame 
{ 
ImageDemo() 
{ 
    Container pane = getContentPane(); 
    pane.setLayout(new GridLayout(2,2)); 

    setSize(800,400); 
    setLayout(new GridLayout(2,2)); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    JPanel cartpane = new JPanel(); 
    cartpane.setLayout(new GridLayout(1,2));  

    /* 
    GridBagConstraints c = new GridBagConstraints(); 

    c.gridx = 0; 
    c.gridy = 0;  
    c.anchor = GridBagConstraints.SOUTH;   
    c.fill=GridBagConstraints.BOTH; 
    cartpane.add(imglabelcart,c); 
    c.gridx=1; 
    c.gridy=0; 

    c.fill=GridBagConstraints.BOTH ; 
    c.anchor = GridBagConstraints.WEST; 
    cartpane.add(cartta,c); 
    */ 

    ImageIcon iconcart = new ImageIcon("cart.jpg");  
    JLabel imglabelcart = new JLabel("Create Shopping Cart"); 
    imglabelcart.setIcon(iconcart); 
    imglabelcart.setVerticalTextPosition(SwingConstants.BOTTOM); 
    imglabelcart.setHorizontalTextPosition(SwingConstants.CENTER); 

    JTextArea cartta = new JTextArea(); 
    cartta.setLineWrap(true); 
    cartta.append("Use the Create Shopping Cart transaction to create a 
       new shopping cart for your purchases.\n"); 
    cartta.append("You can view the products available in the catalog and select 
       them to be part of your shopping cart."); 

    cartpane.add(imglabelcart); 
    cartpane.add(cartta); 

    ImageIcon iconapprove = new ImageIcon("approve.jpg"); 
    ImageIcon iconviewpo = new ImageIcon("viewpo.jpg"); 
    ImageIcon iconlogout = new ImageIcon("viewpo.jpg"); 
    JLabel imglabelapprove = new JLabel("Approve Shopping Cart"); 
    JLabel imglabelviewpo = new JLabel("View Purchase Order"); 
    JLabel imglabellogout = new JLabel("Logout");  

    imglabelapprove.setIcon(iconapprove); 
    imglabelapprove.setVerticalTextPosition(SwingConstants.BOTTOM); 
    imglabelapprove.setHorizontalTextPosition(SwingConstants.CENTER); 

    imglabelviewpo.setIcon(iconviewpo); 
    imglabelviewpo.setVerticalTextPosition(SwingConstants.BOTTOM); 
    imglabelviewpo.setHorizontalTextPosition(SwingConstants.CENTER); 

    imglabellogout.setIcon(iconlogout); 
    imglabellogout.setVerticalTextPosition(SwingConstants.BOTTOM); 
    imglabellogout.setHorizontalTextPosition(SwingConstants.CENTER); 

    pane.setBackground(new Color(156,195,252)); 
    pane.add(cartpane); 
    pane.add(imglabelapprove); 
    pane.add(imglabelviewpo); 
    pane.add(imglabellogout); 

    setVisible(true); 

} 

public static void main(String[] args) 
{ 
    ImageDemo demoi = new ImageDemo(); 
} 
} 

ответ

9

Используйте setHorizontalAlignment() метод JLabel как следующий:

imglabelapprove.setHorizontalAlignment(JLabel.CENTER); 

Для центрирования текста в JTextArea прочитал, что answer.

+1

Если это не сработает, что может быть причиной этого? –

+0

@ JochenReinschlüssel Если при таком подходе он не работает, возможно, ваш JLabel слишком короткий, поэтому даже вы центрируете контент, он появляется слева от ячейки. Увеличьте его длину. – FaithReaper

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