Tooltip/mouseover text in an AnyLogic simulation user interface screen? - java

I would like to know if it is possible implement tooltip (mouse over) text within an AnyLogic simulation, whereby the simulation user can hover the mouse over a Radio Button or Edit Box, for example, and get context dependent help message.
I note that the AnyLogic IDE provides this for (some of) the palette icons to assist the developer, so there is support in Java presumably using setToolTipText(), but is such a feature available also to the simulation model user?
If this is do-able, an AnyLogic-specific example would be highly appreciated.

this is not possible anymore since AnyLogic UI is not using Java anymore (since they switched to web-based animation).
Unfortunately, we are bound to what AnyLogic provides us for UI capability. A while ago, they said they would add a "on hover" field for UI components but haven't yet. Do push them (support#anylogic.com) to keep this on their agenda, I would love that as well.
PS: Previously (AL7), you could use a MouseListener class
PPS: (ad) We have developed a UI library that gives you similar capability. Not hovering but standardized help messages similar to mobile app notifications: http://materialdesignforanylogic.com/

Related

Java Accessibility: Emulate ARIA role "alert"

I'm writing a Java app and I'm making sure that every bit of it is compatible with screen readers. Having worked with screen readers in the past when doing web development, I assumed, perhaps foolishly, that the behaviour would be much the same in Java.
What I'm particularly struggling with is with providing alert text without popping up a dialog. I am providing a status update which is useful information but doesn't require any user interaction.
In a browser, all I had to do was give a DIV the ARIA role "alert" (Alert Role).
Now I'm trying to accomplish the same thing with Swing components but I don't see any clear way to do it. The Java accessibility package has an Alert role (AccessibleRole class) whose description suggests the same behaviour but I don't see any Swing components that use it or a way to make them change roles (seems to be hard-coded).
The How to Support Assistive Technologies guide touches on the idea of creating custom components but barely scratches the surface and doesn't seem to mention the Alert class.
Any idea what some good next steps might be?

MDI with JavaFX or Swing

Back in my, ahem, Visual Basic programming days, I remember it was very easy to create a multi-form program.
In the gui designer I could simply create as many forms as I wanted and then load them in my program where needed.
I'm having a very difficult time doing this in Java.
I started out using the Java FX Scene Builder but soon discovered there doesn't seem to be good MDI support. So, back to Swing. But, again, I don't see a simple way to design a multi form application.
I read somewhere that JDesktopPane was the way to go as it will allow you to have different internal frames, but there is no way, that I can see, to design multiple frames in the NetBeans gui designer.
You would think that you could hide an internal frame in the designer so you can layout another frame. While I can add multiple frames to my JDesktopPane, they all overlap each other making it impossible to design multiple frames.
Are there any tools available to do what I'm trying to do, or do I just need to bite the bullet and code the guis without the help of a designer?
In brief, I just want to create a simple application that displays three or four options on a home screen
Enter new customer
Search for existing customer
Quick estimate
And depending on which the user selects, opens the appropriate form. It would seem that this would be a basic requirement for almost any program and I don't understand why it seems like actually creating an application with multiple windows/forms was never thought of when developing the design/development tools. Thoughts? Suggestions?
If you're really keen on using the multi document interface (MDI) of the JDesktopPane, create each form in it's own class form. Don't drag them to the desktop. This will allow you to isolate them.
(You can double click a internal frame and it should enter "isolation" mode, basically making it the only thing you can see)
However, unless the windows are sharing information (ie you want to see the information in one window to change the information in another), I'd avoid it.
A better solution might be to use a CardLayout which will allow you to switch between each form as you need.
Again, I'd start by building your forms from something like a JPanel, individually, and when you're ready, add them to your main form.
I always encourage people who are coming into Swing anew to hand code their forms, it will give you a great appreciation for how to design forms and the power of the layout managers.

Java Swing: how to create assist functionality to teach user how to use the software?

Is there a library out there that can facilitate in creating assist or automated guide that tells users what action to take?
Like it should notice the user is running the software for the first time so it will say click this button, and when the user does, it will explain other features.
sort of like what Youtube's video editor does but I wonder if this is achievable in swing.
I don't know what you call this...but below is a good example to aim for but something that works for Java Swing.
http://jeffpickhardt.com/guiders/
I would do this using JPanel or image and mouse events by setting their visbility properties. I haven't tried it but, I think I can...
I used these libraries which are for rich applications
http://java.net/projects/animatedtransitions/
http://java.net/projects/timingframework/
let me know if you found anything new.
thanks
from
vinay

Inspecting Component Hierarchy in Java UI

