2012-01-10 34 views
1

私はjlabelに少し問題があります。ラベルが画面に対して大きくなるようなダブルを表示すると、私はスクロールバーを持っていて、それらを見たいと思っています。私は、パネル全体にスクロールバーを追加しましたが、重複したdoubleが表示されたときにはチェックしません。JLabelをJavaでスクロール

は、ここで私はたSpringLayoutを知らないので、私はとにかく、私はあなたがテキストのサイズにラベルのサイズを設定する必要があると思います、わからないんだけど、私のコード

public class OverviewPanel extends JPanel { 
    private static final long serialVersionUID = 1L; 
    private JLabel textNoNodes = new JLabel(); 
    private JLabel textNoEdges = new JLabel(); 
    private JLabel textInitial = new JLabel(); 
    private JLabel textTargets = new JLabel(); 
    private JLabel textFilename = new JLabel(); 
    private JLabel textProbabilityModelCheck = new JLabel(); 
    private JLabel textProbabilityCounterExample = new JLabel(); 
    private JLabel textNoSteps = new JLabel(); 

    public OverviewPanel() { 
     super(new SpringLayout()); 
     addRow("Number states", textNoNodes); 
     addRow("Number edges", textNoEdges); 
     addRow("Initial", textInitial); 
     addRow("Targets", textTargets); 
     addRow("Filename", textFilename); 
     addRow("Prob. model check", textProbabilityModelCheck); 
     addRow("Prob. counter example", textProbabilityCounterExample); 
     addRow("Number steps", textNoSteps); 
     SpringUtilities.makeCompactGrid(this, 8, 2, // rows, cols 
       6, 6, // initX, initY 
       6, 6); // xPad, yPad 
     setDefault(); 
    } 

    private void addRow(String text, JComponent component) { 
     JLabel l = new JLabel(text); 
     add(l); 
     l.setLabelFor(component);  
     add(component); 
    } 
    ... 
    } 
+0

あなたは再作成していますか?OverviewPanel on RuntimeまたはOverviewPanelは1回作成されます。JComponetsのサイズを変更するには、テキストの長さをピクセルに変換します。 – mKorbel

+0

最初はデフォルト値で作成され、リスナーのようにはなりません。 reload関数が明示的に呼び出されます。 – user1140737

答えて

1

です。それを得るには:

FontMetrics fm = someComponent.getFontMetrics(someFont); 
    int width = fm.stringWidth(someString); 

多分余分なスペースを追加してください。そして、実際の幅のラベル付きの容器べきスクロール...

もちろん

私はのminimumSizeの話しているか、それが無効である...

+4

これは不必要に面倒なようです。 'JLabel'自体がバリデーション時に自分の好みのサイズを計算することができます。 – trashgod

+0

ああ、ありがとう、私は知らなかった! – gotch4

3

「になるこのWindow原因使用pack()、そのサブコンポーネントの好ましいサイズとレイアウトに合うようにサイズ調整されています。 sscceも役に立ちます。

補足:DecimalFormatのインスタンスは、極端なサイズの変動を抑制するのに役立ちます。

+0

pack()がoutPutPanelにどのように適用されるかわかりません。実際にはフレームで動作しますが、これはJPanelです。 – user1140737

+1

はい、パネルを囲む 'Window'で' pack() 'を呼び出す必要があります。動的に、 'revalidate()'を使うことができます。通常は 'repaint()'が続きます。 – trashgod

+0

さらに、pack()はウィンドウを非最大化します... revalidate()+ repaint()をよく使う – gotch4

2

IMHOの場合は、変更されたJTextArea(無効、ラップ、不透明)を使用します。 スクロール、サイズ変更、またはフォントメトリックの計算が不要

+1

+1同じ行に沿って、1列の 'JTable'は' Double'型の素晴らしい結果をもたらします。 – trashgod

関連する問題