Main.java Source code

Java tutorial

Introduction

Here is the source code for Main.java

Source

//package com.java2s;
import java.awt.Component;
import java.awt.Dimension;

import java.awt.FontMetrics;

import java.awt.Insets;

import java.awt.geom.Rectangle2D;

import javax.swing.JButton;
import javax.swing.JComboBox;

import javax.swing.JTextField;

import javax.swing.UIManager;

import javax.swing.plaf.metal.MetalLookAndFeel;

public class Main {
    static final String LAF_METAL = MetalLookAndFeel.class.getName();

    public static void setJButtonSizesTheSame(final JButton[] btns) {
        if (btns == null) {
            throw new IllegalArgumentException();
        }

        final Dimension maxSize = new Dimension(0, 0);
        for (int i = 0; i < btns.length; ++i) {
            final JButton btn = btns[i];
            final FontMetrics fm = btn.getFontMetrics(btn.getFont());
            final Rectangle2D bounds = fm.getStringBounds(btn.getText(), btn.getGraphics());
            final int boundsHeight = (int) bounds.getHeight();
            final int boundsWidth = (int) bounds.getWidth();
            maxSize.width = boundsWidth > maxSize.width ? boundsWidth : maxSize.width;
            maxSize.height = boundsHeight > maxSize.height ? boundsHeight : maxSize.height;
        }

        final Insets insets = btns[0].getInsets();
        maxSize.width += insets.left + insets.right;
        maxSize.height += insets.top + insets.bottom;

        for (int i = 0; i < btns.length; ++i) {
            final JButton btn = btns[i];
            btn.setPreferredSize(maxSize);
        }

        initComponentHeight(btns);
    }

    public static void initComponentHeight(final Component... components) {
        if (components == null) {
            return;
        }
        for (final Component component : components) {
            if ((component instanceof JComboBox) || (component instanceof JButton)) {
                component.setPreferredSize(new Dimension(component.getPreferredSize().width, 22));
            } else if (component instanceof JTextField) {
                final String lf = UIManager.getLookAndFeel().getClass().getName();
                int i = 22;
                if (lf.equals(LAF_METAL)) {
                    i = 23;
                }
                component.setPreferredSize(new Dimension(component.getPreferredSize().width, i));
            }
        }
    }
}