티스토리 뷰
TextArea를 Scrollpane에 사용하여
채팅 프로그램을 사용하던중,
채팅이 업데이트 될때마다 스크롤이 위로 올라가서 보기 불편한점을 개선할방법을 알아냈습니다.
swing scrollpane 휠 자동다운
마우스 휠을 굴릴때는 스크롤바가 움직이는 것을 허용한다
scrollPane.addMouseWheelListener(new MouseWheelListener() {
public void mouseWheelMoved(MouseWheelEvent arg0) {
scrollpanemove=true;
}
});
스크롤 판넬의 세롯크롤 바의 수정이벤트 리스너를 추가한다
scrollPane.getVerticalScrollBar().addAdjustmentListener(new
AdjustmentListener() {
@Override
public void adjustmentValueChanged(AdjustmentEvent arg0) { //
수정리스너에서 변수(휠의 길이,위치)가 변경될시 메소드 작성
// TODO Auto-generated method stub
if(scrollpanemove){ //만약 스크롤 무브가 허용되있을시
scrollpanemove=false; //밑으로 내리는 것을 하지않고, 비허용으로 바꾼다.
}else{
JScrollBar src = (JScrollBar)arg0.getSource();
src.setValue(src.getMaximum());
}
}
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 |
public void go(){
JFrame main = new JFrame("");
main.getContentPane().setLayout(null);
textArea = new JTextArea();
scrollPane = new JScrollPane(textArea, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);;
scrollPane.addMouseWheelListener(new MouseWheelListener() {
public void mouseWheelMoved(MouseWheelEvent arg0) {
scrollpanemove = true;
}
});
scrollPane.getVerticalScrollBar().addAdjustmentListener(new
AdjustmentListener() {
@Override
public void adjustmentValueChanged(AdjustmentEvent arg0) {
if(scrollpanemove){ //만약 스크롤 무브가 허용되있을시
scrollpanemove=false; //밑으로 내리는 것을 하지않고, 비허용으로 바꾼다.
}else{
JScrollBar src = (JScrollBar)arg0.getSource();
src.setValue(src.getMaximum());
}
}
});
main.add(scrollPane);
main.setVisible(true);
} |
cs |
'프로그래밍 > java' 카테고리의 다른 글
Java - TCP/IP Socket (0) | 2015.07.10 |
---|---|
java - JMF 다운로드 (0) | 2015.07.06 |
Java잡지식 - 네트워킹 (0) | 2015.05.17 |
Java - 객체지향(7) package & import (0) | 2015.04.13 |
Java - JOptionpane 입력받기 - 2 (0) | 2015.04.05 |
댓글