Java - コンポーネント後のランダムなスペース

I am currently making a Twitter client, and I found some issue I couldn't solve myself. I'm not sure what part of the code should I include, so I'll post a picture. Picture

私はJScrollPaneにJPanelを持っています。そして、そのJPanelに小さなJPanels(ツイート)を追加します。しかし、これらのコンポーネントの後には常にスペースがあります。 そのスペースはどこから来たのですか? 前もって感謝します。 ここにいくつかのコードがあります:

これはJPanelを扱うメインのJPanelです。

package net.rothens.twitt3ns.gui;

import java.awt.*;
import java.util.ArrayList;
import java.util.Collections;
import javax.swing.*;
import net.rothens.twitt3ns.Twitt3ns;
import twitter4j.Status;

/**
 *
 * @author Rothens
 */
public class TweetsPanel extends JPanel {

public java.util.List timestamps;

public TweetsPanel() {
    initUI();
}

public final void initUI() {
    timestamps = new ArrayList();
    setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));
}

public void addTwitt(Status s) {
    if (!Twitt3ns.tw.mw.isScrollbarOnTop()) {
        Twitt3ns.tw.mw.saveScrollbarPosition();
    }
    int pos = getPos(s.getCreatedAt().getTime()) + 1;
    TweetPanel tp = new TweetPanel(s);
    if (pos >= getComponentCount()) {
        add(tp);
    } else {
        add(tp, pos);
    }

    validate();
    if (!Twitt3ns.tw.mw.isScrollbarOnTop()) {
        Twitt3ns.tw.mw.loadScrollbarPosition(tp.getHeight());
    }
}

/**
 * Update the time on the panels
 */
public void updatePanels() {
    for (Component c : getComponents()) {
        if (c instanceof TweetPanel) {
            ((TweetPanel) c).updateTime();
        }
    }
    validate();

}


/**
 * Gets the position of a new tweet
 * @param what the time when the new component was created
 * @return position of the new component
 */
public int getPos(long what) {
    timestamps.add(what);
    Collections.sort(timestamps);
    return timestamps.size() - timestamps.indexOf(what) - 2;

}

public TweetsPanel(int id) {
    SwingUtilities.invokeLater(new Runnable() {

        public void run() {
            TweetsPanel tl = new TweetsPanel();
            tl.setVisible(true);
        }
    });
}
}

The Tweet JPanels code is this (I'll post in pastebin, it's way too big) : Pastebin

Main JFrameでは、このようにタブペインとScrollPaneを作成します:

 tabPane.setTabPlacement(javax.swing.JTabbedPane.BOTTOM);
 tabPane.setAlignmentX(0.0F);
 tabPane.setAlignmentY(0.0F);

 spHome.setAlignmentX(0.0F);
 spHome.setAlignmentY(0.0F);
 spHome.setHorizontalScrollBar(null);
 tabPane.addTab("Otthon", spHome);
 tabPane.addTab("@", null, spMention, "Tweetek amik Téged említenek");

これがJPanelをJScrollPanesに追加する方法です。

tpHome.setBorder(null);
tpHome.setFocusable(false);
spHome.setViewportView(tpHome);

tpMention.setBorder(null);
tpMention.setFocusable(false);
spMention.setViewportView(tpMention);
1
大丈夫、ちょっと分、私は追加します:)
追加された 著者 Rothens,
@mcfinniganこれらはすべて、EtchedBorderを持つ小さなTweetPanelを除いて、nullに設定されています
追加された 著者 Rothens,
ソースコードなしで問題を追跡するのは非常に難しいでしょう。少なくとも、あなたのビューの設定を記述する必要があります。どのレイアウトを使用していますか?ほとんどの場合、いくつかのコードが必要になります。
追加された 著者 Till Helge,
スクロールペインでパネルを作成して追加するコードを表示します。あなたはそれがどこのサイズでも設定できますか?
追加された 著者 Qwerky,
パネルに設定されている枠線は何ですか?デフォルトでは、JPanelsには、私が想起したものから、何ピクセルもの空白を境界線として残しています。
追加された 著者 mcfinnigan,

答えはありません

0