java - GridLayout java居中对齐

标签 java swing alignment jlabel grid-layout

我在 Java 中使用 GridLayout 类来布置一些 UI 组件。图片在这里:

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();
}
}

最佳答案

使用setHorizontalAlignment() JLabel 的方法如下:

imglabelapprove.setHorizontalAlignment(JLabel.CENTER);

要使 JTextArea 中的文本居中,请阅读 answer .

关于java - GridLayout java居中对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20473325/

相关文章:

java - 是什么让 Web 容器首先在 Web 应用程序中加载 web.xml?

java - 如何将Spring框架和MySQL与Java swing应用程序结合起来?

java - 显示 Java 框架的 Web 服务

java - 我如何从 jasperserver 获取报告

html - 如何将列表中的图像居中?

python - 评估多序列比对

java - 两个 OnClick 监听器,两个按钮。 (已保存的首选项)

java - 文件正在下载但里面没有任何内容

Java媒体框架: how to get framerate from videostream

html - 使用 html 在包装器内对齐 CSS3 按钮