기금넷 공식사이트 - 주식 지식 - JAVA 스크롤바 자동 스크롤 문제에 대해
JAVA 스크롤바 자동 스크롤 문제에 대해
java.io.* 가져오기;
java.util.Hashtable 가져오기;
java.util.Vector 가져오기;
가져오기 javax.swing.*;
javax.swing.table.AbstractTableModel 가져오기;
java.awt.* 가져오기;
java.awt.event 가져오기. ActionEvent;
java.awt.event.ActionListener 가져오기;
java.awt.event.AdjustmentEvent 가져오기;
java.awt.event.AdjustmentListener 가져오기;
공용 클래스 T는 JFrame을 확장합니다. {
/**
* @param args
* @throws 예외
*/
public static void main(String[] args) throws Exception {
// TODO 자동 생성 메서드 스텁
new T() ;
}
JButton btnA = new JButton("add");
JTable 탭 = new JTable();
JScrollBar bar = new JScrollBar();
JScrollPane sp = new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_NEVER,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
int row = 0;
Vector< Hashtable
int 페이지;
int totalPage;
int pageSize = 20;
int displayCount;
public T() {
super("table");
this.setSize (400,400);
this.setLayout(new BorderLayout());
this.add(btnA,BorderLayout.SOUTH);
JPanel p = new JPanel(new BorderLayout());
//p.add(sp,BorderLayout.CENTER);
//p.add(bar,BorderLayout.EAST); p> p>
bar.addAdjustmentListener(new adjustmentListener() {
public void adjustValueChanged(Adjustmen
tEvent e) {
page = bar.getValue();
System.out.println(e.getAdjustmentType());
새로 고침(false) ;
}
});
bar.setUnitIncrement(1);
bar.setMinimum(1);
bar.setMaximum(1);
bar.setValue(1);
sp.setViewportView(tab);
//sp. setVerticalScrollBar(bar);
//sp.revalidate();
//bar.revalidate();
p.add(sp,BorderLayout. CENTER);
p.add(bar,BorderLayout.EAST);
this.add(p,BorderLayout.CENTER);
tab.setModel( new TModel());
btnA.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Hashtable
h.put("a", "aa");
h.put("b", "bb" );
data.add(h);
새로 고침(true);
bar.setValue(page);
bar .setMaximum(totalPage);
bar.revalidate();
bar.repaint();
}
});
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
this.setVisible(true);
}
void Refresh(boolean end) {
totalPage = data.size()/pageSize;
if(data.size()%pageSize!=0)totalPage++;
if(end) page = totalPage;
displayCount = (data.size()-(page-1)*pageSize)>pageSize?pageSize:data.size()-(page-1)*pageSize;
if(page==0)displayCount = 0;
System.out.println(displayCount);
//System.out.println(data.size( )+","+totalPage+","+page+","+displayCount)
;
tab.revalidate();
this.repaint();
}
클래스 TModel은 AbstractTableModel을 확장합니다. {
public int getColumnCount() {
return 2;
}
public int getRowCount() {
return displayCount ;
}
public Object getValueAt(int rowIndex, int columnIndex) {
int dataIndex = (page-1)*pageSize+rowIndex;
if(dataIndex>=data.size()||dataIndex<0)return null;
else {
Hashtable
스위치(columnIndex) {
케이스 0:return h.get("a");
케이스 1:return h.get ("b");
기본값: null 반환;
}
}
}
}
}
스크롤바 이벤트 모니터링에 대해 한 페이지 이상 추가할 때 잘 모르기 때문에 더 이상 하고 싶지 않고 이대로 놔두겠습니다. 데이터를 사용하려면 페이지를 변경하기 전에 두 번째 항목을 추가해야 합니다. 일반적인 효과가 원하는 것인지 확인하세요.