JScrollPane и графика. Полоса прокрутки не работает - Java
Формулировка задачи:
Здравствуйте!
Я отрисовываю графические обьекты и вставляю их в JScrollPane. Но полосы прокрутки при этом не появляются. То есть то, что выходит за рамки JScrollPane, не показывается. Если вставляю что-нибудь из swing, например JLabel очень длинную, всё работает. Но как только что-то из графики, не идёт.
Вот такой примерно код:
Всё изображается, (в данном случае длинная полоса) но прокрутка не работает. То есть невозможно всю полосу полностью просмотреть.
public class SelectionTask { public void makeShape (Graphics g) { Graphics2D g2 = (Graphics2D)g; Line2D line2 = new Line2D.Double(300,230,1800, 230); // очень длинная полоса g2.draw(line2); } } public class ShapeExample extends JPanel { public void paintComponent(Graphics g) { super.paintComponent(g); new SelectionTask(200, 100, 240, 121, 4).makeShape(g); } public static void main(String[] args) { JFrame frame = new JFrame(); frame.setSize(500, 400); JScrollPane pane = new JScrollPane(new ShapeExample()); frame.getContentPane().add(pane); frame.setVisible(true); } }
Решение задачи: «JScrollPane и графика. Полоса прокрутки не работает»
textual
Листинг программы
private static class GraphPane extends JPanel { protected void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2 = (Graphics2D)g; Line2D line2 = new Line2D.Double(300,230,1800, 230); // очень длинная полоса g2.draw(line2); } } public MyFrame() { JPanel ctx = new JPanel(new BorderLayout()); this.setContentPane(ctx); GraphPane gp = new GraphPane(); JScrollPane scroller = new JScrollPane(gp); ctx.add(scroller, BorderLayout.CENTER); // ctx.setPreferredSize(new Dimension(100, 100)); gp.setPreferredSize(new Dimension(2000, 2000)); // this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д