У меня есть JScrollPanel и JPanel, добавленные к нему.Я хотел бы нарисовать на JPanel и заставить полосы прокрутки JScrollPane появляться всякий раз, когда рисунок превышает размер панели, и иметь возможность прокручивать рисунок как по вертикали, так и по горизонтали.
Я пробовал консультироваться с различными форумамии официальные документы, и попробовал несколько вещей (установка границ, предпочтительный размер и т. д.), но ни один, кажется, не дает желаемых эффектов.
У меня есть JFrame (с GridBagLayout, кстати):
JFrame frame1 = new JFrame("Application");
frame1.setVisible(true);
frame1.setMinimumSize(new Dimension(580,620));
frame1.setResizable(false);
frame1.setLocationRelativeTo(null);
frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Соответствующие компоненты:
JPanel panel1 = new JPanel();
JScrollPane scrollPane = new JScrollPane(panel1);
frame1.add(scrollPane, gbc_panel1); //added with layout constraints
JPanel:
panel1.setBackground(Color.BLACK);
panel1.setPreferredSize(new Dimension(500,500));
panel1.setMinimumSize(new Dimension(360,360));
panel1.setMaximumSize(new Dimension(1000,1000));
JScrollPane:
scrollPane.setAutoscrolls(true);
Соответствующий код из события действия кнопки, выполняющей рисование:
Graphics g;
g = panel1.getGraphics();
panel1.paint(g);
g.setColor(new Color(0,128,0));
/* this is followed by some more code that
does the drawing of a maze with g.drawLine() methods */
Код делаетрисунок отлично, я просто не могу понять, как сделать прокрутку и динамическое изменение размера.
Буду признателен за любые полезные комментарии или замечания!
Спасибо!