Я пытаюсь создать скроллер для рук, который будет прокручиваться при перетаскивании мышью через JPanel. Пока я не могу изменить мнение. Вот мой код:Java Swing Scrolling, перетаскивая мышь
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class HandScroller extends JFrame {
public static void main(String[] args) {
new HandScroller();
}
public HandScroller() {
setDefaultCloseOperation(EXIT_ON_CLOSE);
final JPanel background = new JPanel();
background.add(new JLabel("Hand"));
background.add(new JLabel("Scroller"));
background.add(new JLabel("Test"));
background.add(new JLabel("Click"));
background.add(new JLabel("To"));
background.add(new JLabel("Scroll"));
final JScrollPane scrollPane = new JScrollPane(background);
MouseAdapter mouseAdapter = new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
JViewport viewPort = scrollPane.getViewport();
Point vpp = viewPort.getViewPosition();
vpp.translate(10, 10);
background.scrollRectToVisible(new Rectangle(vpp, viewPort.getSize()));
}
};
scrollPane.getViewport().addMouseListener(mouseAdapter);
scrollPane.getViewport().addMouseMotionListener(mouseAdapter);
setContentPane(scrollPane);
pack();
setLocationRelativeTo(null);
setVisible(true);
}
}
Я думаю, что это сдвинет вид на 10 в направлениях х и у, но ничего не делает вообще. Есть ли что-то еще, что я должен делать?
Спасибо.
Или вызовите 'setPreferredSize (...);' как предложено в другом ответе: это зависит от того, что логически «сокращается» в вашем приложении, либо в окне, либо в одном компоненте пользовательского интерфейса. –