我一直在负责制作一个图形用户界面,基本上需要一些用户输入并执行由程序正在运行的机器访问各个驱动器的一些文件夹/文件操作。 在设计这个图形用户界面,我开始认识到,MVC将会使我的生活更容易和其他人谁决定修改代码,但我真的不能看到这可以通过NetBeans的完成。
我已经做了一些关于这一主题读书了,我实在看不出任何明确的答案,以这是否可以在NetBeans的完成。 当然这是可以做到,如果我以编程方式构建GUI,但有些失败的,为什么我选择使用NetBeans的目的。
我一直在负责制作一个图形用户界面,基本上需要一些用户输入并执行由程序正在运行的机器访问各个驱动器的一些文件夹/文件操作。 在设计这个图形用户界面,我开始认识到,MVC将会使我的生活更容易和其他人谁决定修改代码,但我真的不能看到这可以通过NetBeans的完成。
我已经做了一些关于这一主题读书了,我实在看不出任何明确的答案,以这是否可以在NetBeans的完成。 当然这是可以做到,如果我以编程方式构建GUI,但有些失败的,为什么我选择使用NetBeans的目的。
NetBeans是细做这个。
实现的关键是,虽然所有的基本Swing组件是MVC,在大多数情况下,你不跟他们这种方式进行交互。 一个简单的文本字段有其内在的模式,但这种模式是不是你的模型,文本字段是更原始。
与更高级别的事件(按钮的动作并没有什么),而不是按下按钮和箭头移动和鼠标点击你的模型处理。
因此,对于高层次MVC,通信的主要机制是通过的PropertyChangeListeners。 而构建的应用程式上的基本任务是与他们的GUI组件一起布线各类数据元素的PCLS在一起。
例如,一个简单的例子是你有一个项目列表。 而该列表呈现通过一个JTable在屏幕上,并且该表是一个JPanel。
您的列表中有它自己的模式,即它不是一个简单的Java列表。 这不是一个列表,因为标准的Java清单不支持PCL通知。 但是,你的模型显然包裹这样的列表。
现在,下一个问题是你如何线了JTable中与您的列表模型有关。
一,你可以继承的JTable并将其绑定到你的模型。 或者更简单地说,你使用的JTable作为一种原始的,让封闭的JPanel管理模型和JTable中之间的相互作用。
这意味着要具备的JPanel实施的PropertyChangeListener,然后,接线的一切行动的时候,你做这样的事情:
ListModel myModel = new ListModel();
ListPanel myPanel = new ListPanel();
myModel.addPropertyChangeListener(myPanel);
现在,只要您的ListModel的改变,是将通知ListPanel。
在您ListPanel你可以有喜欢的东西:
@Override
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getPropertyName().equals(ListModel.CHANGED)) {
ListModel model = (ListModel) evt.getSource();
DefaultTableModel tm = (DefaultTableModel) listTable.getModel();
tm.setRowCount(0);
for (String s : model.getList()) {
tm.addRow(new Object[]{s});
}
}
}
现在,你可以看到这只是重新加载整个表的模式,但你可以让你的属性更改为你想要的细粒。 你也可以看到,如果这是其他一些模型(如某人或某事),你可以在面板上填写个人文本字段和诸如此类的东西。
这是一个非常简单的GUI,但它显示了它的所有电线的基本面在一起。 我认为这一点是在Swing实例是伟大的一个面板屏幕,但是当你开始添加其他观点并不规模都失去了。
你JPanels基本成为联合VC,因为你的GUI收益的复杂性那么您可以像这样的东西出来,但它的作品相当不错合理数量的屏幕和这样的。
有两种方式Netbeans的可以帮助你利用其基本代码:GUI构建器(1)和NB平台(2)。
(1)Netbeans的有在Java世界中更好地拖N -下降GUI构建器的同时,一个代号为马蒂斯 。
这就是说,它是一个很长的时间,因为我与它的工作 - 我从来没有真正喜欢生成的代码,这不是很理解(这当然不是自动生成的代码的目的)。 对于更复杂的用户界面,我们手工写的布局和工作是可以忍受的,即使不是最愉快的。 对于简单的用户界面,我会再次尝试GUI构建器,对于有很多有线逻辑的复杂的用户界面,我可能还是会用手工写。
要查看GUI构建器是如何工作的,看一看的许多视频教程之一,例如这一个:
(2)NetBeans平台是NetBeans中,什么RCP是在Eclipse。 一组丰富的一个IDE开发的组件,即可以重复使用。 我简要地看着NB平台 ,我们会用它,如果项目没有改变路线。 :也许这太问题可以在这方面多棚光哪个富客户端平台使用? 。
关于MVC。 有JSR 296,一个通用的Swing应用程序框架,看起来有点前途的,但在2011年撤出 。 这并没有阻止人们到餐桌,并在其上工作,因为这个项目表明: 更好的Swing应用程序框架 ,以在2012年中期释放,即使你不使用这样的框架, 请不要把所有的代码在一个类 (如您在您的评论提到),但创建一个简单的模型/控制器和保持组分分离的用户界面。 它并不需要是看中一个简单的应用程序,最小的MVC上下的关注点分离就足够。
I also hit this problem and i found a link which gives a good example how to seperate the controller from the view using the NetBeans GUI builder.
Here is the link.