Java Swing - 如何檢測(cè)JScrollPane的滾動(dòng)條是否會(huì)改變可見性
我們想知道如何檢測(cè)JScrollPane的滾動(dòng)條是否會(huì)改變可見性。
import java.awt.BorderLayout;
import java.io.UnsupportedEncodingException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.SwingWorker;
public class Main {
public static void main(String[] args) throws UnsupportedEncodingException {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel(new BorderLayout());
JPanel buttons = new JPanel();
JScrollPane pane = new JScrollPane(buttons);
pane.getViewport().addChangeListener(
e -> {
System.out.println("Change in " + e.getSource());
System.out.println("Vertical visible? "
+ pane.getVerticalScrollBar().isVisible());
System.out.println("Horizontal visible? "
+ pane.getHorizontalScrollBar().isVisible());
});
panel.add(pane);
frame.setContentPane(panel);
frame.setSize(300, 200);
frame.setVisible(true);
SwingWorker<Void, Void> worker = new SwingWorker<Void, Void>() {
@Override
protected Void doInBackground() throws Exception {
for (int i = 0; i < 10; i++) {
Thread.sleep(800);
buttons.add(new JButton("Hello " + i));
buttons.revalidate();
}
return null;
}
};
worker.execute();
}
}