0

私は3つのjpanelを持つプログラムを作成しています。1つはコンテナーで、コンテナー内には2つのjpanelがあります。1つはボタンを保持し、もう1つはコンテンツを保持します。私はそれらの両方をこれまでに表示し、見栄えを良くしました。唯一の問題は、2つまたは2つの間に(または可能であればボタンメニューの周りに)スペースまたは境界線を追加したいと思っていましたが、両方の内部パネルがnullレイアウトに設定されているためです。外部レイアウトが境界線レイアウトに設定されている2つの内部レイアウトの間に境界線を追加できないようです。これまでの私のコードは次のとおりです。

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class internal_test extends JFrame {

int height = 480;
int width = 640;

public internal_test() {
    initUI();
}

private void initUI() {

    JPanel container = new JPanel();
    container.setLayout(new BorderLayout());
    container.setBackground(Color.black);

    JPanel buttonMenu = new JPanel();
    buttonMenu.setLayout(null);
    buttonMenu.setBackground(Color.DARK_GRAY);
    buttonMenu.setPreferredSize(new Dimension(150, height));

    JPanel dragFrame = new JPanel();
    dragFrame.setLayout(null);
    dragFrame.setPreferredSize(new Dimension(200, 100));
    dragFrame.setSize(new Dimension(490, height));
    dragFrame.setBackground(Color.gray);

    container.add(buttonMenu, BorderLayout.WEST);
    container.add(dragFrame, BorderLayout.CENTER);

    // container.setBorder(new EmptyBorder(new Insets(10, 10, 10, 10)));

    add(container);
    pack();

    setTitle("internal_test V0.1");
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setSize(width, height);
    setLocationRelativeTo(null);
}

public static void main(String args[]) {
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {

            internal_test c = new internal_test();

            c.setVisible(true);

        }
    });
}

}

dragFrameはDragLayoutになります。これは、そのレイアウトが必要なことを実行するためですが、ボタン/その他のアイテムをリストに配置し、それぞれの横にラベルを付けることができる限り、ボタンメニューは技術的には任意のレイアウトにすることができます。 。

どんな助けでも大歓迎です。

4

3 に答える 3

2

I Suggest GridBagLayout

beacause it is more easy to intent spaces between the components

于 2012-11-02T13:52:29.037 に答える
2

BoxLayoutを使用し、間隔を使用します

panel.add(Box.createRigidArea(new Dimension(x, y)));

ここにいくつかのまともな例があります。

于 2012-11-01T19:14:16.953 に答える
1

これは、必要な種類の境界線を追加するのに役立ちます: http ://docs.oracle.com/javase/tutorial/uiswing/components/border.html

次のような赤い線の境界線から始めることができます。buttonMenu.setBorder(BorderFactory.createLineBorder(Color.red));

于 2012-11-01T19:13:41.670 に答える