Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure+;跷跷板:为什么不&x27;这个GUI不工作吗?_Clojure_Seesaw - Fatal编程技术网

Clojure+;跷跷板:为什么不&x27;这个GUI不工作吗?

Clojure+;跷跷板:为什么不&x27;这个GUI不工作吗?,clojure,seesaw,Clojure,Seesaw,我试图创建一个项目,就像跷跷板示例一样,我创建了一个名为my gui project的项目,将代码从src/window\u builder/core.clj和src/window\u builder/MyForm.java复制到我的项目中,并将第31行更改为: (让[form(identify(window_builder.MyForm.))] 进入: (让[form(identified(my_gui_project.MyForm.))] 然后,我运行了以下命令:lein deps、lein

我试图创建一个项目,就像跷跷板示例一样,我创建了一个名为
my gui project
的项目,将代码从
src/window\u builder/core.clj
src/window\u builder/MyForm.java
复制到我的项目中,并将第31行更改为:

(让[form(identify(window_builder.MyForm.))]

进入:

(让[form(identified(my_gui_project.MyForm.))]

然后,我运行了以下命令:
lein deps
lein compile
lein run-m my gui project.core
,它返回以下错误:

Exception in thread "main" java.lang.ClassNotFoundException: my_gui_project.MyForm, compiling:(my_gui_project/core.clj:31:24)
为什么会发生这种情况?代码完全相同,我刚刚更改了文件夹名称

这是完整的代码:

core.clj

(ns my-gui-project.core)
(:gen类)
(:使用[seesaw.core])
(:require[seesaw.selector:as selector]))
;这是有趣的部分。请注意,在MyPanel.java中,我们使用的小部件
;有兴趣使用setName()设置其名称。
(定义标识)
给定一个根小部件,找到所有命名的小部件并设置它们的Seesaw:id
因此,他们可以很好地与select和所有产品配合使用。”
[根]
(doseq[w(选择根[:*])]
(如果let[n(.getName w)]
(选择器/id!w(关键字n)))
根)
(def声明[“CA”、“GA”、“WA”])
(def默认值
{:名字叫“劳拉”
:姓“帕尔默”
:大街“123大街”
:城市“双峰”
:zip“12345”
:state“WA”})
;一个助手,用于创建表单实例,为其添加跷跷板注释,并执行以下操作
;其他一些初始化。
(以我的名义
[]
(让[表单(标识(my_gui_project.MyForm.))]
;初始化状态组合框
(配置!(选择表单[:#状态]:模型状态)
表格(
;现在,我们只需创建面板,使用
;seesaw.core/value!并在对话框中显示。请注意,除了设置
;小部件的名称,MyForm.java中的代码严格用于布局
在Clojure中完成;行为等。
(定义-主参数[&args]
(稍后调用)
(让[表单(值!(我的表单)默认值])
结果(->(对话框:内容形式:选项类型:确定取消)打包!显示!)]
(如果(=:成功结果)
(println“用户输入:”(值形式))
(println“用户已取消”())))
project.clj

(defproject my gui项目“0.1.0-SNAPSHOT”
:description“修复:写入描述”
:url“http://example.com/FIXME"
:许可证{:名称“Eclipse公共许可证”
:url“http://www.eclipse.org/legal/epl-v10.html"}
:依赖项[[org.clojure/clojure“1.8.0”]
[跷跷板“最新”]]
:main^:跳过aot my-gui-project.core
:目标路径“target/%s”
:profiles{:uberjar{:aot:all})

您可能还需要重命名window\u builder目录以匹配名称的更改。并更改任何java文件中的包名称


这与Clojure中的项目命名模式一致,即目录\u name/namespace.clj中的-,通过测试,我发现在
MyForm.java
中还有一个对项目名称的引用。在
MyForm.java
中更改名称后,它可以工作

编辑:正如@Carcigenicate在帖子(现已删除)中引用的那样,还需要在
project.clj中添加
:java源路径[“src”]

原始
MyForm.java

packagewindow\u生成器;
导入java.awt.GridBagConstraints;
导入java.awt.GridBagLayout;
导入java.awt.Insets;
导入javax.swing.JButton;
导入javax.swing.JLabel;
导入javax.swing.JPanel;
导入javax.swing.JTextField;
导入javax.swing.JComboBox;
公共类MyForm扩展了JPanel{
私有JTextField名字;
私有JTextField lastName;
私人JLabel lblStreet;
私有JTextField textField;
私人JLabel-lblCity;
私有JTextField textField_1;
私人JLabel lblState;
专用JComboBox组合框;
私人JLabel lblState_1;
私有JTextField textField_2;
/**
*创建面板。
*/
公共MyForm(){
GridBagLayout GridBagLayout=新的GridBagLayout();
gridBagLayout.columnWidths=newint[]{72,134,0,0,0,0};
gridBagLayout.rowHeights=newint[]{28,28,0,0};
gridBagLayout.columnWeights=新的double[]{0.0,1.0,0.0,0.0,1.0,double.MIN_值};
gridBagLayout.rowWeights=新的double[]{0.0,0.0,0.0,double.MIN_值};
setLayout(gridBagLayout);
JLabel lblFirstName=新的JLabel(“名字:”);
GridBagConstraints GBClblfirstName=新的GridBagConstraints();
gbclblfirstname.anchor=gridbagstraints.WEST;
gbclblfirstname.insets=新的insets(0,0,5,5);
gbclblfirstname.gridx=0;
gbclblfirstname.gridy=0;
添加(lblFirstName、GBCLBLFirstName);
firstName=newjtextfield();
firstName.setName(“firstName”);
firstName.setColumns(10);
GridBagConstraints gbc_firstName=新的GridBagConstraints();
gbc_firstName.gridwidth=2;
gbc_firstName.anchor=gridbagstraints.NORTH;
gbc_firstName.fill=GridBagConstraints.HORIZONTAL;
gbc_firstName.insets=新的insets(0,0,5,5);
gbc_firstName.gridx=1;
gbc_firstName.gridy=0;
添加(名字,gbc_名字);
JLabel lblLastName=新的JLabel(“姓氏:”);
GridBagConstraints GBClbllastName=新的GridBagConstraints();
GBClbllastName.anchor=gridbagstraints.WEST;
gbc_lblLastName.insets=新的insets(0,0,5,5);
gbc_lblLastName.gridx=3;
gbc_lblLastName.gridy=0;
添加(lblLastName、GBCLBLLASTNAME);
lastName=newjtextfield();
lastName.setName(“姓氏”);
lastName.setColumns(10);
GridBagConstraints gbc_lastName=新的GridBagConstraints();
gbc_lastName.gridwidth=2;
gbc_lastName.fill=GridBagConstraints.HORIZONTAL;
gbc_lastName.insets=新的insets(0,0,5,0);
gbc_lastName.anchor=gridbagstraints.NORTH;
G