UICompiler for Java 1.0 changelog

UICompiler 1.0 is a stable release which offers a number of important changes and improvements compared to the last release candidate (rc2).


  1. Clicking a tablesorter header (on top of a table for instance) should reverse sort it; Swing forced you to use [shift]-click to reverse sort
  2. A JList followed a selection order that is not very intuitive.
    We should be able to select and deselect more then one item using no keys from the keyboard, only the mouse.
  3. Improved Wizard, closing with the X in the top right corner implies a cancel
  4. Improved Wizard, if panel changes the previous or next panel is known.
  5. Improved tab ui, so that all tabs fit on one row (with browse buttons when needed)
  6. Made first column auto-sorted in JTable
  7. Automatically add key-listener to first column in JTable.
  8. Made multiple row sorting work, using ctrl-click
  9. Changed table header, to look nicer and be able to see which rows are sorted
  10. Made it possible to change the selection mode of a table from designer
  11. Made it possible to deselect in a single selection list. (this is the correct behaviour anyway!)
  12. Added some methods in the MWTable to allow better management of models. The original JTable had some failings there. (see tuturial3)
  13. Created a new constructor in the MWTableModel which copies an allready existing tableModel, this for more easy extending. (see tuturial3)
  14. Improved look-and-feel of combobox and button
  15. Use theme to set margins in widgets to 0
  16. Made layouter smarter to allow maximumsize of a widget combined with a non-fill placing to shrink the widget (but not the cell).
  17. Implement spacing and margin in layouter
  18. Added convenience constructor for layouter with x and y sizes as arguments, and use it from generated code.
  19. Paint very nice button on comboboxes.
  20. Allow Mnemonics in tab-names as well; and use the translator for them now!
  21. Allow desinger forms with lots of tabs to all be created, including the contents of those tabs
  1. Move PLaF before the init of the frame to work around Swing bug for frame-backgrounds
  2. Fix many many Swing bugs with regard to the preferred/maximum sizes in the theme.
  3. Fix bug in layouter where the width was changed when the height should have been.
  4. Fixed bug in listUI, it ignored user specified cellrenderers
  5. Fix bug in table plugin. We check the names the user choose for its column names before using them as java variable names now.
  6. Rename uic.widgets.TableSorterHeader to TableSorterHeaderRenderer, since it actually is a renderer.
  7. At creation of a table make sure the sizes of the header-columns are relative to the content of those headers.
  8. Fix in UICListUI; made it possible to change selection in a seperate class using mouseDragged event
  9. Fix in UICListUI; A double click is no longer treated like two single clicks. This is a first step in the functionality for double click where the second click undo's the first.
  10. Fix in border for QGroupBox and QButtonGroup
  11. Fix in ComboBox behaviour when UICListUI is used. This fix is done by means of the UICComboBoxUI.
  12. Fix bug in UICompiler core that on windows the package line could start with a '.'
  13. Fix bug in WizardBase that the JDialog constructor forgot to call guiInit()
  14. Fix bug in NaturalLayout that placed certain widgets in the wrong cell
  15. Fix bug in layouts using JLine ending up with wrong preferred sizes
  16. Fix bug in JTextField to show a PasswordField when selected in Designer
  17. Add check for MinimumSize field from Designer, and place them in JLabel and JTextField
  18. Fix bug in JList and JComboBox that sometimes returned smaller PreferredSizes then MinimumSizes.
  19. Fix bug in QListView plugin that could lead to incompilable code when more then one was used in a design.
  20. Fixes a couple of Swing bugs regarding sizing of tables.
Fixes for Swing bugs
  1. RadioButton has a maximumSize that equals the preferredSize in horizontal direction. This is wrong since a layouter that honors the maximumSize will shrink the whole layout when a radiobutton is added since most layouts use a radiobutton per row, and now that row has a maximum width.
  2. CheckBox has a maximumSize that equals the preferredSize in horizontal direction.
  3. Checkbox has a maximumSize that equals the preferredSize in horizontal direction.
  4. When the radiobutton is used without text, the text still takes space This makes the radiobutton be wider then it is high.
  5. When the checkbox is used without text, the text still takes space, like the previous bug.
  6. A radiobutton's icon does not scale when the text is getting bigger or smaller, it is always 13 pixels high.
  7. A radiobutton's icon uses 11 pixels in width and height. Yet it reserves 13 pixels on screen. This means its not centered correctly, some space is blank at the bottom.
  8. A radiobutton by default has an inset like the abstract button does. This is incorrect since a radiobutton (unlike its parent the normal button) does not have a border and should not claim spacing outside of the text and icon.
  9. A checkbox by default also has an inset like the abstract button does.
  10. be able to type more then one char in a combobox to jump to a matching entry.
  11. Icon on combobox does not scale when bigger text is entered.
  12. A combobox does not return its correct maximumSize; it is allowed to be very high. This means that a combobox can take too much screen.
  13. A TextField does not return its correct maximumSize; it is allowed to be very high. This means that a textfield can take too much screen.
  14. A combobox has a minimumSize (and incidently also the preferred) of a few pixels which means you can't use a combobox to 'scale itself'. Since if you want a combobox to tell the layouter how large it should be it will get too small when empty. Quite ugly.
  15. A textfield has a very small minimum size, same bug as the previous item.
  16. A combobox does not get a bigger preferredSize when longer strings are inserted. This means a combobox will not grow when longer texts are inserted.
  17. When a label has no text the height is 0. After setting a text in the label the whole layout jumps.
  18. A checkbox's icon does not scale when the text is getting bigger or smaller, it is always n pixels high.
  19. A table has a maximumSize equal to its preferredSize, this is incorrect since this is a so called 'filler-widget'. It should grow as large as it wants.
  20. All default fonts are bold, this means a bold label or button looks the same as the default.
  21. Adding one column to a table which is has an empty string as value fails to show any header.
  22. Adding 2 columns to a table after a setAutoResizeMode(JTable.AUTO_RESIZE_OFF) adds them at a pre-defined size which does not take in account the size of the header names.
  23. The JSlider has a poor choice of colors; it uses the primairy2 color for the tickmarks, which is meant to be the alternate color over the background color. This would imply it can be used (since tickmarks are drawn over the background), if it were not for the fact that the tickmarks are very small. So you need to make a very different color in order to make a 1 pixel wide line to be visible.
  24. JScrollPane does not include the table header in its size calculation should it be present.
  25. JTable has a preferredSize and minimumSize of 0 when no rows are present; while this may technically be correct; its far from good looking.
  26. A JTabbedPane has a height of 0 pixels when no tabs are present; so after adding a tab the background and outlines 'jump' to the right position.
  27. Using a larger font size in a table-row (or a theme for that matter) does not make the row take more space.