We have a very large Java Swing desktop application comprising of a great deal of views. Developers have done a pretty good job over the years in choosing appropriate class locations which reflect the general structure of our UI for these views. Most of this time this is very helpful in tracking down specific components that have bugs which need tending to. However, there are cases where finding a panel, dialog, etc is quite painful. It usually involves searching our properties files for unique string sequences that appear in the UI.
Does anyone know of a third-party tool that allows a developer to hook into a Swing application and click on a region of the UI to reveal that name/package/hierarchy of the component that was clicked?
SwingExplorer is the perfect tool for that. It does what you are describing, and even more (step-by-step drawing of Java2D, EDT violations, AWT events).
Does anyone know of a third-party tool that allows a developer to hook into a Swing application and click on a region of the UI to reveal that name/package/hierarchy of the component that was clicked
Darryl's Component Tree Model should provide you with this basic information. The demo shows how you would use the root pane as the container for viewing all the components. You would need to add a MouseListener to your application to get the Container that was clicked so you could display the component tree.
There's something doing exactly what you're looking for in the SwingX Demo. The JXTreeTable demo contains a tree of the components hierarchy, when the mouse rolls over a particular component, it is selected in the table.
You can have a look here
Couldn't believe it myself, but it could be really as easy as:
SwingUtilities.getRoot(...).list()
The list method exists since 1.0. lol.

Design a GUI for a J2ME app

How do I create a J2ME app for cellphones with a GUI similar to the menus you see in Java games? I've tried MIDlets with Netbeans but they only show you one GUI element at a time. (textbox, choice, login, etc)
And which Java IDE would you typically design these GUIs in? Netbeans or Eclipse? and is IntelliJ IDEA usable for this aswell?
Do I have to write/get a library that draws GUI controls to screen via bitmap functions .. and keeps track of the keys pressed for focus?
Try to use LWUIT - nice UI toolkit for j2me:
https://lwuit.dev.java.net/
http://lwuit.blogspot.com/
You can also use minime: http://code.google.com/p/minime/
It's an open source GUI library for j2me. miniME works on canvas level (lowest level in j2me) to draw every control so your UI will look exactly the same whatever the handset it'll be running on. Other advantage are:
- miniME uses its own event loop to manage user controlled event (botton pressed, softbar, ..), so you Application will "behave" the same whatever the handset.
- miniME support the concept of Views and stack of view, in order to make navigation between different view/screens very easy.
Here is an example: A View is what you have on the screen at a given moment (for example the main menu screen), then to go to a sub menu, you create a new view, and by calling a simple API, you push it in the stack of Views. The previous view (the main menu) is still existing, but inactive. When the sub menu view complete his work (for example, user press back, or do a selection), you can just go back to the previous view by calling a pop api.
Your question is a bit vague to give a specific aswer, but you might want to check out LWUIT or Polish, you can develop both with either Eclipse or Netbeans.
As far as designing GUIs go, neither IDE will help from a visual perspective. J2ME UI development is all done in code, beyond creating any initial graphics in a proper graphics editor you don't get to see your output until you test.
Read up on the LCDUI package documentation which explains how the UI classes work and the differences between the 'High-level' and 'low-level' APIs.
I can't comment on which IDE to use - but I do know that to create custom UI (like the ones you see in J2ME games), you have to explicitly draw the GUI controls.
Beware that you may need to customize the GUI depending on the target phones. You have to cater for different screen sizes, key pad configurations, default theme etc. This would probably mean that you need different builds for things like different screen sizes which would drive up your Java Verified certification costs (if you need it).
You may be able to find a set of nice looking UI controls that you can buy online and use (try J2ME Polish). The easy way out of course, is to use default J2ME controls :)
Links to many j2me GUI libraries: link1, link2
I know that kuix is not bad and free - watch demo.
But i prefer to make my own gui elements - this is much more flexible (but takes some time).
As for IDE - you may want to make some kind of gui-editor tool, construct interface in it, save result to some file, and read it from your app.
It's way too cumbersome to write your own GUI, especially since there are so many available these days. If you're familiar with desktop development in VB.Net and C#, you might find "J2ME GUI" easy to use. You can download it from http://www.garcer.com/. It has a similar feel and makes it easy to learn. This is the kind of GUI that I expected to come standard with MIDP2 when I started mobile development. Would have solved a lot of issues.
If you are familiar with web stuffs then you can use KUIX (kalmeo.org/home/index) framework having xml and css supports. In place of It you can use also Polish framework (www.j2mepolish.org) it's also uses the xml in easy way rather than kalmeo kuix framework.

Categories