Tag: 用户界面

我如何实际进入GUI编程?

我是一个本科生。 几年前我在学校接触过基本编程。 到目前为止,我已经了解了Core Java,Core Python和基本的C和C ++。 每次我从一些GUI编程开始,以便我可以从我的一个项目开始,我会被要完成的数量,要学习的API,MVC架构和程序员谈论的所有内容,事件处理等所困惑。等等 研究了awt并挥了一会儿。 试过Qt和Gtk的手,找不到太多的文档。 试图理解pygame。 我知道核心语言,最终到了同一个地方。 我的zenwalk Linux上的Tkinter已经破了,所以在Tkinter解释说我已经拥有一本关于python的书之后就永远无法启动它。 但我最终只是在对语言的基本理解的同一个地方。 想要重新开始,现在认真。 我想选择python。 我该如何研究GUI编程? 我需要一些互联网资源和方向,以便我不会在同一个地方!

如何将文本置于JLabel中心?

尽管经过多次尝试,但我无法得到我希望看到的结果 – 在JLabel中居中的文本和JLabel在BorderLayout中居中。 我说“有点”,因为窗口的右下角应该还有另一个标签“status”。 这里有一些代码负责: setLayout(new BorderLayout()); JPanel area = new JPanel(); JLabel text = new JLabel( “In early March, the city of Topeka,” + ” Kansas,temporarily changed its name to Google…” + “…in an attempt to capture a spot” + “in Google’s new broadband/fiber-optics project.” + “source: http://en.wikipedia.org/wiki/Google_server” + “#Oil_Tanker_Data_Center”, SwingConstants.CENTER); text.setVerticalAlignment(SwingConstants.CENTER); JLabel status […]

使用Swing&Netbeans GUI编辑器保存文件/打开文件对话框

我是Java的初学者。 我正在使用GUI编辑器在netbeans 7(.3)IDE中创建一个简单的文本编辑器。 我面临的主要问题是我无法保存/打开文件。 我创建了“保存”按钮。 当我删除文件选择器时,它作为一个普通的打开文件对话框嵌入在java窗口中,根本没有任何function。 我还尝试在单击保存按钮时(在“源”视图中)创建新的jFileChooser,但它不起作用。 简而言之,我需要一个简单的打开/保存对话框。 按下“保存”按钮后,将打开保存对话框,并将文件保存在用户选择的任何名称和.rtf或.txt扩展名的任何位置。 (PS:是否可以在Java中以.docx或.doc保存文件?) 当按下“Open”btn时,它会打开.rtf或.txt中的文件(再次,是否可以通过文件选择器在Java中打开.docx或.doc?)。 private void saveButtonActionPerformed(java.awt.event.ActionEvent evt) { JFileChooser saveFile = new JFileChooser(); if saveFile.showSaveDialog(modalToComponent) == JFileChooser.APPROVE_OPTION { File xyz = saveFile.getSelectedFile(); } } 代码在这里: https : //docs.google.com/file/d/0B766zz1iJ1LRN2lGRjNtM29vN2M/edit?usp=sharing

用于GUI的Java 2D场景图库

我正在寻找用于构建GUI应用程序的2D场景图库。 它应该很快,使用Java2D并与Swing兼容(可嵌入Swing应用程序并显示Swing组件)。 支持动画是一个加号。 你有一些图书馆的经验吗? 有没有我错过的图书馆? 我必须补充一点,我并没有被Scala库完全冒犯。 项目场景图 似乎相当快 只有GPL(没有LGPL) 支持动画 2年前放弃了 作为JavaFX的前身,它是Sun的产品 G 不知道它是否快速 LGPL 没有动画 最后一个版本Dec 09 Piccolo2D 用于“可缩放的用户界面” 看起来像一个学术项目 高活动的谷歌代码项目 BSD许可证 不知道如果它快 不知道它是否有动画 Pulpcore 是一个游戏库 针对applet部署(使用它作为应用程序是hacky) 非常快 支持动画 没有发展2 – 3年 可能根本没有Swing支持 jTem 更大项目的一部分(乍一看) freeBSD许可证 没有动画支持 看起来很小

使用注册表管理Swing操作

通常,当我创建Swing(或任何UI)应用程序时,我会在菜单项和按钮上显示各种操作。 我通常创建一个动作注册表并将动作存储在那里,然后当发生某些事情时,我会根据应用程序的状态在注册表中禁用/启用动作。 我不会称自己是一个狂热的Swing开发人员,虽然我很了解它,但这是一个非常典型的管理动作的模式吗? 或者有更标准的方法吗? 谢谢, 杰夫

Java开发GUI的未来?

考虑到这一点 Sun / Oracle决定在他们“发明”JavaFX之后不再开发Swing JavaFX并没有真正起作用, 有些人认为它已经失败了 SWT并不是真正与平台无关的特性,处理GUI元素的手动任务以及捆绑特定于平台的库的必要性 还有另一条出路吗? 如果我想在JVM上进行GUI开发 有一个很好的API(Swing和SWT也不错,但它们也不是很好。) 哪种“感觉”响应(尽管声称这已经解决了,但今天Swing和SWT仍然存在问题。) 在几年内不会过时的,我应该做出什么决定? 是否有可用的第三种选择或未来可能有一种选择? 一个选项 快速响应(Not Swing的意识形态“如果它不快,那就是开发人员的错”) 具有原生外观和感觉 使用在所有平台上运行的单个库 这是现实的吗? 谢谢! ========= 澄清一下:如果我必须在JVM上启动一个新的软件项目,有几个现有的选项,比如使用SWT或Swing,使用Swing与第三方库如SwingX,JIDE,JGoodies,Flamingo或使用像Netbeans Platform这样的应用程序框架或Eclipse RCP。 是否有支持/建议的方法可以减轻通常与Java GUI开发相关的痛苦?

getSource()和getActionCommand()

什么是getSource? 它返回了什么? 什么是getActionCommand()以及它返回什么? 我对这两个人之间的困惑可以让任何人给我或区别对待我吗? 在UI中使用getSource和getActionCommand()有什么用? 特别是TextField还是JTextField?

如何使用Guice @Inject到现有的对象层次结构?

我有一个现有的对象层次结构,其中一些对象具有需要注入的字段。 此外,还有一些其他对象是使用Google Guice构建的,需要注入对前面描述的对象层次结构中某些对象的引用。 我如何使用Guice进行此类注射? 问题是现有层次结构中的对象不是使用Guice构造的,因此默认情况下不受注入过程的影响。 当然, injector.injectMembers()方法能够注入现有的对象实例,但它不适用于对象层次结构。 对于那些想知道为什么我不能使用Guice构建提到的对象层次结构的人。 此层次结构表示GUI对象,并由GUI框架( Apache Pivot )从声明性GUI描述构建(实际上此过程可以描述为对象反序列化)。 这样接口构造相当简单,我只想将某些服务引用注入接口对象,反之亦然(对于回调)。 我目前要采取的方法如下所述。 为了注入预先存在的对象层次结构,只需让对注入感兴趣的所有对象实现某些接口,如: public interface Injectable { void injectAll(Injector injector); } 然后,这些对象将实现此接口,如下所示: public void injectAll(Injector injector) { injector.injectMembers(this); for (Injectable child : children) child.injectAll(injector); } 然后我只调用mainWindow.injectAll(injector)来获取层次结构中的根对象,并注入所有感兴趣的对象。 不是很好的解决方案,但一方面完成工作。 另一方面,我需要从此层次结构中注入对象。 我想这可以通过为这些对象实现自定义提供程序来完成。 我的问题有更好的解决方案吗? 也许我的方法也有问题?

JTable与复杂的编辑器

我有很多针对JTable的自定义编辑器,并且认为可用性,特别是关于使用键盘编辑的可用性是缺乏的,这是轻描淡写的。 这样做的主要原因是我的编辑器总是创建一个类似的(虽然通常更复杂)的情况: @Override public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { JPanel container = new JPanel(); container.setLayout(new BorderLayout()); container.add(field, BorderLayout.CENTER); field.setText((String) value); container.add(new JButton(“…”), BorderLayout.EAST); return container; } IE是一个内部有多个组件的面板。 实际的文本编辑器是作为编辑器返回的组件的后代。 所以,从我所知的问题来看,除了渲染问题之外,JTable正在关注getTableCellEditorComponent方法返回的组件,因此当你按下一个突出显示单元格的键时,它会将焦点和按键按下到面板,认为是编辑器。 无论如何我可以通知JTable“真正的”编辑器是JTextfield吗? 在正确的组件上添加hacky requestFocusInWindow是不够的,因为按键不会被传递。

JavaFX TextArea中的Tab键导航

如何在TextArea中按Tab键导航到下一个控件? 我可以为cath de key按下事件添加一个监听器,但是如何使te TextArea控件失去焦点(不知道要聚焦的链中的下一个字段)? @FXML protected void handleTabKeyTextArea(KeyEvent event) { if (event.getCode() == KeyCode.TAB) { … } }