我有一個文本區域,每當滾動條滾動時,我想調用一個方法。在什麼情況下我應該調用這個方法?我試過了:JTextArea滾動條事件
private void jScrollPane1MouseReleased(java.awt.event.MouseEvent evt) {
//execute();
System.out.println("Scroller Moved");
}
我有一個文本區域,每當滾動條滾動時,我想調用一個方法。在什麼情況下我應該調用這個方法?我試過了:JTextArea滾動條事件
private void jScrollPane1MouseReleased(java.awt.event.MouseEvent evt) {
//execute();
System.out.println("Scroller Moved");
}
你想在JScrollBar上使用AdjustmentListener
(選擇你想聽的移動)。這是一個在垂直欄上收聽的例子。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class TempProject extends JPanel{
public static void main(String args[]) {
EventQueue.invokeLater(new Runnable()
{
public void run()
{
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
panel.setPreferredSize(new Dimension(300, 2000));
JScrollPane pane = new JScrollPane(panel);
pane.setPreferredSize(new Dimension(400, 300));
pane.getVerticalScrollBar().addAdjustmentListener(new AdjustmentListener(){
@Override
public void adjustmentValueChanged(AdjustmentEvent e) {
System.out.println("Hi Mom!");
}});
frame.setContentPane(pane);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}
您應該使用mouselistener事件來代替。
如果您想了解更多關於它檢查出來這裏 - http://docs.oracle.com/javase/tutorial/uiswing/events/mouselistener.html
OP已經在使用mouseListener :-)所顯示的代碼片段由可視化構建器創建,旨在通過客戶端充實碼。 – kleopatra
使用的mouseClicked方法,然後使用的getX()和的getY()獲取座標,然後用if測試,測試,看看座標是否在JScrollPane的維度內。只記得實現鼠標器並添加所有繼承的抽象方法:)
ehh ..不完全是:片段(由可視構建器生成,可能是NetBeans)是由JScrollPane上自動安裝的MouseListener發出的回調消息。這意味着事件在scrollPane的維度內是_always_。因此它很少會被調用,因爲它的大部分區域都被其他組件填充。 – kleopatra
你試圖實現什麼***功能?向我解釋你可能會向最終用戶解釋的方式。想要在自己的代碼中訪問與滾動相關的方法,對它有着極其糟糕的代碼味道。 –
什麼用於與鍵盤進行交互,例如使用箭頭鍵? – Robin
@AndrewThompson Nick Rippe解決方案非常完美。當jtextarea中的行號發生變化時,我想要一個事件。 Robin,Nick Rippe解決方案正在照顧我的目的,因爲我輸入密鑰或通過箭頭鍵移動光標 – FirmView