4

マージンに問題があります。おそらくそれは非常に簡単に解決できますが、原因はわかりません。私は4つのコンポーネント、3つのjscrollpanelと1つのjpanelを持っています。コンポーネントは次のように配置されます。

コンポーネント

問題は赤い楕円でマークされています。このマージンを一掃する方法は?その問題は境界線に関連していることを私は知っています(すべてのコンポーネントに対して同じ方法で境界線を作成している場合でも)。私はこれを使用しています:

setBorder(BorderFactory.createTitledBorder("Sterowanie:"));

しかし、JPanel(「Sterowanie」というラベルの付いたコンポーネント)の境界線を設定しないと、すべての場所がマージンなしで埋められます。境界線で、境界線のある領域だけを埋めます。コンポーネントを配置するために使用するコード:

proxys = new ItemViewer("Numery:");
add(proxys, "height 65%, width 33%");

accs = new ItemViewer("Konta:");
add(accs, "height 65%, width 33%");

panel = new JPanel();
panelLayout = new MigLayout("insets 0 0 0 0");
panel.setBorder(BorderFactory.createTitledBorder("Sterowanie:"));
add(panel, "height 65%, width 34%, wrap");

log = new Log("Log:");
add(log, "height 35%, width 100%, span");

うーん?

4

2 に答える 2

2

MigLayoutの使用方法は私にとって少し奇妙です(違反しないでください、私は別の方法を学んだだけです)。これを試して:

content.setLayout(new MigLayout("fill", "[sg, grow][sg, grow][sg, grow]", "[65%][35%]"));
content.add(topLeftComponent, "grow");
content.add(topMiddleComponent, "grow");
content.add(topRightComponent, "grow, wrap");
content.add(bottomComponent, "span 3, grow");

私はそれが同じ「精神」ではないことを知っていますが、私はいつもこのスタイルを構築するのが簡単だと思っていました。

于 2013-11-05T21:21:46.960 に答える
1

なぜそれが起こっているのかわかりませんが(私の最初の推測は、ItemViewとプレーンパネルの垂直方向のデフォルトの配置が異なることでした)、再現できます-セル内または行の制約のいずれかですべてのセルを成長可能にすることで回避できます:

    JComponent comp = new JScrollPane(new JTable(20, 1));
    comp.setBorder(new TitledBorder("Some Item"));
    JComponent other = new JScrollPane(new JTable(10, 1));
    other.setBorder(new TitledBorder("Other items"));
    JComponent panel = new JPanel();
    panel.setBorder(new TitledBorder("Stewhatever"));
    JTextArea log = new JTextArea();
    log.setBorder(new TitledBorder("Log"));

    MigLayout layout = new MigLayout("wrap 3, debug"); //, "", "[fill, grow]"); 
    JComponent content = new JPanel(layout);
    String cc = "width 33%, height 65%, grow";
    content.add(comp, cc);
    content.add(other, cc);
    content.add(panel, cc);
    content.add(log, "height 35%, span, grow");

拡大せずに、スニペットはスクリーンショットを再現します。ccまたはコメント付きの行制約のいずれかで拡大すると、すべての上位コンポーネントが上部に配置されます。

これがバグなのか、それとも予想されるのかわからない

于 2012-07-22T15:43:02.573 に答える