Ped*_*ler 525 java user-interface swing jframe
我正在开发一个显示图像的应用程序,并从数据库中播放声音.我正在尝试决定是否使用单独的JFrame从GUI向数据库添加图像.
我只是想知道使用多个JFrame窗口是否是一个好习惯?
And*_*son 443
我只是想知道使用多个JFrame是否是一个好习惯?
糟糕(坏,坏)的做法.
在一个GUI中可以使用多种方式显示多个元素,例如:
CardLayout
(简短演示.)适用于:
JInternalFrame
/JDesktopPane
通常用于MDI.JTabbedPane
对于组件组.JSplitPane
一种显示两个组件的方法,其中一个或另一个(大小)之间的重要性根据用户的行为而变化.JLayeredPane
很多很好的..组件.JToolBar
通常包含一组操作或控件.可以在GUI周围拖动,也可以根据用户需要完全关闭.如上所述,将根据父母这样做最小化/恢复.JList
(下面的简单示例).JTree
.但是,如果这些策略不适用于特定用例,请尝试以下操作.使用框架作为对话框的父级,建立单个main JFrame
,然后为其余的自由浮动元素显示JDialog
或JOptionPane
实例.
在多个元素是图像的情况下,最好使用以下任一项:
JLabel
(以滚动窗格为中心)以显示用户当时感兴趣的任何图像.如图所示ImageViewer
.JList
.正如这个答案所见.它的"单行"部分只有在它们具有相同尺寸时才有效.或者,如果您准备在运行中缩放图像,它们都具有相同的宽高比(例如4:3或16:9).ryv*_*age 198
JFrame
自从我开始编写Swing应用程序以来,我已经实现了多种方法.在大多数情况下,我在一开始就这样做,因为我不知道更好.然而,随着我作为开发人员的经验和知识的成熟,以及开始阅读和吸收更多经验丰富的Java开发者在线的意见,我试图摆脱多重JFrame
方法(在当前项目和未来的项目中) )只有...才能得到...... 来自我的客户的抵抗!当我开始实施模态对话框来控制"子"窗口和JInternalFrame
单独的组件时,我的客户开始抱怨!我很惊讶,因为我正在做我认为最好的练习!但是,正如他们所说,"幸福的妻子是幸福的生活." 同样适用于您的客户.当然,我是承包商,所以我的最终用户可以直接访问我,开发人员,这显然不是常见的情况.
所以,我将解释多种JFrame
方法的好处,以及其他人提出的一些缺点.
JFrame
s,您可以让最终用户分散和控制他/她的屏幕上的内容.这个概念感觉"开放",不受限制.当你走向一大片JFrame
和一大堆时,你会失去这一点JInternalFrame
.JFrame
s.但是,我希望数据输入屏幕是JDialog
其父级是数据查看器.我做了更改,并立即接到最终用户的电话,最终用户严重依赖于他可以最小化或关闭查看器并保持编辑器打开,同时他引用程序的另一部分(或网站,我不要不记得了.他不是一个多显示器,所以他需要输入对话框是第一个,而其他东西是第二个,数据查看器完全隐藏.这是不可能的,JDialog
而且当然也不可能JInternalFrame
.我不情愿地将它改回原来是JFrames
因为他的理智而分开,但它教会了我一个重要的教训.JInternalFrame
比一个更容易JFrame
.事实上,根据我的经验,JInternalFrames
提供的灵活性要低得多.我已经开发了一种系统的方法来处理JFrame
我的应用程序中的s 的打开和关闭,这真的很好.我几乎完全从框架的代码本身控制框架; 创建新框架,SwingWorker
控制后台线程上的数据检索和EDT上的GUI代码,如果用户试图打开它,则恢复/带到框架前面,等等.所有你需要打开我的JFrame
s是调用一个公共静态方法open()
和open方法,结合一个windowClosing()
事件处理其余的(框架是否已经打开?是不是打开,但是加载?等等)我把这个方法作为一个模板,所以对每个框架都不难实现.JFrame
需要更多的空间而不是a JInternalFrame
,即使你打开100 JFrame
秒,你真的会消耗多少资源?如果由于资源问题导致内存泄漏:调用dispose()
释放框架用于垃圾收集的所有资源(并且,我再说一次,JInternalFrame
应该调用完全相同的问题).我写了很多,我觉得我可以写得更多.无论如何,我希望我不会因为这是一个不受欢迎的意见而得到投票.这个问题显然是一个有价值的问题,我希望我提供了一个有价值的答案,即使它不是普遍意见.
每帧多帧/单文档(SDI)与每帧单帧/多文档(MDI)的一个很好的例子是Microsoft Excel.MDI的一些好处:
SDI(单文档界面,即每个窗口只能有一个文档):
MDI(多文档界面,即每个窗口可以有多个文档):
Dun*_*ear 51
我想用我刚刚参与的一个例子来反驳"非用户友好"的论点.
在我们的应用程序中,我们有一个主窗口,用户将各种"程序"作为单独的选项卡运行.我们尽可能地尝试将应用程序保留在这个窗口中.
他们运行的"程序"之一提供了系统生成的报告列表,用户可以单击每行上的图标弹出打开报告查看器对话框.此查看器显示相当于报告的纵向/横向A4页面,因此像此窗口的用户非常大,几乎填满了他们的屏幕.
几个月前,我们开始收到客户的请求,使这些报表查看器窗口无模式,这样他们就可以同时打开多个报表.
有一段时间我拒绝了这个请求,因为我认为这不是一个好的解决方案.然而,当我发现用户如何解决我们系统的"缺陷"时,我的想法发生了变化.
他们正在打开一个查看器,使用"另存为"工具将报告作为PDF保存到特定目录,使用Acrobat Reader打开PDF文件,然后他们将对下一个报告执行相同操作.他们将有多个Acrobat Readers运行他们想要查看的各种报告输出.
所以我心软了,让观众无模式.这意味着每个查看者都有一个任务栏图标.
当上周向他们发布最新版本时,他们的压倒性反应是他们喜欢它.这是我们最近最受欢迎的系统增强之一.
因此,您继续告诉您的用户他们想要的是坏的,但最终它不会对您有所帮助.
一些注意事项:
ModalityType
而不是boolean modal
参数的构造函数.这就是为这些对话框提供任务栏图标的原因.Vir*_*ore 19
将jInternalFrame设置为主框架并使其不可见.然后你可以用它来进行更多的活动.
jInternalFrame.setSize(300,150);
jInternalFrame.setVisible(true);
Run Code Online (Sandbox Code Playgroud)
Nec*_*net 18
自从我最后一次接触挥杆以来已经有一段时间,但总的来说这是一个不好的做法.想到的一些主要缺点:
它更昂贵:你将不得不分配更多的资源来绘制一个JFrame,其他类型的窗口容器,如Dialog或JInternalFrame.
用户不友好:导航到一堆粘在一起的JFrame并不容易,看起来你的应用程序是一组不一致且设计不佳的应用程序.
它很容易使用JInternalFrame这是一种修辞,现在它更容易和其他人更聪明(或更多的业余时间)比我们已经通过桌面和JInternalFrame模式思考,所以我建议使用它.
小智 10
绝对不好的做法.一个原因是,每个人都JFrame
显示一个新的任务栏图标,这不是"用户友好" .控制多个JFrame
s会让你脱掉头发.
就个人而言,我会使用ONE JFrame
作为您的应用程序.显示多个事物的方法取决于你,有很多.Canvas
ES, ,JInternalFrame
,CardLayout
甚至JPanel
Ş可能.
多个JFrame对象=疼痛,麻烦和问题.
我认为使用多个Jframe
s并不是一个好主意.
相反,我们可以在同JPanel
一个中使用多于一个或多个.JPanel
JFrame
我们也可以在这个之间切换JPanel
.所以它给了我们自由展示的东西而不是东西JFrame
.
对于每一个JPanel
我们可以设计不同的东西,所有这一切JPanel
可以一次显示JFrame
在一个.
本之间进行切换JPanel
的使用JMenuBar
与JMenuItems
用于每个JPanel
或"的JButton for each
JPanel`.
不止一个JFrame
不是一个好习惯,但如果我们想要不止一个,那就没有错JFrame
.
但更好的是JFrame
根据我们的不同需求改变一个而不是多个JFrame
s.
如果框架要具有相同的尺寸,为什么不创建框架并将其作为参考传递。
通过框架后,您可以决定如何填充框架。就像拥有一种用于计算一组图形平均值的方法一样。您会一遍又一遍地创建该方法吗?
小智 5
这不是一个好的做法,但即使你想使用它,你也可以使用单例模式作为它的好处。我在我的大部分项目中都使用了单例模式,这很好。
归档时间: |
|
查看次数: |
116599 次 |
最近记录: |