Detecting "Shift" + "MouseClick" on a JButton ....

Posted on 2000-02-24
Medium Priority
Last Modified: 2008-03-17
Is there a way to detect if the "Shift" key is pressed while clicking on a JButton?  If so, how can I do this?
Question by:bjg
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 2

Expert Comment

ID: 2555733
use the keyUp method to detect when shift is pressed. Set a boolean to true when shift is pressed down in keyDown and false then it is let up again.
I don't know if seeing if shift will work when pressing it using the variable key, but you could try evt.SHIFT
So you might want something like:

public boolean keyUp(Event evt, int key) {
if (evt.SHIFT) Shiftdown=true;

public boolean keyDown(Event evt, int key) {
if (evt.SHIFT) Shiftdown=false;

then in the action listener for the button, do what ever the button makes happen only if Shiftdown=true.

If evt.SHIFT doesn't work, make sure the form has the focus (put requestFocus() in the init() statement) and if that doesn't work, try seeing if the variable key changes when you hit shift.
Tho do that put a line like:
System.out.println(""+key); in the keyUp or keyDown method.

Accepted Solution

billy_98_1 earned 300 total points
ID: 2555742
Sorry, I clicked 'comment' instead of 'answer'.

Expert Comment

ID: 2555766
This will capture the shift click...

import javax.swing.*;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
import java.awt.*;
import java.applet.Applet;

public class tt extends Applet implements MouseListener {
  boolean setColour = false;

  JButton b = new JButton("Shift click to Turn me Blue");

  public void start() {


  public void mousePressed(MouseEvent e) { }
  public void mouseEntered(MouseEvent e) { }
  public void mouseExited(MouseEvent e) { }
  public void mouseReleased(MouseEvent e) { }
  public void mouseClicked(MouseEvent e) {
    if (e.isShiftDown()) {
      if (!setColour) {
        b.setText("Shift click to Turn me Grey");
        setColour = true;
      } else {
        setColour = false;
        b.setText("Shift click to Turn me Blue");

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!


Expert Comment

ID: 2555783
This is a slightly different approach. The JButton registers itself with a mouselistener (in this case the tt class) and then the processing to deal with the shift click is done in there in the mouseClicked event.

In this case a normal click does nothing, but a shift click changes the button colour.

If you do it the way billy_98_1 suggests then it is more difficult to figure out when the shift key is pressed and mouse button are pressed together.

This way is just a bit easier...

Expert Comment

ID: 2555788
Finally, use this HTML file to open the above code as an Applet in appletviewer:

<applet codebase="." code=tt.java width=500 height=500>

Expert Comment

ID: 2634342
I'm sorry you clicked answer instead of comment...

Featured Post

What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction Java can be integrated with native programs using an interface called JNI(Java Native Interface). Native programs are programs which can directly run on the processor. JNI is simply a naming and calling convention so that the JVM (Java…
Introduction This article is the last of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article covers our test design approach and then goes through a simple test case example, how …
Viewers will learn about basic arrays, how to declare them, and how to use them. Introduction and definition: Declare an array and cover the syntax of declaring them: Initialize every index in the created array: Example/Features of a basic arr…
How to fix incompatible JVM issue while installing Eclipse While installing Eclipse in windows, got one error like above and unable to proceed with the installation. This video describes how to successfully install Eclipse. How to solve incompa…
Suggested Courses
Course of the Month10 days, 1 hour left to enroll

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question