package scroll;
/*
* ScrollTest.java
*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.Timer;
import javax.swing.event.*;
public class ScrollTest extends JPanel implements MouseListener, ActionListener {
private JViewport viewport;
private JComponent scrollable;
private JButton bt1;
private JButton bt2;
private Timer timer1;
private Timer timer2;
private int scrollDelay = 50;
private int scrollSchritt = 10;
private Point viewPosition = new Point(0, 0);
public ScrollTest() {
setBackground(Color.YELLOW);
scrollable = getScrollable();
viewport = new JViewport();
viewport.setView(scrollable);
viewport.setPreferredSize(new Dimension(201, 81));
viewport.setViewPosition(viewPosition);
bt1 = new JButton("<");
bt2 = new JButton(">");
add(bt1);
add(bt2);
bt1.addMouseListener(this);
bt2.addMouseListener(this);
add(viewport);
timer1 = new Timer(scrollDelay, this);
timer2 = new Timer(scrollDelay, this);
}
@Override
public void mouseClicked(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
Object source = e.getSource();
if (source == bt1) {
timer1.start();
}
if (source == bt2) {
timer2.start();
}
}
@Override
public void mouseReleased(MouseEvent e) {
Object source = e.getSource();
if (source == bt1) {
timer1.stop();
}
if (source == bt2) {
timer2.stop();
}
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
@Override
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
if (source == timer1) {
viewPosition.x -= scrollSchritt;
if (viewPosition.x < 0) {
viewPosition.x = 0;
}
viewport.setViewPosition(viewPosition);
// scrollable.revalidate();
}
if (source == timer2) {
viewPosition.x += scrollSchritt;
if (viewPosition.x > scrollable.getWidth() - viewport.getWidth()) {
viewPosition.x -= scrollSchritt;
}
viewport.setViewPosition(viewPosition);
// scrollable.revalidate();
}
}
private JComponent getScrollable() {
JComponent result = null;
JLabel label = new JLabel("Diesen Text kannst du mit den beiden Buttons nach links oder rechts scrollen.");
result = label;
// JTable table = new JTable(4, 6);
// table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
// JPanel borderPanel = new JPanel(new BorderLayout());
// borderPanel.setBorder(BorderFactory.createLineBorder(table.getGridColor()));
// JPanel panel = new JPanel(new BorderLayout());
// panel.add(table.getTableHeader(), BorderLayout.NORTH);
// panel.add(table);
// borderPanel.add(panel);
// result = borderPanel;
return result;
}
public static void main(final String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JFrame frame = new JFrame("");
frame.setSize(300, 200);
frame.setResizable(false);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(new ScrollTest());
frame.setVisible(true);
}
});
}
}