Is there a widget for making configurable toolbar in java ?
Couldnt find anything in swingx but seems a common problem
Use instances of Action to expose your application's functionality. Add these actions to your toolbar buttons. Because JToolBar is a Container you can add() and remove() buttons as needed in your toolbar editor by invoking revalidate() and repaint(). You can persist the current settings as suggested here.
Related
Currently my custom toolcontrols are outside the toolbars because of the scaling issue in E4. Toolbar does not scale correctly in E4
Now my client want to have different toolbars for all the toolcontrols, so that the user can rearange the order of the toolbar and separate the toolcontrols from each others. How is this possible in E4? I know the toolcontrols inside the toolbar is not scaling the toolbar itself. But is there any workaround to place a toolcontrol inside a toolbar?
I added ahidden icon to the toolbar when adding the custom toolcontrol to it. Eclipse scales the toolbar correct know.
Was wondering how you would go about implementing a custom layout for a toolbar popup, the one you get when you press on the settings button.
I need to increase the padding on the top and bottom of the popup, and also add in a custom font here. The only way I can think to do it would be to basically inflate a custom layout here but I'm not sure how it can be done. Most of the documentation I find online about it is just about styling it instead of adding in a new layout.
I thought maybe doing something like:
app:actionLayout="#layout/menu_settings_popup"
Would work, but unfortunately it doesn't. Also trying to set the layout and background in styles didn't
Would appreciate any help with this. Thanks
I think this would be what you need:
https://scriptedpapers.com/2015/02/12/android-action-bar-and-overflow-menu-customization-with-theme-appcompat/
I have a borderLayout form with Tabs at the center that contains scrollable containers and I want when user scrolls any of the containers in the tab, to pull up and down the Title bar.
This is possible if my ContentPane is scrollable and none of my inner container is, but making my contentPane scrollable will hide my tabs upon scrolling and ruin user experience.
I extended Toolbar to create a custom Toolbar but bindScrollListener() is private and can't be overridden.
Is there a way to modify Toolbar to allow setScrollOffUponContentPane() to be initiated by 2 or more scrollable containers working asynchronously?
This is available as part of the new AnimationManager class and new animation framework announced here.
This should be a part of the new plugin and should already be usable with the source distribution as its already committed to github.
While we might manipulate the API a bit as we are growing it, we think we already have a relatively good direction and any changes should be quite minimal.
I am making a UI with Swing, and I want the buttons I am using for my custom dialogs to have the same style as the ones in standard dialogs.
For instance, in the attached image I have a custom dialog and the standard file select dialog. I want the 'OK' and 'Cancel' buttons from the file select dialog to be used for the equivalent buttons in my custom dialog.
I want my application to use the default system look and feel of whatever OS it is running on, so I don't want to try to manually re-create these standard buttons. Using a more rigid Swing class that automatically provides these buttons wouldn't work either, as I'd like to also use them in other, more exotic places in my UI.
Is there an easy solution to this problem?
Sorry to be the bearer of bad news, but it look like there is no standard way to do this cross-platform. The behaviours, mnemonics and icons on default buttons are handled in very specific ways by each look-and-feel.
Here is a SO question that answers the question on how to set the default OK and Cancel buttons on a dialog (the default button is set using getRootPane().setDefaultButton(...) and the Cancel button needs a custom keyboard listener. If you're very lucky, setting the default button might add an icon to it, depending on how the UI is coded.
This forum thread addresses the issue of getting icon resources from the UIManager. Each LaF has a set of UI defaults such as colors, text, borders and icons. There are a number of default icons which are found across all LaFs, but for non-standard icons, such as ones on buttons, there are no guarantees. However, if you tell me which LaF you are using in the screenshot you provided, I can look up the resource keys used by its custom UI classes (or you can find it yourself if you have the source). You could then write a helper method which looks for the icons via these keys, and adds them to the buttons if they are found.
JButton.setUI(ButtonUI) sets the UI for just one JButton. Use that in conjunction with a factory:
public static JButton createStyledButton(String text) {
JButton button = new JButton(text);
button.setUI(STYLE_UI);
return button;
}
How do you refresh a JPanel on the panel change from container CardLayout?
Use the show() method. From the Java API:
Flips to the component that was added to this layout with the specified name, using addLayoutComponent. If no such component exists, then nothing happens.
CardLayout#first(), next(), and previous() do something similar.
Sometimes, when I've made a panel swap like this (though not that I can remember on CardLayout, but it's been a while since I used it), I've also needed to pack the frame again. If that doesn't work, you can call revalidate(), which lets Swing know that the component needs to be redrawn.
You may also want to consider using a tabbed pane, as it does a lot of this for you; I started out a project trying to use CardLayout and decided to use a the tabbed pane instead. Depends on what you want to do, of course.
Is there an actionlistener or something that I can have it reload/refresh my data on that screen?
Assuming you have a model that supplies data to your view (panel), two approaches are common:
Arrange for your model to extend Observable and your view to register as an Observer.
Arrange for your model to manage an EventListenerList, in effect creating you own analog of ActionEvent.
In either approach, use the listener of the control that switches views tell the model to update its registered observers/listeners. The example in How to Use CardLayout uses a JComboBox and itemStateChanged(). There's additional discussion here.
Is there an actionlistener or
something that I can have it
reload/refresh my data on that screen?
You can use an AncestorListener. It fires when a component is added to a Container. So when you swap cards the event is fired. You would need to add the listener to each panel you add to the CardLayout:
Another problem with the CardLayout is that the panel doesn't gain focus when it is swapped. I use this approach to set focus on the panel. Check out Card Layout Focus.
panel.addAncestorListener(...);
The show() method does the trick of switching panels, but it doesn't "refresh" the data. Is there an actionlistener or something that I can have it reload/refresh my data on that screen?