Index: trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceDialog.java	(revision 2027)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceDialog.java	(revision 2028)
@@ -7,4 +7,6 @@
 import java.awt.GridBagLayout;
 import java.awt.ScrollPane;
+import java.awt.event.MouseWheelEvent;
+import java.awt.event.MouseWheelListener;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -33,5 +35,5 @@
  * @author imi
  */
-public class PreferenceDialog extends JTabbedPane {
+public class PreferenceDialog extends JTabbedPane implements MouseWheelListener {
 
     private final static Collection<PreferenceSettingFactory> settingsFactory = new LinkedList<PreferenceSettingFactory>();
@@ -116,4 +118,6 @@
     public PreferenceDialog() {
         super(JTabbedPane.LEFT, JTabbedPane.SCROLL_TAB_LAYOUT);
+
+        super.addMouseWheelListener(this);
 
         for (PreferenceSettingFactory factory:settingsFactory) {
@@ -174,3 +178,23 @@
         settingsFactory.add(new AdvancedPreference.Factory());
     }
+
+    /**
+     * This mouse wheel listener reacts when a scroll is carried out over the
+     * tab strip and scrolls one tab/down or up, selecting it immediately.
+     */
+    public void mouseWheelMoved(MouseWheelEvent wev) {
+        // Ensure the cursor is over the tab strip
+        if(super.indexAtLocation(wev.getPoint().x, wev.getPoint().y) < 0)
+            return;
+
+        // Get currently selected tab
+        int newTab = super.getSelectedIndex() + wev.getWheelRotation();
+
+        // Ensure the new tab index is sound
+        newTab = newTab < 0 ? 0 : newTab;
+        newTab = newTab >= super.getTabCount() ? super.getTabCount() - 1 : newTab;
+
+        // select new tab
+        super.setSelectedIndex(newTab);
+    }
 }
