Java SwingでJPanelの中央にJLabelを配置する方法


  1. レイアウトマネージャーを使用する方法: JPanelのデフォルトのレイアウトマネージャーであるFlowLayoutを使用して、JLabelを中央に配置することができます。以下のコード例を参考にしてください。
import javax.swing.*;
public class Main {
    public static void main(String[] args) {
        JFrame frame = new JFrame("JLabel on the center of a JPanel");
        JPanel panel = new JPanel();
        panel.setLayout(new FlowLayout(FlowLayout.CENTER));
        JLabel label = new JLabel("Hello, World!");
        panel.add(label);
        frame.add(panel);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
    }
}
  1. カスタムレイアウトマネージャーを使用する方法: JPanelのレイアウトマネージャーとして、カスタムのレイアウトマネージャーを作成することもできます。以下のコード例では、JLabelを中央に配置するための簡単なカスタムレイアウトマネージャーを示しています。
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.LayoutManager;
public class CenterLayout implements LayoutManager {
    @Override
    public void addLayoutComponent(String name, Component comp) {}
    @Override
    public void removeLayoutComponent(Component comp) {}
    @Override
    public Dimension preferredLayoutSize(Container parent) {
        return null;
    }
    @Override
    public Dimension minimumLayoutSize(Container parent) {
        return null;
    }
    @Override
    public void layoutContainer(Container parent) {
        Component[] components = parent.getComponents();
        if (components.length > 0) {
            Component component = components[0];
            Dimension parentSize = parent.getSize();
            Dimension componentSize = component.getPreferredSize();
            int x = (parentSize.width - componentSize.width) / 2;
            int y = (parentSize.height - componentSize.height) / 2;
            component.setBounds(x, y, componentSize.width, componentSize.height);
        }
    }
}

使用例:

import javax.swing.*;
public class Main {
    public static void main(String[] args) {
        JFrame frame = new JFrame("JLabel on the center of a JPanel");
        JPanel panel = new JPanel();
        panel.setLayout(new CenterLayout());
        JLabel label = new JLabel("Hello, World!");
        panel.add(label);
        frame.add(panel);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
    }
}

これらの方法を使用すると、Java SwingのJPanelの中央にJLabelを配置することができます。