2012-02-15 14 views
0

私はJScrollPaneを使用したいJPanelJTextAreaを持っています。私はGridBagLayoutを使用しています。私はそれを実行すると、フレームはJScrollPaneのための部屋を作るようだが、それは表示されません、任意の助けをいただければ幸いです。私はdocs.oracleのページとここでAdd JScrollPane to a JPanelを勉強しようとしていますが、何らかの理由でそれを表示することを拒否しています。JFrameのJPanelのJTextAreaのJScrollPaneに関する問題

final JTextArea test= new JTextArea(5,30); 
test.setLineWrap(true); 
test.setWrapStyleWord(true); 
test.setEditable(false); 
JScrollPane spane = new JScrollPane(test); 
spane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);   

JFrame frame = new JFrame(); 

frame.setSize(800, 250); 
frame.setTitle("test1"); 
frame.setLocation(300, 300); 
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
frame.setResizable(false); 
frame.getContentPane().add(spane); 

GridBagConstraints k = new GridBagConstraints(); 
k.gridx = 4; 
k.gridy = 5; 
a.setConstraints(spane,k); 
container.add(spane); 
+0

私はspane.setViewportView(panel)を追加します。パネルは表示されますが、JTextAreaを使用すると、同じサイズのままでテキストを塗りつぶす代わりにパネルを使用する必要があります。 – Faud

+0

すぐに役立つようにするには、[SSCCE](http: /sscce.org/)。 –

答えて

1

可変容器はJPanelですか? add()メソッドを呼び出すことを忘れてしまったと思います。しかし、以下は私の提案コードです。

import java.awt.Dimension; 
import java.awt.GridBagConstraints; 
import java.awt.GridBagLayout; 

import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 
import javax.swing.JTextArea; 
import javax.swing.ScrollPaneConstants; 
import javax.swing.SwingUtilities; 

public class MyScrollPane extends JPanel 
{ 

    public MyScrollPane() 
    { 
     GridBagConstraints k = new GridBagConstraints(); 
     k.gridx = 4; 
     k.gridy = 5; 



     final JTextArea test= new JTextArea(5, 30); 
     test.setLineWrap(true); 
     test.setWrapStyleWord(true); 
     test.setEditable(false); 

     JScrollPane spane = new JScrollPane(test); 
     spane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); 

     GridBagLayout gbl = new GridBagLayout(); 
     gbl.setConstraints(spane,k); 

     JPanel panel = new JPanel(gbl);  
     panel.add(spane); 
     add(panel); 

    } 


    private static void createAndShowGUI() 
    { 


     JFrame frame = new JFrame(); 
     frame.setSize(800, 250); 
     frame.setTitle("test1"); 
     frame.setLocation(300, 300); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setResizable(false); 
     frame.getContentPane().add(new MyScrollPane()); 



     frame.setVisible(true); 
    } 

    public static void main(String[] args) 
    { 
     SwingUtilities.invokeLater(new Runnable() { 

      @Override 
      public void run() 
      { 
       createAndShowGUI();    
      } 
     }); 
    } 

} 
+0

ありがとうございました。問題は、GridBagLayoutでは独自の制約でTextAreaを追加していたので、JScrollPanelの制約とJTextAreaの制約がありました。 JTextAreaからすべての書式を削除し、JTextAreaをGridBagLayoutのJScrollPaneだけに置き換えると、魅力的に機能しました。私は、gbl.SetConstraintsをスパン用に追加しただけで、テスト用には追加していないことが分かったときに、あなたの投稿が助けになりました。ありがとうございました! – Faud

+0

問題ありません、コーディングを楽しくしてください:-) – Jasonw

0

コードの最後の5行を削除して少し変更しました。私はうまく動作します。

public class MainFrame extends JFrame { 



private JTextArea test = new JTextArea(5, 30); 
private JScrollPane spane; 

public MainFrame() { 

    this.setSize(800, 250); 
    this.setTitle("test1"); 
    this.setLocation(300, 300); 
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    this.setResizable(false); 

    test.setLineWrap(true); 
    test.setWrapStyleWord(true); 
    test.setEditable(false); 
    spane = new JScrollPane(test); 
    spane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); 

    this.getContentPane().add(spane); 

} 
+0

あなたの答えをありがとう、私はGridBagConstraintsが必要ですが、私はGridBagLayoutを使用しています。 – Faud

+0

あなたはGridBagLayoutを使用していません。スクロールペインをフレームのコンテンツペインに追加しました。デフォルトでは、コンテンツペインはBorderLayoutを使用します。 GridBagLayoutを使用する場合は、「GridBagLayoutの使用方法」(http://docs.oracle.com/javase/tutorial/uiswing/layout/gridbag.html)を参照してください。制約。 – camickr