JScrollPane
내에서 JTable
이 있는데, enabled(false)
을 사용하지 못하도록 설정되어 있지만 롤오버에서 손 모양 커서로 변경하고 싶습니다. 나는 단순히 수동으로 테이블의 커서를 설정 시도 :비활성화 된 손 모양 커서 JTable
table.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
그리고 JTable의의 getCursor() 메소드를 재정의하는 시도 :
JTable table = new JTable(tableModel){
@Override
public Cursor getCursor() {
return Cursor.getPredefinedCursor(Cursor.HAND_CURSOR); //DOESNT WORK
}
};
도 기술은 작동하지만. 한 가지 접근법은 전체 테이블에 mouseMotionListener
을 추가하는 것입니다. 그러나이 문제는 실제 응용 프로그램에서 테이블에있는 단추를 누르면 'JOptionpane'이 표시됩니다. 사용자가 커서를 테이블 밖으로 이동하고 'JOptionPane'을 닫으면 버그가 발생할 수 있습니다. 물론 'MouseMotionListener'는 과도한 ..?
메서드를 JTable
(그리고 그 이후는 Component
)으로 재정의하는 방법을 살펴 보았지만 손 모양 커서가 표시되지 않도록하는 코드를 찾으려고 고심하고 있습니다. 어떤 도움을 많이 주시면 감사하겠습니다! 아래 코드 :
import java.awt.*;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
public class TableCursorTest {
public TableCursorTest(){
JFrame frame = new JFrame();
JPanel panel = new JPanel(new GridBagLayout());
GridBagConstraints constraints = new GridBagConstraints();
String[] headers = {"Items"};
Object[][] data = new Object[][]{{"item 1"},{"item 2"}};
DefaultTableModel tableModel = new DefaultTableModel(data, headers);
@SuppressWarnings("serial")
@Override
public Cursor getCursor() {
return Cursor.getPredefinedCursor(Cursor.HAND_CURSOR); //DOESNT WORK
}
};
JScrollPane scrollPane = new JScrollPane(table);
table.setEnabled(false);
table.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); //DOESNT WORK
constraints.gridx = 0;
constraints.gridy = 0;
constraints.weightx = 0;
constraints.weighty = 0;
panel.add(scrollPane, constraints);
frame.setContentPane(panel);
frame.setPreferredSize(new Dimension(500,500));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args){
new TableCursorTest();
}
}
UPDATE : 죄송합니다, 질문이 몇 가지 정보를 부족 : 테이블은 항상 스크로 르페 그래서 스크롤의 손 모양 커서를 설정 기입하지 않는 것은하지 않는 선 행을 통해 손 커서 발생 있다. 가능한 경우 손 모양 커서는 표의 행 위에 만 나타나야합니다. 당신의 의도가 disable editing
에 경우
안녕하세요, Andrew, 답변 해 주셔서 감사합니다. Scrollpane.setCursor는 handCursor를 성공적으로 변경하지만 커서 전체를 변경합니다. 테이블을 채우기에 충분하지 않은 jtable 행에 대해서만 손 모양 커서를 놓기를 원합니다. – Hungry
* "jtable의 행 위에 손 커서 만 있으면됩니다."* 까다 롭고 까다 롭습니다. ;) –
하하 죄송합니다! 나는 또한 scrollPane.getViewport(). getComponent (0) .setCursor (Cursor.getPredefinedCursor (Cursor.HAND_CURSOR));를 시도했지만 아무런 영향을주지 않는다. – Hungry