Software | Java SMTools

SMTools (version 1.5.3) is a framework encapsulating several Java 1.8 classes that ease the development of graphical user interfaces (GUIs) and applications. As opposed to most existing frameworks that support the developer during the design phase by supplying tools that can draw up the GUI, SMTools only provides a library that gives the developer complete control from a bottom-up perspective. This means that explicit GUI development (positioning of labels, panels, ...) is still done inside the Java code.

Quick navigation:


Download Jump to top of page

You can download the following items:

  • The Java source code from the smtools package (ZIP, 2.81 MiB, 9422/8791 lines of code/comments)
  • The JAR containing the compiled code (JAR, 306 KiB)
  • The Java Docs (API documentation) (ZIP HTML bundle, 2.82 MiB)
  • All the necessary supporting JAR libraries (ZIP, 3.66 MiB)

There is also a direct link to the API documentation.

The software is also hosted on GitHub

If necessary, download the Java SE Runtime Environment 8, or for the Java SE Development Kit 8.


Screenshots Jump to top of page

As an example, the screenshots below show the about box, a GUI, two dialogs for choosing a date and time instant, and a progress indicator for running multithreaded tasks.





  



Licensing Information Jump to top of page

SMTools is a Java-based integrated framework providing various kinds of functionalities.

Copyright 2003-2016 Sven Maerivoet

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.


