簡體   English   中英

如何在JScrollPane內部的JTextArea中添加文檔偵聽器?

[英]How to add an Document Listener to a JTextArea inside of a JScrollPane?

我試圖將文檔偵聽器添加到JTextArea,以便當用戶按Enter時它將在最后一行/自新行開始的字符中讀取。

我嘗試了以下代碼,但是Eclipse不喜歡display.getDocument().addDocumentListener(new AL()); 它說

不能訪問類型為ScrollingTextArea的封閉實例。 必須使用ScrollingTextArea類型的封閉實例(例如xxnew A(),其中x是ScrollingTextArea的實例)對分配進行限定。

如何將動作偵聽器添加到JTextArea?

碼:

package guis;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.ScrollPaneConstants;
import javax.swing.border.EtchedBorder;
import javax.swing.border.TitledBorder;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;

public class ScrollingTextArea {

    public static void main ( String[] args )
    {
        JPanel middlePanel = new JPanel ();
        middlePanel.setBorder(new TitledBorder(new EtchedBorder (), "Display Area" ) );

        // create the middle panel components

        JTextArea display = new JTextArea(16,58 );
        JScrollPane scroll = new JScrollPane(display);

        display.getDocument().addDocumentListener(new AL());
        scroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);

        //Add Textarea in to middle panel
        middlePanel.add(scroll);

        JFrame frame = new JFrame();
        frame.add( middlePanel );
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
    public class AL implements DocumentListener {


        @Override
        public void insertUpdate(DocumentEvent e) {
            // TODO Auto-generated method stub

        }

        @Override
        public void removeUpdate(DocumentEvent e) {
            // TODO Auto-generated method stub

        }

        @Override
        public void changedUpdate(DocumentEvent e) {
            // TODO Auto-generated method stub

        }
    }
}

嵌套AL必須是靜態的。 除非出於某種原因需要導出該類,否則它可能應該是private

private static class AL implements DocumentListener {…}

AL創建一個單獨的類

要么

在沒有public修飾符的情況下,在ScrollingTextArea類之外定義AL類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM