2016-09-06 3 views
1

タイトルから分かるように、JPanelにペイントしてJScrollpane内に表示したいので、JPanelの内容が大きい場合はスクロールバーが表示されます。JPanelでのペイントとJScrollPaneへの追加

import java.awt.Graphics; 
import java.awt.Graphics2D; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 

public class Main extends JFrame{ 

DrawPanel dp; 
JScrollPane jsp; 

public Main(){ 
    setTitle("Test"); 
    setSize(400,400); 
    setDefaultCloseOperation(EXIT_ON_CLOSE); 
    dp = new DrawPanel(); 
    jsp = new JScrollPane(dp); 
    getContentPane().add(jsp); 
} 

public class DrawPanel extends JPanel{ 

    @Override 
    protected void paintComponent(Graphics grphcs) { 
     super.paintComponent(grphcs); 
     Graphics2D g2d = (Graphics2D) grphcs; 
     g2d.drawString("..long text....long text....long text....long text....long text....long text....long text....long text..", 10, 20); 
    } 

} 

public static void main(String[] args) { 
    new Main().setVisible(true); 
} 

} 

Current Output

予想される出力::私がすることによってこれを達成しようとしたウィンドウを長いテキストと水平方向のスクロールバーで。

私はgetPreferredSizeメソッドをオーバーライドしてみましたが(他の質問のいくつかの回答が示唆されています)、動作していないようです。 また、jscrollpaneに追加されたパネルにラベルやボタンがあるのにスクロールバーが(jscrollpaneを使用して)表示される理由を説明することはできますが、上記の場合は機能しません。どんな助けでも大歓迎です。

+0

jpanelのサイズを変更する必要があります。 – matt

+0

私はDrawPanelでsetSizeメソッドをオーバーライドすることで同様に試みましたが、次の出力があります。[link](http://imgur.com/a/28xTW) –

答えて

0

JPanelのサイズは、サイズの設定や上書きによって変更することができます。

Dimension d = new Dimension(800, 800); 
    dp.setMinimumSize(d); 
    dp.setMaximumSize(d); 
    dp.setPreferredSize(d); 

私がそうするとスクロールバーが表示されます。

+0

なぜ私はminを設定することを決して考えなかったのですか最大サイズです。ありがとう、それは動作します。 –

+0

ええ、コンポーネントのサイズを変更する方法はたくさんあります。 – matt

関連する問題