I have a project created with help of GUI designer. Here is code of main form.
public class MainForm { MainForm() { directLineOkButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { //some action } } }); crossLineOkButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { //some action }); clearButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { //some action }); cancelButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { //some action }); saveButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { //some action }); } public JPanel getMainPanel() { return mainPanel; } private void createUIComponents() { drawingPanel = new DrawingPanel(); } private JPanel mainPanel; private JComboBox directDirectionCombobox; private JButton directLineOkButton; private JButton crossLineOkButton; private JComboBox crossLineComboBox; private JTextField crossLineSizeValue; private JButton clearButton; private JLabel directLineLabel; private JPanel directLinePanel; private JLabel crossLineLabel; private JPanel crossLinePanel; private JPanel okClearButtonPanel; private JTextField directLineSizeValue; private JButton saveButton; private JPanel drawingPanel; private JButton cancelButton; }
It works fine. Jar file generates fine, here code of pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>DOC</groupId> <artifactId>DOC</artifactId> <version>1.0</version> <dependencies> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.9</version> </dependency> </dependencies> <build> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>1.6</source> <target>1.6</target> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <mainClass>Main</mainClass> </manifest> </archive> </configuration> </plugin> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <archive> <manifest> <mainClass>Main</mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> </plugin> </plugins> </build> </project>
But when I try to run jar file there is a mistake.
Exception in thread "main" java.lang.NullPointerException at MainForm.<init>(MainForm.java:14) at Main.main(Main.java:13)
It show that mistake is at the line where directLineOkButton listener is created. I create listener like said here: http://www.jetbrains.com/idea/training/demos/GUI_Designer/GUI_Designer.html in constructor using cmd+o. Here is code of xml of form:
<?xml version="1.0" encoding="UTF-8"?> <form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="MainForm"> <grid id="27dc6" binding="mainPanel" layout-manager="FormLayout"> <rowspec value="center:23px:noGrow"/> <rowspec value="top:3dlu:noGrow"/> <rowspec value="center:47px:noGrow"/> <rowspec value="top:3dlu:noGrow"/> <rowspec value="center:max(d;4px):noGrow"/> <rowspec value="top:3dlu:noGrow"/> <rowspec value="center:max(d;4px):noGrow"/> <rowspec value="top:7dlu:noGrow"/> <rowspec value="center:25px:noGrow"/> <rowspec value="top:174dlu:noGrow"/> <rowspec value="center:max(d;4px):noGrow"/> <colspec value="fill:d:noGrow"/> <colspec value="left:4dlu:noGrow"/> <colspec value="fill:452px:noGrow"/> <constraints> <xy x="20" y="20" width="797" height="453"/> </constraints> <properties/> <border type="none"/> <children> <component id="3b663" class="javax.swing.JLabel" binding="directLineLabel"> <constraints> <grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/> <forms/> </constraints> <properties> <text value="Direct Line"/> </properties> </component> <grid id="499e0" binding="directLinePanel" layout-manager="FormLayout"> <rowspec value="center:d:grow"/> <colspec value="fill:98px:noGrow"/> <colspec value="left:4dlu:noGrow"/> <colspec value="fill:80px:grow"/> <colspec value="left:4dlu:noGrow"/> <colspec value="fill:max(d;4px):noGrow"/> <colspec value="left:4dlu:noGrow"/> <colspec value="fill:max(d;4px):noGrow"/> <constraints> <grid row="1" column="0" row-span="2" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/> <forms/> </constraints> <properties/> <border type="none"/> <children> <component id="c383d" class="javax.swing.JComboBox" binding="directDirectionCombobox"> <constraints> <grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="2" anchor="8" fill="1" indent="0" use-parent-layout="false"/> <forms/> </constraints> <properties> <enabled value="true"/> <model> <item value="Вверх"/> <item value="Вниз"/> <item value="Вправо"/> <item value="Влево"/> </model> </properties> </component> <component id="17aa1" class="javax.swing.JTextField" binding="directLineSizeValue"> <constraints> <grid row="0" column="2" row-span="1" col-span="1" vsize-policy="0" hsize-policy="6" anchor="8" fill="1" indent="0" use-parent-layout="false"> <preferred-size width="150" height="-1"/> </grid> <forms defaultalign-horz="false"/> </constraints> <properties/> </component> <component id="44fc7" class="javax.swing.JButton" binding="directLineOkButton"> <constraints> <grid row="0" column="4" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/> <forms/> </constraints> <properties> <text value="OK"/> </properties> </component> </children> </grid> <component id="5a571" class="javax.swing.JLabel" binding="crossLineLabel"> <constraints> <grid row="4" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/> <forms/> </constraints> <properties> <text value="Cross Line"/> </properties> </component> <grid id="77f1a" binding="crossLinePanel" layout-manager="FormLayout"> <rowspec value="center:d:grow"/> <colspec value="fill:98px:noGrow"/> <colspec value="left:4dlu:noGrow"/> <colspec value="fill:80px:grow"/> <colspec value="left:4dlu:noGrow"/> <colspec value="fill:max(d;4px):noGrow"/> <colspec value="left:4dlu:noGrow"/> <colspec value="fill:max(d;4px):noGrow"/> <constraints> <grid row="6" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/> <forms/> </constraints> <properties/> <border type="none"/> <children> <component id="32368" class="javax.swing.JComboBox" binding="crossLineComboBox"> <constraints> <grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="2" anchor="8" fill="1" indent="0" use-parent-layout="false"/> <forms/> </constraints> <properties> <model> <item value="Вверх-вправо"/> <item value="Вверх-влево"/> <item value="Вниз-вправо"/> <item value="Вниз-влево"/> </model> </properties> </component> <component id="dbf23" class="javax.swing.JTextField" binding="crossLineSizeValue"> <constraints> <grid row="0" column="2" row-span="1" col-span="1" vsize-policy="0" hsize-policy="6" anchor="8" fill="1" indent="0" use-parent-layout="false"> <preferred-size width="150" height="-1"/> </grid> <forms defaultalign-horz="false"/> </constraints> <properties/> </component> <component id="c5c8a" class="javax.swing.JButton" binding="crossLineOkButton"> <constraints> <grid row="0" column="4" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/> <forms/> </constraints> <properties> <text value="OK"/> </properties> </component> </children> </grid> <grid id="53bbc" binding="okClearButtonPanel" layout-manager="FormLayout"> <rowspec value="center:d:noGrow"/> <colspec value="fill:d:noGrow"/> <colspec value="left:4dlu:noGrow"/> <colspec value="fill:max(d;4px):noGrow"/> <colspec value="left:4dlu:noGrow"/> <colspec value="fill:max(d;4px):noGrow"/> <constraints> <grid row="8" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/> <forms/> </constraints> <properties> <enabled value="false"/> </properties> <border type="none"/> <children> <component id="41ba7" class="javax.swing.JButton" binding="saveButton"> <constraints> <grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/> <forms/> </constraints> <properties> <text value="Сохранить"/> </properties> </component> <component id="a6bf6" class="javax.swing.JButton" binding="clearButton"> <constraints> <grid row="0" column="2" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/> <forms/> </constraints> <properties> <text value="Очистить"/> </properties> </component> <component id="40f1c" class="javax.swing.JButton" binding="cancelButton"> <constraints> <grid row="0" column="4" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/> <forms/> </constraints> <properties> <text value="Отменить"/> </properties> </component> </children> </grid> <grid id="2e94e" binding="drawingPanel" custom-create="true" layout-manager="FormLayout"> <rowspec value="center:d:grow"/> <colspec value="fill:d:grow"/> <constraints> <grid row="0" column="2" row-span="11" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/> <forms/> </constraints> <properties> <background color="-1"/> </properties> <border type="none"/> <children/> </grid> </children> </grid> </form>
GUI Designer in IntelliJ IDEA enables you to create graphical user interfaces (GUI) for your applications using Swing library components. The tool helps you speed up the most frequent tasks: creating dialogs and groups of controls to be used in a top-level container such as a JFrame.
Maven IntelliJ IDEA supports a fully-functional integration with Maven that helps you automate your building process. You can easily create a new Maven project, open and sync an existing one, add a Maven support to any existing IntelliJ IDEA project, configure and manage a multi-module project.
If you removed the Maven tool window from the sidebar, select View | Tool Windows | Maven from the main menu to reopen it.
You must include ideauidesigner-maven-plugin
:
<build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>ideauidesigner-maven-plugin</artifactId> <version>1.0-beta-1</version> <executions> <execution> <goals> <goal>javac2</goal> </goals> </execution> </executions> <configuration> <fork>true</fork> <debug>true</debug> <failOnError>true</failOnError> </configuration> </plugin> </plugins> </build>
and optionally - if you use GridLayoutManager
or JGoodies
- include also forms_rt
as dependency:
<dependency> <groupId>com.intellij</groupId> <artifactId>forms_rt</artifactId> <version>7.0.3</version> </dependency>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With