Tôi đã gặp một số sự cố khi sử dụng lớp JSlider - cụ thể là với các nhãn đánh dấu.Đây có phải là lỗi trong JSlider không?
Lần đầu tiên tôi sử dụng setMajorTickSpacing
và setMinorTickSpacing
mọi thứ hoạt động như mong đợi. Tuy nhiên, các cuộc gọi tiếp theo đến số setMajorTickSpacing
sẽ cập nhật các dấu tích, nhưng không cập nhật nhãn. Tôi đã viết một ví dụ đơn giản để chứng minh hành vi này:
import java.awt.event.*;
import javax.swing.*;
public class SliderTest {
public static void main(String args[]) {
JFrame frame = new JFrame();
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we) {
System.exit(0);
}
});
frame.setSize(300, 250);
JSlider slider = new JSlider(0, 100, 0);
slider.setMajorTickSpacing(10);
slider.setMinorTickSpacing(1);
slider.setPaintLabels(true);
slider.setPaintTicks(true);
slider.setMajorTickSpacing(25);
slider.setMinorTickSpacing(5);
frame.add(slider);
frame.pack();
frame.setVisible(true);
}
}
Hai đơn giản công việc ở quanh dường như giải quyết vấn đề - hoặc sử dụng slider.setLabelTable(null)
hoặc slider.setLabelTable(slider.createStandardLabels(25))
trước khi cuộc gọi thứ hai để setMajorTickSpacing
. Do đó, có vẻ như bảng nhãn không được cập nhật chính xác.
Tôi không chắc chắn đây có phải là hành vi dự định hay không. Bản năng đầu tiên của tôi là việc cập nhật khoảng cách đánh dấu cũng nên cập nhật các nhãn, nhưng cũng có các đối số để tách cả hai.
Vì vậy, tôi muốn biết nó là gì - đây có phải là lỗi trong JSlider
hoặc hành vi dự định không? Nếu nó là hành vi dự định, thì lý do nổi bật để đưa ra lựa chọn đó là gì?
trông giống như một lỗi đối với tôi - bắt tốt :-) – kleopatra
Cảm ơn bạn đã chia sẻ về sự kiện sắp tới này. –