Post on 30-Dec-2016
transcript
Using NetBeans IDEfor
Desktop Development
Geertjan Wielengahttp://blogs.sun.com/geertjan
2
Agenda
● Goals
● Design: Matisse GUI Builder
● Medium Applications: JSR-296 Tooling
● Large Applications: NetBeans Platform
● Conclusion
3
● Show that NetBeans IDE is the one-stop shop for all Swing desktop needs
● Ready out of the box, for applications of all sizes:
● Demo 1: Matisse GUI Builder
● Demo 2: Tooling for JSR-296
● Demo 3: NetBeans Platform
Goals
4
● Goals
● Design: Matisse GUI Builder
● Medium Applications: JSR-296 Tooling
● Large Applications: NetBeans Platform
● Conclusion
Agenda
5
GroupLayout
● Part of JDK 6
● Principles:● Independent dimensions
● Hierarchical groups
● Designed to suit GUI Builder needs
6
“Matisse” GUI Builder
● Professional quality layout easily done
● Intuitive drag & drop interface
● Guidelines
● Resize, align, optimal spacing
● Automatically resizes when localized
7
Demo
8
● Goals
● Design: Matisse GUI Builder
● Medium Applications: JSR-296 Tooling
● Large Applications: NetBeans Platform
● Conclusion
Agenda
9
public static void main(String args[]) {
// good luck!
}
Motivation for JSR-296
10
● Lifecycle support
● Resources
● Actions
● Tasks
● Session state
JSR-296 Features
11
import javax.swing.*; public class HelloWorldSwing {
public static void main(String[] args) { JFrame frame = new JFrame("HelloWorldSwing"); final JLabel label = new JLabel("Hello World"); frame.getContentPane().add(label); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true); } }
Lifecycle Support(On your own)
12
public class MyApp extends SingleFrameApplication {
@Override protected void startup() {JLabel label = new JLabel("Hello World");show(label);
}
public static void main(String[] args) {Application.launch(MyApp.class, args);
}
}
Lifecycle Support(With JSR-296)
13
● Show all the other JSR-296 features in action.
● Integrate Flickr into a Swing desktop application based on JSR-296 using NetBeans tooling.
Demo of JSR-296
14
● Goals
● Design: Matisse GUI Builder
● Medium Applications: JSR-296 Tooling
● Large Applications: NetBeans Platform
● Conclusion
Agenda
15
1. Generic Desktop Framework
2.Infrastructural Plumbing
3.Collection of Libraries
4.NetBeans Platform Toolkit
NetBeans PlatformWhat is it?
16
Agenda● Goals
1. Generic Desktop Framework
2. Infrastructural Plumbing
3. Collection of Libraries
4. NetBeans Platform Toolkit
17
NetBeans Platform
18
Nuance Voice-XML
19
Fiorano Studio
20
Nokia: Mobile Network
21
Sketsa SVG Editor
22
VisualVM
23
AIOTrade
24
NetBeans IDE
25
JCae-CAD
26
MC4J JMX Console
27
JFugue Music Notepad
28
StudioSL: Oil Flow
29
Agenda● Goals
1. Generic Desktop Framework
2. Infrastructural Plumbing
3. Collection of Libraries
4. NetBeans Platform Toolkit
30
Maybe this is your code:
31
Maybe this is you:
32
This should be you...
domain expertknowledge
33
Application “Plumbing”
● Windowing/docking system
● Archictecture
● Lifecycle management
● Persistence
● Data management
● Consistent look & feel
● Distribution/update mechanism
34
Demo
35
Agenda● Goals
1. Generic Desktop Framework
2. Infrastructural Plumbing
3. Collection of Libraries
4. NetBeans Platform Toolkit
36
Javadoc
37
Libraries
● Window System API
● Actions API
● Options Window API
● Many Editor APIs
● Visual Library API
● ...and many more
38
Ways to get started
● Javadoc
● Tutorials
● Samples
● Blog entries
Tip: Use them outside the NetBeans Platform
39
Agenda● Goals
1. Generic Desktop Framework
2. Infrastructural Plumbing
3. Collection of Libraries
4. NetBeans Platform Toolkit
40
Project wizards
41
NetBeans Platform
42
Outline view
43
Project wizards
44
File wizards
45
File wizards
● Actions API
● Datasystems API
● Module Install class
● Options Dialog API
● TopComponent class
● Wizard Descriptor class
46
Configuration
47
Editor
48
While developing...
...enhance the IDE
49
Dependencies
50
Dependencies
51
Contextual menus
52
Contextual menus
53
Samples
54
Demo: Porting
55
Porting Demo Outline
1. Start with a simple application.
2. Compare what it is to what the NetBeans Platform has.
3. Create a new plugin project.
4. Move the useful parts of our old application to our new plugin.
5. Run it.
56
Porting Guide
http://platform.netbeans.org/tutorials/60/nbm-porting-basic.html
57
● Goals
● Design: Matisse GUI Builder
● Medium Applications: JSR-296 Tooling
● Large Applications: NetBeans Platform
● Conclusion
Agenda
58
● http://weblogs.java.net/blog/tpavek
●
●
●
●
Resources
59
● Ready out of the box, for applications of all sizes:
● Demo 1: Matisse GUI Builder
● Demo 2: Tooling for JSR-296
● Demo 3: NetBeans Platform
● Showed that NetBeans IDE is the one-stop shop for all Swing desktop needs
Conclusion