I have a problem with my software developped in Java. The user has to write a text in a JtextPane. When there's no time left for him to write, a pop-up appears.
The only problem is : if the user is writting when the message pops up, the pop-up disappears because the key pressed validate the message.
Is there's anyway I can disable this fonction ?
I use this to create the MessageDialog :
JOptionPane.showMessageDialog(null,
new UTIL_LireFichierTXT().getText(MessageTempsImparti)
,new UTIL_LireFichierTXT().getText(MessageAttention),JOptionPane.WARNING_MESSAGE);
Thanks for reading.
Disabling normal application behaviour (such as manipulation of dialogs with keys) is not a great idea. It confuses a lot of users, who have been groomed to expect certain core functionality in GUIs, plus it can prove a real problem for users with disabilities, who may need to use keyboard navigation in place of a mouse.
I would suggest you consider a different method of telling the user the time is up. Perhaps a banner label appearing on the application somewhere?
Is there a way to control the keyboard in java without using awt.robot?
Unfortunatly the robot class cannot press every key on an azerty layout.
And I need one of them.
The only solution seems to code the equivalent of robot in C then use java to
call it.
Thanks.
Did you know that you can type any ascii character by
Holding alt
Typing the ascii code for the character on the NUMBERPAD
Releasing alt
You could get the robot to do this for special characters. Not sure if that solves your problem.
Eg: hold ALT, type 1234 on the numberpad, release ALT types Ӓ
According to Java Robot with Azerty vrs Qwerty the Window Licker library (https://code.google.com/p/windowlicker/) supports different keyboard layouts. This might help you.
There is currently a bug in JavaFX (https://javafx-jira.kenai.com/browse/RT-30669, free registration required) which makes it so that if you are using an azerty keyboard layout and specify an accelerator with Z in it, on Mac it only fires when typing a W. I need to work around this bug as I need to release my product now.
So I'd like to detect Mac+Azerty and if so change the accelerator to using W. I know how to detect Mac, and I know how to detect the keyboard's locale (using InputContext#getLocale()) but how do I know if the current locale has an azerty keyboard layout? Do I have to check against a hardcoded list of known locales which use an azerty layout? If so, where would I find such a list?
Just don't "check against a hardcoded list of known locales" as many people may have a french locale with a keyboard that does not matches the locale, if they bought their computer in the US and use it in quebec with a french interface. I am personally worst, as I'm having a dvorak layout... ;-) And I just want to imagine how many variants of spanish-based layout there may be available...
My best and more portable advice would be to not try to detect something that is hardly detectable, but give some "default" keyboard mappings for (e.g.) qwerty keyboards that would work for most of your userbase, and create a configuration panel that enables your user to change the key mapping for your application by typing the new keys, if they don't like the defaults.
edit:
ah... that can be indeed a different problem... maybe you could anyway make a combobox preference for all non-us keyboard on macosx that has keys with a modifier that get changed?
To answer your question more "straightforwardly", here are a few results I found on google:
http://www.coderanch.com/t/412482/java/java/Finding-language-setting-locale-keyboard
http://www.java-gaming.org/index.php/topic,23501.
both lead towards java.awt.im.InputContext:
InputContext context = InputContext.getInstance();
System.out.println(context.getLocale().toString());
I never tried this in java, so I can't help you more than with my google-fu, but I really hope this helps :-)
How can i disable such keys and their combinations as, for example, Alt ; Alt + F4 and others in my Java AWT application?
E.g. my KeyboardListener should handle that keys as 'usual' keys and combinations without closing window or entering window menu.
One way is to create a program in "kiosk mode", something that requires more than Java to achieve (such as JNA or JNI). If you google this or search this site for this, you'll find out more about it. If I were using your code, though, I'd be very frustrated and perhaps angry, unless this were being run on a dedicated kiosk terminal.
Edit: Another option is as per this thread: java-full-screen-program-swing-tab-alt-f4:
window.setExtendedState(Frame.MAXIMIZED_BOTH); //maximise window
window.setUndecorated(true); //remove decorations e.g. x in top right
window.setAlwaysOnTop(true);
Edit 2: and this brute-force method: Remove the possibility of using Alt-F4 and Alt-TAB in Java GUI
Found this solution:
for Tab - use Frame.setFocusTraversalKeysEnabled(false);
for Alt - add keyEvent.consume(); at the end of each key
event handling code block
Then, to find out if Alt or Ctrl key is pressed - use keyEvent.isAltDown() and keyEvent.isControlDown() methods of keyPressed or keyReleased events.
Thanks, #Hovercraft , for your quick response!
I am trying to type in a pair of angle brackets in Eclipse, like "<>". However it shows up as a single quotation and a dot, like "'.". I tried a couple of times and found out that the angle bracket is actually located at back-slash's position.
Why is this happening? How can I change it back?
Thanks in advance.
Xi
I think this has to do with an annoying feature of Windows - I've had something similar for a long time in different programs (not just Eclipse).
If you have a non-English version of Windows, you probably have different keyboard layouts installed (for example, I have a Dutch and a US English layout installed by default). The key combination Alt + Shift switches between keyboard layouts. It's very annoying and it's a really strange feature - as if the keys on someone's keyboard would suddenly change?!
You can go into Control Panel, Keyboard Settings and remove the layouts that you don't want to use. (I removed the Dutch layout so there's only US English left), so that you can't switch to the wrong layout by accident again. Or you can go to the Advanced Key Settings in Keyboard Setting and turn off the key combination.
Hit Alt + Shift. If you don't want to spend time removing keyboard layouts like Jesper suggested, just hit Alt + Shift until you get the layout you need. It usually doesn't take more than a couple times. :)
I Am Doing This Via Windows Control Panel.
First time when changing font.I am restart Eclipse.(No solution than that to save my time) and then do this.
In windows 7 the language bar uses the LEFT ALT + SHIFT key sequence to change languages, so you can quickly change the language say to Spanish when writing a mail.
This sequence conflicts with many Eclipse shortcuts that use ALT + SHIFT, like rename!
You can remove the OS's setting by control panel > keyboards and languages > change keyboards > advanced key settings.
Julio
... Maybe you have your keyboard set for a different Locale(country)?
Also, you would probably be better asking this on SuperUser
Actually i think this must be something with Java SDK, because im having the same problem with IntelliJ. For example, in
public class MainActivity extends Activity {
/**
* Called when the activity is first created.
*/
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ImageView iv
}
}
when i try to complete this snippet, with
ImageView iv = (ImageView) findViewById(R.id.iv_imagem);
after "iv" the character set in my keyboard is screwed, and instead of a QWERTY keyboard (i have portuguese language defined, and dont have other keyboards in control pannel) i have a AZERTY
in windows, other applications are is still normal
I had the same problem. I was editing Java code in Eclipse and the keyboard layout suddenly changed. On my windows taskbar I have a keyboard icon and I used it to change the keyboard layout between United States-International and Dutch. That did not solve my problem. My problem was solved when I had restarted Eclipse.
Keyboard handling of Eclipse is not perfect indeed: it confuses ctrl-alt with "altgr"!
So for example with Hungarian keyboard layout you cannot enter character '&', as it requires pressing altgr-C - but ctrl-alt-C was set to "SVN commit" by default...
(of course no problem in un-binding that combination in Eclipe, but it was not straightforward that ctr-alt conflicts with altgr, so what to look for)
I guess this probably happens if your script in Eclipse uses Robot class or any statements that use the combination of the keys, ALT+SHIFT OR CTRL+SHIFT. These combinations mess up with the functions of other keys after your script execution is completed or if it is stopped in between.
If you want to confirm if any of these combination is really messing up with your keys, then in your testng.xml file, just mouseover on any class name and it will be highlighted and underlined automatically, even though we have not pressed ALT nor SHIFT at this moment. It means that these keys are not released yet even though your script might have released them.
If you face this problem, then the control being in Eclipse, press CTRL+SHIFT and press ALT+SHIFT, and this resolves the above problem. Now, the keys in your keyboard work as usual.
with me, the strange thing is outside of eclipse (i use the ADT package), everything is ok. And restarting workspace, fixes the problem
this happens when i type any expression that might not be valid, like when i try to write
taskNameEditText = (EditText)findVie
of course, i want to write
taskNameEditText = (EditText)findViewById(R.id.task_name);
but after the first snippet, it changes the keyboard. And the code completion stops working too. So far the only working solutions i found where: 1 - restarting eclipse, 2 - start using IntelliJ
changing the key bindings wont work, just because i already have those unset. Also, "Alt + Shift" wont work, because this is not a windows (i use 7, 64 bits) problem