Добавление кнопок в JScrollpane - PullRequest
1 голос
/ 09 августа 2011

Я использую Java и SWING, и у меня есть полоса прокрутки с добавленным к ней довольно большим изображением, которое сейчас работает просто отлично, что означает, что функция прокрутки работает так, как задумано. Однако в разных местах на этом изображении мне нужно добавить jButtons и быть в состоянии воздействовать на щелчки мыши на этих

На данный момент я получил следующий фрагмент кода: (фрагменты, дайте мне знать, если вам нужно что-то еще)

jButton1 = new JButton("CLICK");
jButton1.setBounds(0, 0, 100, 100);

После этого я добавляю свой actionlistener, который работает нормально, затем я создаю свою полосу прокрутки с помощью img:

BufferedImage wp = ImageIO.read(new File("Main_background.jpg"));

JLabel image = new JLabel(new ImageIcon(wp));

scrollerContainer.setSize(screen_width-50,screen_height-50);
scrollerContainer.setLayout(new BorderLayout());

Добавить кнопку в мой скроллерPane:

scroller.add(jButton1);

И наконец добавляет мою область прокрутки в мой контейнер:

scrollerContainer.add(scroller);

Что происходит, так это то, что кнопка появляется в довольно неожиданное время и в разных местах. Во-первых, он не отображается все время, кажется, что это происходит, когда java вызывает перерисовку / рисование, а во-вторых, кнопка «прокручивается» с помощью моей полосы прокрутки, что означает, что если мне нужно изображение в крайнем правом положении, кнопка все равно будет показать, даже если он должен отображаться только в 0,0. Я думаю, что я не должен добавлять jButton к моему объекту скроллера, но к чему-то еще? Но я не могу понять, что.

Надеюсь, что проблема имеет смысл, и кто-то может мне помочь :)

1 Ответ

2 голосов
/ 10 августа 2011

Никогда не следует добавлять компонент непосредственно на панель прокрутки.

Кнопка должна быть добавлена ​​к метке, отображаемой в окне просмотра области прокрутки.

В будущем опубликуйте свой SSCCE с вопросом, поэтому нам не нужно угадывать.

...