Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

GridLayout java center alignment

I'm using GridLayout class in Java to layout some UI components. Image is here:

enter image description here

I would like to get the Create Shopping Cart picture and the associated text to be aligned center in their respective cells in the panel. For details - the shopping cart picture would have to be in the center of the gray cell of the panel. And the text in the JTextArea have to be center aligned as well. Can you please help. My code is attached.

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();
}
}
like image 447
Sathish Avatar asked Dec 09 '13 14:12

Sathish


People also ask

What is GridLayout for?

A GridLayout object places components in a grid of cells. Each component takes all the available space within its cell, and each cell is exactly the same size.


1 Answers

Use setHorizontalAlignment() method of JLabel like next:

imglabelapprove.setHorizontalAlignment(JLabel.CENTER);

For centring text in JTextArea read that answer.

like image 166
alex2410 Avatar answered Sep 18 '22 19:09

alex2410