0

我正在创建一个具有三个 jpanel 的程序:一个容器,容器内有两个 jpanel,一个用于保存按钮,一个用于保存内容。到目前为止,我已经让它们都显示出来并且看起来不错,唯一的问题是我希望在两者之间添加一些空间或边框(如果可能的话,或者在按钮菜单周围)但是因为两个内部面板都设置为空布局和外部布局设置为边框布局我似乎无法在两个内部布局之间添加边框。到目前为止,这是我的代码:

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

我建议GridBagLayout

因为更容易在组件之间设置空间

于 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 回答