2017-10-05 16 views
0

私はJFrameを作成するためのさまざまなメソッドを呼び出してクラスを作成しようとしています。しかし、どこかで線に沿って私のJTextAreaにはメソッドを構築するときにJTextAreaがJScrollPaneに表示されない

以下

は私が構築を開始する必要があるメソッドを保持しているアプリケーションと呼ばれるクラスは、私がこのクラスを呼び出すしたいと思います...

public class App { 
    private JFrame frame = new JFrame(); 
    private JTextArea textArea = new JTextArea(); 
    private JScrollPane scrollPane = new JScrollPane(); 

    public void openJFrame(String title, int x, int y){ 
     JFrame.setDefaultLookAndFeelDecorated(true); 
     frame.setTitle(title); 
     frame.setSize(x, y); 
     frame.setResizable(false); 
     frame.setLocationRelativeTo(null); 
     frame.setVisible(true); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    } 
    public JFrame getJFrame(){ 
     return frame; 
    } 
    public void addJTextArea(JScrollPane scrollPane){ 
     scrollPane.add(textArea); 
     textArea.setLineWrap(true); 
     textArea.setEditable(true); 
     textArea.setVisible(true); 
    } 
    public JTextArea getJTextArea(){ 
     return textArea; 
    } 
    public void addJScrollPane(JFrame frame){ 
     frame.add(scrollPane); 
     scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); 

    } 
    public JScrollPane getJScrollPane(){ 
     return scrollPane; 
    } 

です...迷子にされます私の主な方法とJFrameを構築する。以下は私の試みです。

public class Main { 
    public static void main(String[] args){ 
     App app = new App(); 

     app.addJTextArea(app.getJScrollPane()); 
     app.addJScrollPane(app.getJFrame()); 
     app.openJFrame("title", 500, 500); 
    } 

何happenseのJFrameとのScrollPaneは、しかし、私のテキスト領域は、スクロールペインに追加されているように見えるdoes notの...表示されています。

私は何かを誤解しているか見落としていますか? JScrollPaneが行為/ JPanelに似て聞こえる/見えるかもしれないがそれはそれは、

答えて

2

addJTextArea方法で私はそれが(スクロールペインなしで明らかに)表示されたJScrollPaneのメソッドを使用せずに、JFrameの上に直接それを追加した場合ことは注目に値するかもしれそうではありません。したがって、JScrollPane.add()を使用してコンポーネントをスクロールペインに追加するのは当然のことですが間違っています。 JScrollPaneには、スクロールするコンポーネントが1つしかないため、add()は間違っていますが、setViewportView()を使用する方法があります。あなたが代わりにscrollPane.add()scrollPane.setViewportView()を使用するようにする方法addJTextAreaを適応させる必要があり

public void addJTextArea(JScrollPane scrollPane){ 
    scrollPane.setViewportView(textArea); 
    textArea.setLineWrap(true); 
    textArea.setEditable(true); 
    textArea.setVisible(true); 
} 
関連する問題