zoukankan      html  css  js  c++  java
  • Swing-setAlignmentX()用法-入门

    先看下API:

    public void setAlignmentX(float alignmentX)

    设置垂直对齐方式。

    参数: alignmentX - 新的垂直对齐方式

     

    网上关于这个函数的详细情况介绍的不多,JAVA布局管理器提到说, setAlignmentX(left,right)只有在布局是BoxLayout.Y_AXIS才效,而setAlignmentY(top,button)在布局为BoxLayout.X_AXIS才效果。我基本同意这个理解,也就是说,setAlignmentX()用于使用了BoxLayout.Y_AXIS时,将控件在X轴方向设置为左对齐、右对齐或居中对齐;setAlignmentY()用于使用了BoxLayout.X_AXIS时,将控件在Y轴方向设置为顶对齐、底对齐或居中对齐。以下是测试代码:

     

    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Component;
    import java.awt.Dimension;
    import java.awt.FlowLayout;
    import java.awt.LayoutManager;
    import java.awt.TextArea;
    import javax.swing.BorderFactory;
    import javax.swing.BoxLayout;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.OverlayLayout;
    import javax.swing.border.EtchedBorder;
    
    /*
     * 2015-06-13
     */
    public class setAlignmentDemo {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            
            //第一个panel,垂直排列
            JPanel  jpanelY = new JPanel();
            jpanelY.setLayout(new BoxLayout(jpanelY,BoxLayout.Y_AXIS));
            jpanelY.setBorder(BorderFactory.createTitledBorder("BoxLayout.Y_AXIS"));
            JButton   buttonY1 = new JButton("LEFT_ALIGNMENT");
            JButton   buttonY2 = new JButton("RIGHT_ALIGNMENT");
            JButton   buttonY3 = new JButton("CENTER_ALIGNMENT");
            
            buttonY1.setAlignmentX(Component.LEFT_ALIGNMENT);
            buttonY2.setAlignmentX(Component.RIGHT_ALIGNMENT);
            buttonY3.setAlignmentX(Component.CENTER_ALIGNMENT);
            
            jpanelY.add(buttonY1);
            jpanelY.add(buttonY2);
            jpanelY.add(buttonY3);
          //第二个panel,水平排列
            JPanel  jpanelX=new JPanel();
            jpanelX.setLayout(new BoxLayout(jpanelX,BoxLayout.X_AXIS));
            jpanelX.setBorder(BorderFactory.createTitledBorder("BoxLayout.X_AXIS"));
            
            JButton buttonX1 = new JButton("TOP_ALIGNMENT");
            JButton buttonX2 = new JButton("BOTTOM_ALIGNMENT");
            JButton buttonX3 = new JButton("CENTER_ALIGNMENT");
            
            buttonX1.setAlignmentY(Component.TOP_ALIGNMENT);
            buttonX2.setAlignmentY(Component.BOTTOM_ALIGNMENT);
            buttonX3.setAlignmentY(Component.CENTER_ALIGNMENT);
            
            jpanelX.add(buttonX1);
            jpanelX.add(buttonX2);
            jpanelX.add(buttonX3);
    
            //添加两个panel到窗体
            JFrame frame = new JFrame("setAlignmentDemo");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setLayout(new FlowLayout());
            frame.add(jpanelX);
            frame.add(jpanelY);
            frame.pack();
            frame.setLocationRelativeTo(null);
            frame.setVisible(true);  
        }
    }

    运行效果如下:

     运行效果图

    那么问题来了,运行结果的对齐方式是反的?

  • 相关阅读:
    数据库主从同步相关问题
    前端使用node.js的http-server开启一个本地服务器
    css中height 100vh的应用场景,动态高度百分比布局,浏览器视区大小单位
    通过浏览器F12开发工具快速获取别的网站前端代码的方法
    vue打包app嵌入h5,区分app进入和android,ios显示不同的下载链接
    vue实现验证码倒计时60秒的具体代码
    vue用hbuilderX打包app嵌入h5方式云打包和遇到的问题
    Cookie写不进去问题深入调查 https Secure Cookie
    vue配置手机通过IP访问电脑开发环境
    区块链名词解析:ICO、IFO、IEO和IMO,分别是什么呢?
  • 原文地址:https://www.cnblogs.com/pzy4447/p/4574204.html
Copyright © 2011-2022 走看看