Полосы прокрутки настраиваются при масштабировании с использованием расширений Jxlayer и PBar
Я попытался использовать расширения Jxlayer и PBar (используя ответ MadProgrammer отсюда), чтобы добавить возможность масштабирования в мою JPanel, которая содержится в JScrollPanel. Сам масштаб работает нормально, но когда увеличенная панель становится больше, чем содержащий JFrame, полосы прокрутки не регулируются и остаются неактивными. Вот мой код:
JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
JPanel topPanel = new JPanel();
Integer[] zoomList = {50, 75, 100, 125, 150, 200};
JComboBox<Integer> zoomBox = new JComboBox<>(zoomList);
zoomBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
int value = (int) zoomBox.getSelectedItem();
double scale = value / 100d;
transformModel.setScale(scale);
}
});
topPanel.add(zoomBox);
Panel centerPanel = new TestPane();
JScrollPane scrollPane = new JScrollPane(synopticPanel);
scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
scrollPane.getViewport().setOpaque(false);
scrollPane.setOpaque(false);
frame.add(topPanel, BorderLayout.NORTH);
frame.add(synopticPanel);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
и в классе Testpane
public class TestPane extends JPanel {
private JLayer<JComponent> layer;
private JPanel content;
public TestPane() {
content = new JPanel();
content.setLayout(null);
//Adding some components
transformModel = new DefaultTransformModel();
transformModel.setScaleToPreferredSize(true);
layer = TransformUtils.createTransformJLayer(content, transformModel, null);
setLayout(new BorderLayout());
add(layer);
}
Спасибо за помощь