4

JPanelを使用するを作成しようとしていFlowLayoutます。このパネルはcontainerusingの内部に配置されBorderLayoutます。これcontainerは、 を使用してカードに追加されCardLayoutます。FLowLayoutパネルの左下隅にある小さなボックスを使用するパネルを希望しますBorderLayout。どうすればいいですか?使用しましsettingsPanel.setPreferredSize(new Dimension(10, 425));たが、設定したサイズに関係なく、幅はパネル全体に広がりますが、高さは変わります。幅を変更するにはどうすればよいですか?

コード:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;

public class Main {
    //Settings Panel variables
    JLabel settingsTitle = new JLabel("Settings");

    public Main()
    {
        JPanel mainCard = new JPanel(new BorderLayout(8,8));
        JPanel settingsPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
        settingsTitle.setFont(new Font("TimesRoman", Font.PLAIN, 35));
        settingsPanel.add(settingsTitle);

        final CardLayout layout = new CardLayout();
        final JPanel cards = new JPanel(layout);
        cards.add(mainCard, "2");

        mainCard.add(settingsPanel, BorderLayout.SOUTH);

        settingsPanel.setPreferredSize(new Dimension(10, 425));
        settingsPanel.setBorder(BorderFactory.createLineBorder(Color.black));

        layout.show(cards, "1");

        JFrame window = new JFrame("Test");
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        window.getContentPane().add(cards);
        window.setSize(1280, 720);
        window.setLocationRelativeTo(null);
        window.setResizable(false);
        window.setVisible(true);

    }

    public static void main(String[] args)
    {

        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new Main();
            }
        });

    }
}

例:

ここに画像の説明を入力

4

2 に答える 2

1

まず、これを取り除きsettingsPanel.setPreferredSize(new Dimension(10, 425))、レイアウト マネージャーに仕事を任せます。

私が考えることができる最も簡単な方法はsettingsPanel、別のパネル内にラップし、この最後のパネルを SOUTH に追加することです。

 JPanel wrapPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
 wrapPanel.add(settingsPanel);

 JPanel mainCard = new JPanel(new BorderLayout(8,8));
 mainCard.add(wrapPanel, BorderLayout.SOUTH); // add wrapPanel here instead of settingsPanel

このようにして、FlowLayoutプロパティを利用して、必要なより少ないスペースを埋めることができます。

ここに画像の説明を入力

本当にトピックから外れていますが、価値があると思います

以前の質問で既にコメントしたように、このパネルのことで、このポータル 2: パネルのビデオを思い出しました。笑う時間も必要ですよね。

于 2014-02-26T21:32:24.243 に答える