在.net中有一个称为锚定的控件,用于随表单动态调整控件的大小。当控件锚定到窗体并调整窗体大小时,控件会保持控件与anchor位置之间的距离。我的问题是,Java中是否有任何控件具有与.net中的锚定功能相同的功能。作为一个例子,我选择了一个文本字段并将其放在面板上并适本地调整了它的大小。现在,当我更改窗口(JFrame)的大小时或最大化窗口时,文本字段将不会保持与以前相同的距离。我一直在使用netbeans,但我没有在托盘管理器中找到任何可以回答我问题的属性。请用示例或一些链接向我解释。 最佳答案 JavaSwing使用布局管理器
我一直在尝试将System.outPrintStream重定向到JTextPane。这工作正常,除了特殊语言环境字符的编码。我找到了很多关于它的文档(参见mindprodencodingpage),但我仍在与它作斗争。StackOverFlow中发布了类似的问题,但据我所知,编码并未得到解决。第一种解决方案:StringsUtf=newString(s.getBytes("cp1252"),"UTF-8");第二种解决方案应该使用java.nio。我不明白如何使用字符集。CharsetdefaultCharset=Charset.defaultCharset();byte[]b=s.g
当涉及到用户界面时,我似乎总是在内心挣扎。我建立了一个应用程序“引擎”,并倾向于将用户界面推迟到我的算法工作之后。然后我反复尝试决定如何让用户与我的程序交互。就个人而言,我是命令行的粉丝,但我不能指望我的用户普遍如此。在web2.0和ajax时代,我真的很喜欢浏览器的无限可能。另一方面,制作一个Swing前端也不难,而且您通常可以指望向用户呈现更一致的表现(尽管使用像YUI或jQuery这样的良好javascript框架对规范化浏览器大有帮助)。显然,这两种方法都有其优点和缺点。那么,什么标准/参数/情况应该让我使用轻量级(例如基于网络的)GUI?什么标准/参数/情况应该导致我使用更重
是否有一种特定的方法可以改变swing应用程序的外观,而无需在每次用户更改LAF时都重新启动应用程序?我正在寻找一种解决方案,其中可以从配置对话框中选择LAF,它会在应用时直接更改,而不必退回到告诉用户重新启动应用程序。目前我记得在属性文件中选择的LAF,并在启动时在任何窗口打开之前设置它。 最佳答案 来自Javatutorial:您首先需要通过调用UIManager.setLookAndFeel来设置新外观:UIManager.setLookAndFeel(lnfName);然后,为了使现有组件反射(reflect)新的外观和感觉
正如大多数Java程序员所知,对SwingGUI的更新应该只在AWT事件调度线程上完成,建议长时间运行的进程在“工作”线程上执行,更新发送到事件调度线程使用SwingUtilities.invokeAndWait()或SwingUtilities.invokeLater()。当长时间运行的进程完成时,您如何阻止用户继续使用应用程序?您是否将控件灰显,然后让工作线程使用上面提到的SwingUtilities调用重新启用它们?是否有更好的替代模式? 最佳答案 我会考虑3种解决方案:禁用面板的组件:这通常是我所做的。不幸的是,Swing没
最简单地说,我试图使用组件的宽度来设置其父容器的大小。但是,为组件返回的宽度偏移了大约4个像素。更多详情:我有一个对话框,其中的子面板在中间水平分布。对话框应始终与此子面板列表一样宽,并在列表太长时使用滚动条。我只是尝试使用1个子面板来开始。无论我做什么,返回的子面板的大小总是错误大约4个像素。我可以看到子面板右侧有一个非常烦人的4像素间隙,使我的对话框看起来很可怕。随着更多子面板的添加,效果显然会更加复杂。我尝试使用什么来获取宽度:sup-panel.getSize().width;sub-panel.getBounds().width;sub-panel.getWidth();su
我正在构建我的第一个Swing应用程序,并试图弄清楚我的JDialogs(当用户选择JMenuItem时专门调用)如何更新JFrame的主客户区中的组件,该主客户区是整个应用程序。这是我想出的设计,但不知道它是否:(1)很糟糕,(2)不是标准(因此最好)的方式,或者(3)如果我完全在这里偏离基地。非常感谢任何建议。基本上,用户选择一个JMenuItem,它启动一个JDialog。用户与对话框上的组件交互,然后单击“完成”。如果一切都通过验证,JDialog将关闭,我希望父窗口(一个JFrame)更新其状态(并最终波及到其组件)。我的设计:有一个作为JFrame子类(我的应用程序)成员的
我正在编写一个简单的自上而下的太空游戏,并且正在扩展它以允许通过网络与多个玩家一起玩。我读了很多书,但这是我第一次这样做,我希望能得到一些关于选择合理设计的建议。我的GUI是使用Swing编写的。每秒30次,计时器触发,并根据内存中gameWorld对象中的数据重新绘制我的GUI(本质上是带有位置的船舶和射弹列表等)。游戏世界的物理更新也是使用这个计时器进行的。因此,对于单人游戏实现,一切都发生在EDT上,并且效果很好。现在,我有单独的线程处理来自其他玩家的传入数据包。我想根据这些数据包包含的内容更新我的gameWorld对象中的数据。我的问题是,我应该使用invokeLater来进行
+--------------------------------------------+|+-------++----------+|||+---+||+-----+|||||A||||B|||||+---+||+-----+|||+-------++----------+|+--------------------------------------------+^||Center背景:我有一个JButton(“A”),大小为50x25,位于JPanel(FlowLayout.CENTER)中JLabel(“B”),大小为100x25,位于JPanel(FlowLayout.RI
关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭4年前。Improvethisquestion我使用过各种IDE(Eclipse、NetBeans、IntellijIDEA),尽管它们都有GUI构建器工具,但它们都以一种将开发人员绑定(bind)到使用该IDE的方式生成GUI。我目前正在开发一个开源项目,其中的GUI是使用Netbeans构建的,因此在另一个IDE中打开时无法使用。这对我不利,部分原因是我使用IntellijIDEA,但主要是因为该项目正在设置