Background:
I needed to make a modern looking appearance in my java applications. And I recently knew that the "Look and Feel" of a java application can be changed as we want. The following code example it uses something called "SubstanceOfficeSilver2007LookAndFeel" which helped me to get an rought idea about changing the "Look and Feel".
try {
UIManager.setLookAndFeel(new SubstanceOfficeSilver2007LookAndFeel());
} catch (Exception ex) {
LOGGER.log(Level.SEVERE, "Substance Look and Feel Error", ex);
}
// TabbedPane border settings in substance look and feel.
UIManager.put(SubstanceLookAndFeel.TABBED_PANE_CONTENT_BORDER_KIND,
TabContentPaneBorderKind.DOUBLE_PLACEMENT);
// Cut, copy, paste menu in TextField with substance look and feel.
UIManager.put(LafWidget.TEXT_EDIT_CONTEXT_MENU, true);
This code was found in here.
Questions:
I normally create java swing applications in NetBeans by using its drag and drop facilities; I do not code the UI of my application. My first question is can change the Look and Feel of my applications which are already made by using NetBean's drag and drop facilities.
Can we add those new Look and Feel components to our NetBean's palette and simply make changes in our UI by dragging and dropping them.
As an Example; In above code example it gives some UI like "MS Office 2007" and there will be some "tabs" and "ribbons" like "MS Office 2007".Is there a way to simply drag and drag new "Ribbon" from palette?
Assume that we have created a java swing application by completely coding; I mean without using NetBeans or Eclipse design view facilities. Is there a way to edit the appearance of our swing application by converting our code to a code that which is eligible for edition in Design view?
I am not to sure about using Netbeans GUI builder to change the look and feel that
drastically. The best option would be to code everything by hand which will give you a better understanding and loose coupling using MVC design. I would personally if you are going after a new look and feel with modern UI is switch over to JavaFX and use scenebuilder by Gluon to customize how you want it. Plus you can use CSS so there are no limitations. So I would have to say for more modern looking java application nowadays use JavaFX.
Sorry if it did not help you like if it has to be in Swing or not.
Related
I know that there are already some question about this, but I can't find my way!
I want to implement a desktop chat application with java which is able to send text,image, video, etc.
Now I am using swing component for my chat conversation window.
I create a JFrame and add JTabbedPane to it inorder to have tab for each new conversation.
for creating each tab I act as follow :
create JPanel (I add this to my JTabbedPane as tab)
newtab = new JPanel();
newtab.setLayout(new BoxLayout(newtab, BoxLayout.PAGE_AXIS));
create JTextPane for display's part of the chat (to have style for conversation like android application such as viber, ....)
I want to be able for following styling:
diffrent alignment
change font, color
insert JComponent (to show other type of messages )
setborder of each message round (I don't want the squre one)
...
context = new StyleContext();
kit = new HTMLEditorKit();
chatPane = new JTextPane();
chatPane.setEditable(false);
chatPane.setContentType("text/html");
chatPane.setEditorKit(kit);
chatPane.setText("");
doc = (HTMLDocument) chatPane.getStyledDocument();
CSS(); // it is for adding ccs style to stylesheet of document
JScrollPane scroll = new JScrollPane(chatPane);
newtab.add(scroll , BorderLayout.CENTER);
My problem is to set perfect stying to my display part, since javax.swing.text.html.CSS provides HTML 3.2 support, so the CSS properties that are supported are limited!
while searching on Internet I find JavaFX, but I don't know is it good to use JavaFX and swing together or even is it possible?!
also which layout manager is better for the JPanel (newtab) to have my JTextPane with scroll.
As its already been said, it is possible to mix Swing and JavaFX especially since Java 8 you can do it both ways:
Embed Swing Components in JavaFX with SwingNode
Embed JavaFX Components in Swing with JFXPanel
Recently we had to make the same decision. We had an application and wanted to migrate to JavaFX to get a more modern design and to make use of all the introduced language features like PropertiesBindings etc., which is nicely supported by JavaFX Components.
So first we tried to embed JavaFX in Swing. All new components were embedded with the help of JFXPanel. It was really easy, but from time to time we had some rendering issues which got more and more annoying. "Unfortunatly" we got used to the new JavaFX API, which is why we deceided redesigning our appliction to make it a JavaFX application with some Swing Parts in it, which was possible, when Java 8 was released, since we didn`t wonna waste time on fixing thoses kind of rendering issues. The redesign was actually some work since some concepts are just different. Benefitting from the new API caused some refactorings, we didnt really wonna do in first place.
But then again mixing Swing and JavaFX got a bit fuzzy, and the look and feel of the application didnt really feel convincing, so then we finally removed all Swing Parts and replaced them by JavaFX Components. So far we don`t regret that step, but it was more work then we expected it to be, eventhough we already used patterns like MVP, where only Views had to be refactored, since presenters were (mostly) free from UI stuff (which was really an interesting process, were we learned a lot about MVP and designing an application).
So in conclusion I just can suggest to create a list of views you have and think of all the components you would need and try to find the corresponding components in JavaFX. Make small examples for the most complex components to see if they fullfill all your usecases. If that is the case and you still have enough time to switch to JavaFX I personally would go for a pure JavaFX approach, because of the experiences I made with mixing JavaFX/Swing, especially since your UI design seems to be in an early state. In the end it is just a question of time you have available for your project and if you are really up to learn about the new concepts and components of JavaFX.
Concerning the JavaFX CSS Support, you find a reference here.
It IS possible to mix JavaFX and Swing. But I have no experience in it. I just did a little FX-UI for a small project which was pretty nice. Especially the CSS-Feature is great.
According to mixing, I just recently found a blog which discouraged mixing both technologies: http://dlemmermann.wordpress.com/2014/07/17/javafx-tip-9-do-not-mix-swing-javafx/
Maybe this gives you a little help.
Recently I was asked same question.
About one month ago I started new project with my team. We use Java 8.0 + JavaFX 2.2.
What problems did I find in JavaFX?
It's new technology, so many issues still not answered. And you must look for it own.
No tray supporting, so you must use java.awt.SystemTray.
Also I found one problem in the design.
For example you want to make beautiful list with cells which contains label which stuck to left side and checkbox about right side. But there is no good way to do it and you have to calculate length of cells and etc..
But JavaFX provide great opportunities for cutomizing GUI. And you can incapsulate your design in jxml file. It's very convient, because it even more separate code from design.
About mixing I think that if platform allows it than you have to use a solution that provided a platform.
And I think that the decision to use JavaFX correct, if only because it is a relatively new technology, developed by Oracle and it probably will soon replace the swing.
I wanna create a simple application with Java. I designed the main template in my head but I have a kind of design problem.
I am using JMenuBar and JMenu. It works fine but it's location is not exactly what I want.
In ubuntu, I use Eclipse and it has menu in titlebar:
As you can see , menus are at top.(File,Edit,Source,etc..)
However, My application is not the same.
Here is my application.
JMenu is working fine but in title bar there is no menu.
What can I do to create this menus ?
Are there any component for it ?
Thank you.
Best Regards.
Ă–mer.
You may be interested by the Jayatana project
You're using the right components, but have a Look and Feel (L&F) problem. Take a look here:
http://docs.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
however, I can't guarantee that changing the look and feel will make it look exactly as you want.
The general problem is that Swing abstracts away from the OS's GUI components. Eclipse is also Java, but SWT instead of Swing, so it doesn't have the problem. There may be third party libraries that integrate better with the native L&F - Maurice seems to have found one. Alternatively, you could switch to SWT entirely, but that might be a bit much just to get the right L&F.
I'm linking a database to NetBeans now and I need to create a interface for this. But when I need to adjust the position of button, label is difficult. Is it possible that show a GUI design view that easy for me to adjust without use the JFrame component?
If I understood your question correctly, you're looking for a GUI builder for Swing.
Netbeans ships with the Matisse Swing GUI Builder which will help you build GUIs easily and quickly. Tutorials aren't uncommon (such as the official tutorial or some user created videos on YouTube).
Some folks are fine with this work flow (since it speeds up development quite a bit). Others want to use custom frameworks and have requirements to use specific layouts in which case I recommend reading about different layout managers.
Take your pick and happy development! :)
Instead of trying to design your entire application in the GUI editor, you may be able to adapt the approach shown here. This will let you focus on a single container at a time. Also, remember to backup your .form files; more here.
I am planning to develop an java application,so i am in search of some library's that can give a pleasant look and feel and easy to customize.I tried swing but the look and feel is not much i expected and creating a look and feel is not so easy i think (i am not sure). i am from web development. In my previous question Java GUI development alternative to swt or swing most guys recommend javafx and i am working on an 64 bit linux machine and javafx is not available for that. I need some advice ,
Better to create own look and feel library else suggest some good library for look and feel
Note:i tried nimbus look and feel.
I can just give some suggestions that I am using in conjunction with Swing:
JRibbon/Flamingo (Office 2007 like ribbons)
Substance Look and Feel (works very well with JRibbon/Flamingo and is quite configurable, with a lot of predefined skins)
SwingX (additional/extended Swing components)
Note that for Substance there's a fork called Insubstantial which contains also a Flamingo fork named Peacock.
JRibbon is the best replacement for menu and toolbar in a Java application. JRibbon gives a better user experiance then ordinary menubar and toolbar. It is look like rich UI Component in Java. JRibbon has all facility like Microsoft Office Ribbon have like application menu, taskbar.
Source : JRibbon Tutorial
Is there any framework or lib out there to create a Java swing menue that can be edited by the user via drag and drop?
Added: Implementing a polished solution myself can take a lot of time. What i would like to see: display the entry while dragging, opening submenus automaticially, showing a line where the item would be placed when releasing the mouse. Actually like the windows startmenu in XP. This would take a lot of time, i am still hoping to find framework or a subclassed Jmenu with these features.
You can implement drag and drop on most (all?) Swing components. See this tutorial to get started.
Update: based on your updated question. have a look at JFrameBuilder (note that its not free).
JFrameBuilder is an easy-to-use visual Java GUI builder.
JFrameBuilder provides the application GUI solution for Java developers. It enables Java developers to create sophisticated Swing GUI applications using drag-and-drop interface without spending a lot of time writing code.
Personally I find it a lot simpler to write pretty UIs in SWT (the toolkit used by Eclipse), it has more access to the underlying OS and provides a richer experience that's closer to what you're after in my opinion. Here's a guide to implementing drag and drop in SWT.