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 & 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>:: <a class="nav" href="../README.html">Readme</a>
<br>:: <a class="nav" href="../RELEASE-NOTES.txt">Release Notes</a>
<br>:: <a class="nav" href="../LICENSE.txt">License</a>
<br>:: <a class="nav" href="whitepaper.pdf">Whitepaper</a>
<br>:: <a class="nav" href="visualbuilders.html">Visual Builders</a>
<br>:: <a class="nav" href="references.html">References</a>
<br>:: <a class="nav" href="tips.html"><b>Tips & Tricks</b></a>
<br>:: <a class="nav" href="https://forms.dev.java.net/faq.html">FAQ</a>
<p>
<b>Tutorial</b>
<br>:: <a class="nav" href="tutorial/introduction.html">Introduction</a>
<br>:: <a class="nav" href="tutorial/quickstart.html">Quick Start</a>
<br>:: <a class="nav" href="tutorial/basics.html">Basics</a>
<br>:: <a class="nav" href="tutorial/building.html">Building</a>
<br>:: <a class="nav" href="tutorial/factories.html">Factories</a>
<p>
<b>Reference</b>
<br>:: <a class="nav" href="reference/alignments.html">Alignments</a>
<br>:: <a class="nav" href="reference/constantsizes.html">Constant Sizes</a>
<br>:: <a class="nav" href="reference/componentsizes.html">Component Sizes</a>
<br>:: <a class="nav" href="reference/boundedsizes.html">Bounded Sizes</a>
<br>:: <a class="nav" href="reference/colsandrows.html">Cols & Rows</a>
<br>:: <a class="nav" href="reference/cells.html">Cell Constraints</a>
<br>:: <a class="nav" href="reference/groups.html">Groups</a>
<br>:: <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>:: <a class="nav" href="http://forms.dev.java.net/">Project Home</a>
<br>:: <a class="nav" href="http://www.jgoodies.com/downloads/libraries.html">Downloads</a>
<br>:: <a class="nav" href="http://forms.dev.java.net/servlets/ProjectNewsList">Announcements</a>
<br>:: <a class="nav" href="http://forms.dev.java.net/servlets/ProjectMailingListList">Mailing Lists</a>
<br>:: <a class="nav" href="http://forms.dev.java.net/servlets/ProjectIssues">Issue Tracker</a>
<br>:: <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 & 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&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> </td>
</tr>
<tr>
<td colspan="2" height="1" bgcolor="E7E5E5"></td>
<td></td>
</tr>
</table>
</body>
</html>
|