import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.event.MouseWheelEvent;
import javax.swing.BoundedRangeModel;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.border.EmptyBorder;
public class ScrollInScroll extends JFrame
{
private JPanel contentPane;
private JScrollPane scrollPane;
private JPanel panel;
private JScrollPane scrollPane_1;
private JPanel panel_1;
/**
* Launch the application.
*/
public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
try
{
ScrollInScroll frame = new ScrollInScroll();
frame.setVisible(true);
} catch (Exception e)
{
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public ScrollInScroll()
{
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
scrollPane = new JScrollPane();
contentPane.add(scrollPane, BorderLayout.CENTER);
panel = new JPanel();
panel.setPreferredSize(new Dimension(400, 600));
scrollPane.setViewportView(panel);
scrollPane_1 = new JScrollPane()
{
@Override
public void processMouseWheelEvent(MouseWheelEvent e)
{
super.processMouseWheelEvent(e);
BoundedRangeModel model=getVerticalScrollBar().getModel();
int val=model.getValue();
int min=model.getMinimum();
int max=model.getMaximum()-model.getExtent();
int scroll=e.getWheelRotation();
System.out.println(val+" "+min+" "+max+" "+scroll);
if((val==min && scroll<0) ||(val==max && scroll>0))
{
System.out.println("Event sent");
MouseWheelEvent e2=new MouseWheelEvent(scrollPane, e.getID(), e.getWhen(), e.getModifiers(), 0, 0, e.getClickCount(), e.isPopupTrigger(), e.getScrollType(), e.getScrollAmount(), e.getWheelRotation());
java.awt.Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(e2);
}
}
};
scrollPane_1.setPreferredSize(new Dimension(100, 100));
panel.add(scrollPane_1);
panel_1 = new JPanel();
panel_1.setPreferredSize(new Dimension(300, 300));
scrollPane_1.setViewportView(panel_1);
}
}