0

アプリケーションで使用JComboBoxしていますが、パディングを増やしたいと思います。コンボ ボックスのすべての初期コンテンツは、左の境界線に非常に近い位置に配置されているため、多少読みやすいようにパディングしたいと考えています。

これは、アプリケーションで使用するサンプル コードです。

jPanelPatientInfo.add(jComboBoxNation, new GridBagConstraints(1, 3, 1, 1, 0.0, 0.0,   
GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0, 10, 0, 0), 0, 0));
4

3 に答える 3

2

(リスト部分)の内側のパディングを増やしたいと思います。JComboBox質問するときは、より具体的にする必要があります。

の内部をパディングする 1 つの方法を次に示しJComboBoxます。

import java.awt.Component;

import javax.swing.DefaultListCellRenderer;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.ListCellRenderer;
import javax.swing.border.Border;
import javax.swing.border.EmptyBorder;

public class BorderListCellRenderer implements ListCellRenderer {

    private Border insetBorder;

    private DefaultListCellRenderer defaultRenderer;

    public BorderListCellRenderer(int rightMargin) {
        this.insetBorder = new EmptyBorder(0, 2, 0, rightMargin);
        this.defaultRenderer = new DefaultListCellRenderer();
    }

    @Override
    public Component getListCellRendererComponent(JList list, Object value,
            int index, boolean isSelected, boolean cellHasFocus) {
        JLabel renderer = (JLabel) defaultRenderer
                .getListCellRendererComponent(list, value, index, isSelected,
                        cellHasFocus);
        renderer.setBorder(insetBorder);
        return renderer;
    }

}

次に、このようなクラスを使用します。

JComboBox comboBox = new JComboBox(elements);
comboBox.setRenderer(new BorderListCellRenderer(20));
于 2013-06-03T15:37:57.133 に答える
1

パネル上でコンポーネントのスペースを増やす最も簡単な方法は、パネルに Border を追加することです。GridBagLayout を使用しているように見えるので、コードは次のようになります。

JPanel panel = new JPanel( new GridBagLayout() );
panel.addBorder( new EmptyBorder(10, 10, 10, 10) );
panel.add(component1, constraints);

コンポーネントを別の行に追加すると、それらはすべて 10 ピクセルでインデントされます。

于 2013-06-03T14:56:46.857 に答える
0

setPrototypeDisplayValueコンボボックスで呼び出してみてください。これにより、使用されるテキストの量に基づいて幅が設定されます。リンクされたドキュメントに記載されているように、これがない場合は、各要素のサイズに基づいて適切な幅が使用されます。

于 2013-06-03T14:28:09.670 に答える