0

があり、 のテキストを含むJTextPaneを返すメソッドがあります。私は何週間もこれを修正しようとしてきました。メソッドは空白行を返します。ドキュメントの長さを取得しようとしましたが、0 が返されます。StringJTextPanegetText()

コードは次のとおりです。

import java.awt.*;
import javax.swing.*;

public class CodeTabs extends JTabbedPane {
    private JTextPane codearea;
    private JScrollPane scroll;

    public CodeTabs() {
        setTabPlacement(JTabbedPane.BOTTOM);

        codearea = new JTextPane();

        scroll = new JScrollPane(codearea, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        scroll.setPreferredSize(new Dimension(Toolkit.getDefaultToolkit().getScreenSize()));

        addTab("Code", scroll);
    }

    public String getCode() {
        String s = codearea.getText();

        System.out.println(s);

        return s;
    }
}
4

2 に答える 2

2

私はあなたのコードを取得し、メソッドをトリガーするメイン メソッドとボタンを追加しましたgetCode()。すべてが期待どおりに機能します。テキスト領域に何かを入力すると、ボタンを押すと印刷されます。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class CodeTabs extends JTabbedPane {
  private JTextPane codearea;
  private JScrollPane scroll;

  public CodeTabs() {
    setTabPlacement(JTabbedPane.BOTTOM);

    codearea = new JTextPane();

    scroll = new JScrollPane(codearea, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    scroll.setPreferredSize(new Dimension(  300,300 ));

    JPanel panel = new JPanel( new BorderLayout() );
    panel.add( scroll, BorderLayout.CENTER );
    JButton comp = new JButton( "Print text" );
    comp.addActionListener( new ActionListener() {
      @Override
      public void actionPerformed( ActionEvent e ) {
        getCode();
      }
    } );
    panel.add( comp, BorderLayout.SOUTH );

    addTab( "Code", panel );
  }

  public String getCode() {
    String s = codearea.getText();

    System.out.println(s);

    return s;
  }

  public static void main( String[] args ) {
    EventQueue.invokeLater( new Runnable() {
      @Override
      public void run() {
        JFrame frame = new JFrame( "TestFrame" );
        frame.getContentPane().add( new CodeTabs() );
        frame.setDefaultCloseOperation( WindowConstants.EXIT_ON_CLOSE );
        frame.pack();
        frame.setVisible( true );
      }
    } );
  }
}

注: を拡張する必要はありませんJTabbedPane。拡張する代わりに使用します(この回答に投稿されたコードに残して、コードとできるだけ一致させました)

于 2012-11-22T20:21:04.650 に答える
0

このようにしてください: -

codearea.getDocument().getText(0, codearea.getDocument().getLength());
于 2012-11-22T20:07:33.950 に答える