Commit History Jump to top of page
Hash Date Subject
451c2e0 Nov 1 01:34:27 2016 Added a blue-white colour map Added int() routines for finding minima and maxima in MathTools
201f54f Oct 29 02:54:07 2016 Allowed doubles for EmpiricalDistribution's percentile calculation
876e7b5 Sep 21 23:05:07 2016 Modified StringTools to have convertToCSV with a specified split character Added sinh, cosh, tanh and coth to ComplexNumber
48da222 May 18 21:21:00 2016 Added JLabelBox and updated version number to 1.5.3
5dece69 Jun 23 22:35:45 2015 Refactored MemoryStatistics to SystemInformation and added OS-type detection Added a grayscale (trimmed) colour map
2db8218 Jun 4 02:02:13 2015 Fixed a bug not creating the last component in a random JGradientColorMap
94bb6e3 Feb 8 15:19:37 2015 Recompiled
f139793 Feb 4 19:26:35 2015 Added support for random colour maps in JGradientColorMap
330eb76 Jan 19 00:53:58 2015 Added HMS display to timestamps when needed in JProgressUpdateGlassPane
413d1a2 Jan 18 18:54:20 2015 Renamed "applicatie" to "toepassing" for the Dutch locale
58bf15e Jan 14 21:02:51 2015 Added displaying the specified locale to the startup sequence
3666b25 Jan 5 23:46:38 2015 Refactored Registry to abandon the concept of Hives and serialise the object list directly
7320c29 Jan 5 18:43:07 2015 Removed application registry functionality from JStandardGUIApplication (the system registry suffices)
0267853 Jan 2 21:11:24 2015 Updated sources to 2015
54a273b Jan 2 20:52:58 2015 Release candidate v1.5.2
84fe38c Dec 21 23:32:09 2014 Disabled setExtendedState() in JStandardGUIApplication due to a bug in Swing showing a JDialog's contentPane contents in the main JFrame window
dc5c425 Dec 16 14:20:32 2014 Removed unused left-over imports from JStandardGUIApplication
9fecc06 Dec 11 10:59:48 2014 Add explicit loadCustomColorMapComponents() and saveCustomColorMapComponents() methods for JGradientColorMap
da13bd5 Dec 9 16:15:46 2014 Changed the order of the colour maps in JGradientColorMap
aa8d706 Dec 4 14:37:36 2014 Modified JNumberInputField to show a JWarningDialog in case of invalid input
71bde07 Dec 4 14:19:45 2014 Fixed a bug from JNumberInputField (should not show error dialog if none is provided)
ad0d24e Dec 4 12:04:45 2014 Refactored JNumberInputField for better custom validations
5615c81 Nov 19 18:00:47 2014 Removed setPreferredSize() from JImagePanel's constructors
d2307e6 Nov 19 16:15:56 2014 Added JStandardGUIApplication::setDynamicLayout()
b0bb0dd Nov 19 01:12:35 2014 Added number of double decimals to MathTools
79cbe99 Nov 17 15:12:00 2014 Added kUltraLightPastel, kLightPastel, and kDarkPastel color maps
ec8becc Nov 10 16:54:48 2014 Renamed TextFileWriter's writeInt() to writeInteger()
d1a9877 Nov 7 22:03:42 2014 -
1134d74 Nov 7 22:03:09 2014 Renamed JGradientColorRamp to JGradientColorMap and added custom palettes
4c7bf0d Oct 28 21:41:09 2014 Refactored Complex's arg() to default to the ]-PI,PI] interval instead of the [0,2PI[ interval
cc3641b Oct 12 23:04:25 2014 Modified ComplexNumber's argument() to return an angle between 0 and 2PI Added ComplexNumber's constants kTwo and kThree
641bb2b Oct 10 13:50:06 2014 Added cabs() to ComplexNumber
c9bc512 Oct 10 13:29:41 2014 Refactored ComplexNumber to have components instead of parts
95a9f81 Oct 10 01:37:10 2014 Refactored ComplexNumber, removed AComplexNumber and BigComplexNumber
412f92c Oct 1 00:06:15 2014 -
0ef81b5 Oct 1 00:05:43 2014 Added AComplexNumber::inverse() Fixed AComplexNumber::pow() to deal with z = 0
f46072f Sep 28 12:58:33 2014 Made JCustomColorMapChooser's default directory the current one
c96b917 Sep 24 14:14:21 2014 Removed unused locale strings
1432941 Sep 24 12:11:43 2014 Removed the GUI component cache from the framework
b7c0f1a Sep 23 11:07:01 2014 Changed activation mode for JCustomColorMapChooser to kImmediately
e2a6fbf Sep 20 12:40:32 2014 Improved cancel() functionality for JDefaultDialog when activation is postponed
48fa12d Sep 6 00:12:35 2014 Various updates to JNumberInputField and ANumberFilter (number validation), JStatusBar (battery label), JDefaultDialog (ok and cancel callbacks), JCustomColorMapChooser (extract colormap components), JStandardGUIApplication (enable/disable window resizing)
4f5e00c Aug 1 01:20:01 2014 Fixed version numbering
3d3b64e Aug 1 01:14:42 2014 Recreated JavaDocs
8a204ed Aug 1 01:11:03 2014 Merge branch 'hotfix3' into release
ae123d7 Aug 1 01:04:09 2014 Fixed gitignore
95ce7f1 Aug 1 01:00:02 2014 Fixed Git commit
e0001cd Aug 1 00:57:37 2014 Removed binary class files
963a6fd Jul 23 13:14:30 2014 Refactored JGUIComponentCache to fail when a non-existing component is requested for retrieval
38e85fa Jul 23 12:37:25 2014 Fixed behaviour when using kImmediately in JDefaultDialog
efa18cd Jul 23 00:17:49 2014 Added hideMouseCursor() to JStandardGUIApplication
bd52cc6 Jul 22 16:58:27 2014 Fixed a bug in math.complex's calculation of pow()
268e8b2 Jul 17 17:06:35 2014 Updated JStandardGUIApplication with constructRadioButtonMenuItem Updated JIncompleteWarningDialog (removed space between text and exclamation mark) Updated JNumberInputField to automatically scan the value (without the need to press ENTER)
006f045 Jul 14 16:02:26 2014 Updated JavaDocs
34349e6 Jul 14 15:21:44 2014 Merge branch 'develop4' into release
62cd7b0 Jul 13 10:25:55 2014 Updated JDerivedGUIApplication's concurrent task execution
d10fa2b Jul 13 00:58:35 2014 Fixed TaskExecutor to use the number of available processors
7679e1d Jul 13 00:31:35 2014 Updated JProgressUpdateGlassPane with an estimation of the time left Fixed ATask to call finishTask() at the end
e0b16b0 Jul 11 22:24:59 2014 Included JavaDoc screenshots for JProgressUpdateGlassPane
e6df4f8 Jul 11 20:05:54 2014 Stable version
f91cd94 Jun 19 01:11:42 2014 Various minor updates
65bd327 Jun 17 01:44:09 2014 Upgraded concurrent execution tools
3229515 May 28 13:02:01 2014 Refactored ComplexNumber and BigComplexNumber as derived classes of AComplexNumber
affe19a May 27 11:16:44 2014 Fixed a bug in setting up JStandardGUIApplication's maximised window state
b7f51bf May 27 02:05:44 2014 JStandardGUIApplication's windowResized() callback is only activated when the window has physically changed size
6e03094 May 27 01:06:12 2014 Removed JStandardGUIApplication's WindowStateListener Removed double calls to windowResized() in JStandardGUIApplication
c42168e May 25 01:33:15 2014 Made the order of member methods in JDerivedGUIApplication compliant to that of JStandardGUIApplication
c09625a May 23 02:08:23 2014 -
06b80af May 23 02:07:28 2014 Refactored ATask to only handle single tasks
e175abb May 7 17:17:55 2014 Hotfix JDerivedGUIApplication
1e747d9 May 7 16:33:17 2014 Fixed JTaskExecutor to finishTasks() when fProgressUpdateGlassPane is null Extended TaskExecutor to work with a specified number of threads Updated all javadoc comments to specify JDK1.8 and 2014 Changed kRequiredMinorJavaVersion in JStandardGUIApplication to 7 Changed ComplexNumber and BigComplexNumber power() to pow() Renamed JDevelopMode to DevelopMode Renamed JMemoryStatistics to MemoryStatistics Added optional standard keyboard blocking to JProgressUpdateGlassPane Removed postInitialise() from JStandardGUIApplication (can be handled by constructors of derived classes)
c83872f May 5 20:03:28 2014 Updated all the javadoc comments Refactored LSLR to use an ArrayList instead of a Vector Renamed org.sm.smtools.miscellaneous to org.sm.smtools.util Modified StringTools to work with complex numbers
a195dd2 May 4 17:46:00 2014 Fixed setupXXX() instead of getXXX() methods in the entire source tree
cb56686 May 4 02:20:24 2014 Redesigned JStandardGUIApplication by changing getXXX() into setupXXX() Rearranged org.sm.smtools.application.util package Fixed a null pointer bug when the statusbar is disabled Redesigned the operation of the statusbar
27da509 May 3 03:49:12 2014 Added ComplexNumber Added BigComplexNumber Modified JAboutBox to reflect BigDecimalMath library
6c07d93 May 1 03:29:10 2014 [EmpiricalDistribution] Added values for the chi-squared distribution [EmpiricalDistribution] Added a comparison for the Jarque-Bera test statistic [EmpiricalDistribution] Added a trimmed mean statistic [EmpiricalDistribution] Added a standard z-score statistic [EmpiricalDistribution] Provided separate access to sorted data [DistributionComparator] Added a covariance estimator [DistributionComparator] Added Pearson's correlation coefficient [MathTools] Added prime testing [MathTools] Added logarithms with a custom base
ce9cc34 Apr 28 16:01:34 2014 Reinitialised the registry databases for JDK1.8
f7c6477 Apr 28 12:22:52 2014 Refactored main package to org.sm.smtools
193a8c6 Jun 22 22:25:17 2013 Updated JavaDocs
00933ce Jun 22 22:24:42 2013 Updated MathTools with the sinc() function and the Lanczos kernel.
93d9d04 Apr 29 13:28:40 2013 Included that GTK, Quaqua and Windows (classic) LAFs
6111b7e Apr 28 19:26:06 2013 Refactored Registry and JARResources to prevent memory leaks in resources
5febd01 Apr 8 17:04:11 2013 Debugged TextFileParser for parsing doubles and empty lines Added isComment() to StringTools Allowed TimeStamp to accept HH:mm input strings Updated FileParseException to handle TextFileParser CSV-reads
85bcd6d Mar 5 00:57:40 2013 Fixed updating JStatusBar with the correct battery status icon
197439a Mar 4 20:34:53 2013 Fixed tooltip in JExtendedStatusBar
2d334fc Mar 4 16:41:16 2013 Added transparency to battery level icons
e18192a Mar 4 16:30:11 2013 Changed the update period for JExtendedStatusBar
a80306e Mar 4 16:24:29 2013 JavaDoc update
53e9589 Mar 4 16:24:07 2013 Added "Java Native Access 3.5.1" to the used libraries in JAboutBox
f71a5fb Mar 4 16:20:22 2013 Refactored JStatusBar Included battery level indicator in JExtendedStatusBar
6cd5654 Feb 9 23:59:25 2013 Fixed kRotatingSector in JProgressUpdateGlassPane
c61c3ca Feb 4 12:05:26 2013 Updated JavaDocs
d25ac16 Feb 4 12:04:53 2013 Added blocking functionality to JProgressUpdateGlassPane
067d825 Feb 3 18:17:08 2013 Upgraded JTaskExecutor with an isBusy() method
69cf5d6 Feb 2 19:06:20 2013 Updated JDerivedGUIApplication to cycle through the various types of glasspane progress updates
2e88ee6 Feb 2 18:47:01 2013 Added task execution via multithreading support Added various progress update functionalities via the glasspane
21fca52 Jan 6 02:39:45 2013 Added JScrollablePanel
3322c33 Jan 5 15:32:56 2013 Updated JStandardGUIApplication and JDerivedGUIApplication with menu item construction Changed JCustomColorMapChooser's file "save" dialog
8957ab5 Jan 5 00:41:02 2013 Updated StringTools with getIndentation() Incorporated indentation in JStandardGUIApplication (check box) menu item construction
1c3ea85 Jan 4 23:46:42 2013 Updated JStandardGUIApplication with (check box) menu item construction methods
5d15287 Jan 4 19:38:58 2013 Updated I18NL10N to return null for empty mnemonics
43b165d Jan 4 19:24:44 2013 Updated JCustomColorMapChooser with parametrisation of the number of colours
8589b14 Jan 2 18:23:38 2013 Updated JGradientColorRamp Created JCustomColorMapChooser
18c2c27 Jan 1 22:30:56 2013 Created a custom colour map for JGradientColorRamp
19ac19b Dec 27 22:52:07 2012 Set status bar update period to 10 seconds.
6e9e65b Dec 27 01:00:28 2012 Changed the statusbar's update period to 1 second
7f11c9f Dec 26 01:16:47 2012 Fixed MathTools::atan()
e6d9658 Dec 21 01:48:39 2012 Added extra color maps to JGradientColorMap Updated Chrono with start() and stop() functionality
3ad742f Dec 17 18:47:41 2012 -
273f571 Dec 17 18:46:23 2012 Updated JStandardGUIApplication with beep(), getScreenSize(), ...
8e6ff74 Dec 7 15:39:22 2012 Updated MathTools Added glass pane functionality
e8ed175 Dec 5 02:14:26 2012 Fixed StringTools.convertDoubleToString Added StringTools.convertComplexToString Added StringTools.getDoublePrecision
555d1ac Dec 4 13:43:42 2012 Updated I18NL10N keys
80d2566 Nov 29 16:17:03 2012 Merge branch 'develop3' into release
d93b3b1 Nov 29 16:10:28 2012 Explicitly included doc-folder
a7ffbe6 Nov 29 16:08:59 2012 Updated JStandardGUIApplication
cea268b Nov 29 16:03:32 2012 Made the update step for the time chooser in JDerivedGUIApplication discrete
a37aa57 Nov 28 09:09:08 2012 Updated JStandardGUIApplication for accessing the status bar
863fa83 Nov 28 01:44:10 2012 Added JStatusBar
b602d02 Nov 25 01:22:58 2012 Fixed locale properties
f33a1ba Nov 25 01:08:35 2012 Refactored Messages towards full support for I18N and L10N
6b36ba7 Nov 16 16:22:21 2012 Merge branch 'develop2' into release
e10d45a Nov 16 16:18:31 2012 Added Kolmogorov-Smirnov testing
b2078c7 Nov 12 00:45:32 2012 * Updated StringTools with memory conversions. * Added JMemoryStatistics. * Updated JAboutBox with memory estimations. * Updated MathTools with min-max extrema finder and a kernel smoother. * Updated EmpiricalDistribution with a kernel density estimation of the PDF. * Updated TextFileParser with functionality to quickly load CSV-files.
97202df Jan 20 15:44:32 2012 Merge branch 'hotfix-2' into release
7c8b569 Jan 20 15:43:31 2012 Adapted codebase to JDK1.7 compliance: generics <>
5a03d0a Jan 20 13:58:21 2012 Merge branch 'hotfix-1' into release
23e855e Jan 20 13:57:37 2012 JStandardGUIApplication: fixed new JDK1.7 location of Nimbus PLAF
8b9fc1c Jan 8 13:17:40 2012 Merge branch 'develop' into release
fcf8074 Jan 8 09:38:46 2012 Included application-resources images in commit
04b0c19 Jan 8 09:32:04 2012 Changed about box images in API documentation
c6bd3ea Jan 8 09:15:15 2012 Updated licencing conditions to 2012. Changed affiliation and background in JDerivedGUIApplication
981c49e Dec 26 18:59:36 2011 Added JDateStamp setAdjusted() for yyyy-MM-dd parsing
7b6b5bb Dec 26 18:54:49 2011 Stable master branch
df9de0d Dec 23 23:48:38 2011 Added week-of-year in title of JDateChooser
065c495 Dec 9 12:23:57 2011 Complete build
c111675 Dec 9 12:23:25 2011 Added rollover capabilities to DateStamp
ec62918 Dec 6 01:55:51 2011 Fixed conversion bugs in DateStamp.set() and TimeStamp.set()
6b4216d Dec 5 09:45:43 2011 Fixed a bug in JDateChooser (array index out of bounds when selectedMonth == 12)
1d8fb16 Nov 22 22:07:18 2011 Fixed error in parsing ctor()' string-args in DateStamp and TimeStamp Fixed error in compareTo() in DateStamp and TimeStamp
b4f42cb Nov 21 20:25:40 2011 Fixed conversion error for DateStamp(dateString)
271e983 Oct 4 16:29:06 2011 Fixed higher order statistics for EmpiricalDistribution
9580908 Sep 25 20:27:10 2011 Added smtools.swing.util.SpringUtilities
388f404 Sep 17 20:43:12 2011 Adapted build script
6b3f0f4 Sep 17 20:14:12 2011 Fixed an encoding-bug in TextFileParser
e28e00e Sep 17 14:21:31 2011 Added "encoding" to TextFileParser for handling UTF-8, ... Changed JComboBox with in JDateChooser (for compliance with JDK 1.7)
6b5f67e Aug 31 19:56:31 2011 Fixed TextFileParser:getNextCSV() to handle a final comma and return an empty string
c7f82c4 Aug 27 02:40:43 2011 Renamed MathTools::normalisedLinearInterpolation Added MathTools::findMinimum Added MathTools::findMaximum Added MathTools::quadr Added MathTools::cubicRoot Added MathTools::searchArrayBounds Added EmpiricalDistribution (for calculating CDFs, PDFs, percentiles, and other statistical quantities)
61a211d Aug 11 10:03:58 2011 Extended TimeStamp.java with functionality to convert between time zones
13dce72 Jul 13 00:51:40 2011 Changed getImage() from JARResources.java to complete loading
beca008 Jul 11 15:19:56 2011 Changed JGradientColorRamp to work with nrOfDecimals instead of int vs. double
0433a25 Jul 7 13:36:10 2011 1st commit