[英]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.