File: tips.html

package info (click to toggle)
libjgoodies-forms-java 1.3.0-1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 1,976 kB
  • ctags: 1,653
  • sloc: java: 9,500; xml: 221; makefile: 14; sh: 11
file content (202 lines) | stat: -rw-r--r-- 8,076 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
	<title>JGoodies Forms :: Tips &amp; Tricks</title>
        <link rel="stylesheet" type="text/css" href="style.css" >
	<meta name="description" content="The JGoodies Forms helps you layout and implement elegant Panel quickly and consistently.">
	<meta name="author"	 content="Karsten Lentzsch">
	<meta name="keywords"	 content="JGoodies Forms Java Layout Swing UI Design Usability Lentzsch Kiel">
	<meta name="robots"	 content="index, follow">
	<meta name="date"	 content="2006-01-01">
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF" leftmargin="0" marginheight="0" marginwidth="0" topmargin="0" bottommargin="0" >

<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr>
    <td colspan="3" bgcolor="DDDCDC"><a href="../README.html"><img 
	src="images/banner.gif" width="436" height="46" alt=":: JGOODIES :: Forms" border="0"></a></td>
</tr>
<tr>
    <td colspan="3" height="1" bgcolor="C9C8C8"></td>
</tr>
<tr>
    <td width="160" height="500" valign="top" bgcolor="F4f3f3" class="nav" nowrap="nowrap">
    <div style="margin-left: 17px; margin-top: 17px; margin-right: 10px; ; margin-bottom: 17px; line-height: 18px;">

        <!-- ************ Anfang der Seitennavigation **************************** -->

	<b>General</b>
	<br>::&nbsp;<a class="nav" href="../README.html">Readme</a>
	<br>::&nbsp;<a class="nav" href="../RELEASE-NOTES.txt">Release Notes</a>
	<br>::&nbsp;<a class="nav" href="../LICENSE.txt">License</a>
	<br>::&nbsp;<a class="nav" href="whitepaper.pdf">Whitepaper</a>
	<br>::&nbsp;<a class="nav" href="visualbuilders.html">Visual Builders</a>
	<br>::&nbsp;<a class="nav" href="references.html">References</a>
	<br>::&nbsp;<a class="nav" href="tips.html"><b>Tips &amp; Tricks</b></a>
	<br>::&nbsp;<a class="nav" href="https://forms.dev.java.net/faq.html">FAQ</a>
	<p>
	<b>Tutorial</b>
	<br>::&nbsp;<a class="nav" href="tutorial/introduction.html">Introduction</a>
	<br>::&nbsp;<a class="nav" href="tutorial/quickstart.html">Quick Start</a>
	<br>::&nbsp;<a class="nav" href="tutorial/basics.html">Basics</a>
	<br>::&nbsp;<a class="nav" href="tutorial/building.html">Building</a>
	<br>::&nbsp;<a class="nav" href="tutorial/factories.html">Factories</a>
	<p>
	<b>Reference</b>
	<br>::&nbsp;<a class="nav" href="reference/alignments.html">Alignments</a>
	<br>::&nbsp;<a class="nav" href="reference/constantsizes.html">Constant Sizes</a>
	<br>::&nbsp;<a class="nav" href="reference/componentsizes.html">Component Sizes</a>
	<br>::&nbsp;<a class="nav" href="reference/boundedsizes.html">Bounded Sizes</a>
	<br>::&nbsp;<a class="nav" href="reference/colsandrows.html">Cols &amp; Rows</a>
	<br>::&nbsp;<a class="nav" href="reference/cells.html">Cell Constraints</a>
	<br>::&nbsp;<a class="nav" href="reference/groups.html">Groups</a>
	<br>::&nbsp;<a class="nav" href="reference/variables.html">Layout Variables</a>
	<p>
	<a class="nav" href="api/index.html"><b>API Docs</b></a>
	<p>
	<b>Web Pages</b>
	<br>::&nbsp;<a class="nav" href="http://forms.dev.java.net/">Project Home</a>
	<br>::&nbsp;<a class="nav" href="http://www.jgoodies.com/downloads/libraries.html">Downloads</a>
	<br>::&nbsp;<a class="nav" href="http://forms.dev.java.net/servlets/ProjectNewsList">Announcements</a>
	<br>::&nbsp;<a class="nav" href="http://forms.dev.java.net/servlets/ProjectMailingListList">Mailing Lists</a>
	<br>::&nbsp;<a class="nav" href="http://forms.dev.java.net/servlets/ProjectIssues">Issue Tracker</a>
	<br>::&nbsp;<a class="nav" href="http://www.jgoodies.com/freeware/">More Examples</a>
        
         <!-- *********** Ende der Seitennavigation ******************************* -->

    </div>
    </td>
    <td width="1" bgcolor="E7E5E5"><img src="/images/banner.gif" width="1" height="1" alt=""></td>
    <td width="90%" valign="top" >
	<div style="margin-left: 20px; margin-top: 17px; margin-bottom: 17px">

        <!-- ************ Anfang des Inhalts ***************************************** -->
	
	<table width="530" border="0" cellspacing="0" cellpadding="0">
	<tr>
	  <td>
	<h1>:: Tips &amp; Tricks ::</h1>

	<h2>Consistency</h2>
	
    To design consistently over panels, team members, projects and platforms:
    <ul>
    	<li>Favor factories over builders
    	<li>Favor builders over a pure FormLayout use
    	<li>Favor logical sizes over constant sizes
    	<li>Avoid pixel-sizes
    	<li>Make your layouts stable - use bounded sizes
    	<li>Follow a layout style guide
    </ul>
    
    
    <h2>Good Design Practices</h2>
    
    <ul>
    	<li>Group columns where appropriate
    	<li>Group component rows
    	<li>Balance your design
    	<li>Consider to use symmetry
    	<li>Favor white space over separators
    	<li>Favor separators over <tt>TitledBorders</tt>
    	<li>Remove visual clutter
    	<li>Reduce your design to its essence
    	<li>Add white space where appropriate
    	<li>Use aesthetic aspect ratios
	</ul>	
	
	
	<h2>Good Implementation Practices</h2>
	
	<ul>
		<li>Favor factories over builders
		<li>Favor specialized over general builders
		<li>Favor a panel border over border cols/rows
		<li>Favor a logical border over constant borders
		<li>Use a simple grid; extract complex sublayouts
		<li>Make your layout easy to read:
			<ul>
				<li>favor string col/row specifications over object specs
				<li>format your layout specification
				<li>format your builder code to reflect the layout grid
				<li>specify columns statically
			</ul>
		<li>Make simple layouts easy to understand:
			<ul>
				<li>specify rows statically if there are only a couple of rows
				<li>favor row numbers over row variables
				<li>favor static cell constraints over tricky builder cursor commands
				<li>You should have more components than builder commands
			</ul>
		<li>Make larger layouts easy to modify:
			<ul>
				<li>favor row variables over row numbers 
				<li>favor the DefaultFormBuilder over PanelBuilder
			</ul>
		<li>Favor using and vending JPanels over extending JPanel
	</ul>


	<h2>Precise Layout</h2>
	
	<ul>    	
    	<li>Favor non-pixel sizes over pixel-sizes
    	<li>Favor Forms builders over the FormLayout
		<li>Favor a single layout over nested layouts
    	<li>Group component rows
		<li>Override a component's min/pref size methods judiciously
		<li>Avoid to set a component's min/pref (pixel) size
    	<li>Use look&amp;feels that provide a precise micro-design
    </ul>
    
    
    <h2>General Advice on Builders</h2>
    
    Write layout code that is easy to understand!
    Explicit row specifications and cell constraints make your 
    layout easier to understand - but harder to maintain.
    It is temptive to use the DefaultFormBuilder all the time and
    to let it add rows automatically. Use a simpler style if
    it increases the code readability.
    
    <p>If the predefined builders don't fit your needs, write your own!
    
    
    <p>
    The given code is meant to assist you, but it should in no way
    stiffle your creativity. 
    The Forms implementation just reflects the current state of 
    <i>my</i> findings about good design and implementation practices. 
    If you've found something other useful, don't hesitate to extend 
    the Forms. I would appreciate if you send me your extension.
        

	</td>
	</tr>
	</table>


        <!-- ************ Ende des Inhalts ************************************** -->
	</div>
    </td>
</tr>

<tr>
    <td nowrap="nowrap" bgcolor="F4f3f3">
      <div style="font-size: 10px; margin-left: 17px; margin-top: 20px; margin-right: 10px; margin-bottom: 4px;">
      (c) 2009 JGoodies
      </div>
    </td>
    <td width="1" bgcolor="E7E5E5"></td>
    <td>&nbsp;</td>
</tr>
<tr>
    <td colspan="2" height="1" bgcolor="E7E5E5"></td>
    <td></td>
</tr>

</table>

</body>
</html>