标签: swing

多个JFrame的使用:好的还是坏的做法?

我正在开发一个显示图像的应用程序,并从数据库中播放声音.我正在尝试决定是否使用单独的JFrame从GUI向数据库添加图像.

我只是想知道使用多个JFrame窗口是否是一个好习惯?

java user-interface swing jframe

525
推荐指数
9
解决办法
12万
查看次数

我应该避免在Java Swing中使用set(Preferred | Maximum | Minimum)Size方法吗?

有几次我因为建议使用以下方法而受到批评:

  1. 有必要对setPreferredSize
  2. 了setMinimumSize
  3. setMaximumSize

Swing组件上.当我想在显示的组件之间定义比例时,我没有看到任何替代它们的用法.我被告知这个:

对于布局,答案总是相同的:使用合适的LayoutManager

我在网上搜索了一下,但我没有找到任何关于这个主题的综合分析.所以我有以下问题:

  1. 我应该完全避免使用这些方法吗?
  2. 已经定义了这些方法的原因.那我什么时候应该使用它们?在哪种情况下?出于什么目的?
  3. 使用这些方法的负面后果究竟是什么?(我只能考虑在具有不同屏幕分辨率的系统之间添加可移植性).
  4. 我认为任何LayoutManager都不能完全满足所有需要的布局需求.我是否真的需要为布局上的每个小变化实现一个新的LayoutManager?
  5. 如果4的答案是"是",那么这是否会导致LayoutManager类的扩散变得难以维护?
  6. 在我需要定义组件子级之间的比例的情况下(例如,child1应该使用10%的空间,child2 40%,child3 50%),是否可以在不实现自定义LayoutManager的情况下实现这一点?

java swing layout-manager

471
推荐指数
8
解决办法
5万
查看次数

如何将图像添加到JPanel?

我有一个JPanel,我想添加我动态生成的JPEG和PNG图像.

到目前为止我在Swing教程中看到的所有示例,特别是在Swing示例中使用的ImageIcon是s.

我将这些图像生成为字节数组,并且它们通常比它们在示例中使用的常见图标大,为640x480.

  1. 使用ImageIcon类在JPanel中显示大小的图像时是否存在(性能或其他)问题?
  2. 什么是平常做的呢?
  3. 如何在不使用ImageIcon类的情况下将图像添加到JPanel?

编辑:仔细检查教程和API会显示您无法将ImageIcon直接添加到JPanel.相反,它们通过将图像设置为JLabel的图标来实现相同的效果.这感觉不对......

java swing image jpanel

336
推荐指数
13
解决办法
98万
查看次数

如何以编程方式关闭JFrame

什么是JFrame关闭的正确方法,就像用户点击X关闭按钮或按下Alt+ F4(在Windows上)一样?

我通过以下方式设置我的默认关闭操作:

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Run Code Online (Sandbox Code Playgroud)

它完全符合我想要的上述控件.这个问题与此无关.

我真正想要做的是使GUI的行为方式与按下X关闭按钮会使其表现相同.

假设我要扩展WindowAdaptor然后添加我的适配器实例作为监听器addWindowListener().我想看到的调用相同的序列通过windowDeactivated(),windowClosing()以及windowClosed()作为将与出现X关闭按钮.可以这么说,撕毁窗户就像告诉它撕裂自己一样.

java swing jframe

240
推荐指数
9
解决办法
53万
查看次数

Java GUI框架.选择什么?Swing,SWT,AWT,SwingX,JGoodies,JavaFX,Apache Pivot?

java有很多gui框架,但是什么被认为是今天的选择框架?

以下是我对不同框架的理解,如果我错了请纠正我.这是一个非常松散定义的问题集,但我仍然认为它对于任何想创建丰富的gui应用程序的人都很有价值.


AWT

是摆动的基础,它表现良好,但缺乏先进的部件.如果您打算创建丰富的应用程序,AWT可能不是可行的方法.但是对于不需要丰富用户界面的小型gui应用程序.这可能非常适合,因为它是一个久经考验的框架.


摇摆

基于AWT,如前所述.在它的初期,它被认为是缓慢和错误,并导致IBM为Eclipse创建SWT.但是,使用Java 5(或6?),Swing成为构建新应用程序的首选框架.Swing有很多丰富的组件,但在某些方面仍然缺乏.一个例子是没有可以进行排序和过滤/搜索的全功能TreeTable组件.


SWT

由IBM为Eclipse创建,他们似乎认为Swing当时不适合Eclipse.它本身是相当低级的,它通过JNI使用平台的本机小部件.它根本与Swing和AWT无关.然而,他们的API有点笨重而且不直观.它们确实有一些像TreeTable这样的高级组件.(但我不认为他们支持排序和过滤开箱即用).SWT使用一些本机绑定(通过JNI?),互联网上的咆哮是这个框架不应该在今天的项目中使用.(为什么不?)


SwingX

基于Swing,它的使命是为挥杆创造丰富的组件.仍在开发中.(虽然不是很活跃.)有一组非常好的组件,比如TreeTable.但据我所知,TreeTable不支持过滤和排序.但它确实支持突出显示搜索.

请注意,SwingX是组件(AFAIU),它们是现有Swing组件的扩展或组合


JGoodies数据

我一无所知的框架......它的优点和缺点是什么?Jgoodies与其他人的区别是什么?

JGoodies OTOH是关于PLAF和布局的.


JavaFX的

Java/Oracle的最新旗舰产品.承诺成为开发富桌面或Web应用程序的事实标准.


Apache Pivot

它使用Java2D呈现UI,从而最小化Swing和AWT的(IMO,膨胀)遗产的影响.(@Augustus Thoo)

它的主要焦点似乎是RIA(富互联网应用程序),但似乎它也可以应用于桌面应用程序.而作为个人评论,看起来很有趣!我特别喜欢它是一个apache项目.

https://cwiki.apache.org/PIVOT/frequently-asked-questions-faq.html


Qt Jambi

本机qt库的java包装器,用c/c ++编写.非常强大,广泛使用和接受.有很多GUI组件和易于使用的API.

http://qt-jambi.org/


所以,试着总结一下我要问的一点:

说我想用Java创建一个桌面应用程序,它涉及许多高级组件,我应该选择什么?为什么?

哪些框架应被视为已弃用,哪些框架应被视为遥远未来的框架?

什么是今天的事实标准框架,您使用哪些工具来创建Java gui应用程序?


我可能会后悔问这个,但不管怎么说都不好意思:

据说C#/ .Net有一套易于使用的组件,可以在各个方向上进行弯曲.在调查了不同的java框架之后,我似乎无法对Java说同样的话.为什么是这样?为什么java(世界上使用最广泛的编程语言)没有相同的GUI组件集?

难道只是java已经将gui组件基于更低的级别,并且可以编写我正在寻找的所有这些高级组件,但是如果不是所有的工作,你必须做很多事情吗?

java user-interface swing swt awt

228
推荐指数
6
解决办法
60万
查看次数

Swing和AWT有什么区别?

有人可以解释一下Swing和AWT之间有什么区别吗?

是否有任何情况下AWT比摆动更有用/建议使用,反之亦然?

java swing awt

214
推荐指数
7
解决办法
21万
查看次数

值更改侦听器到JTextField

我希望在用户更改文本字段中的值后立即显示消息框.目前,我需要按Enter键才能弹出消息框.我的代码有什么问题吗?

textField.addActionListener(new java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent e) {

        if (Integer.parseInt(textField.getText())<=0){
            JOptionPane.showMessageDialog(null,
                    "Error: Please enter number bigger than 0", "Error Message",
                    JOptionPane.ERROR_MESSAGE);
        }       
    }
}
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激!

java swing listener jtextfield documentlistener

207
推荐指数
6
解决办法
32万
查看次数

Java Swing revalidate()vs repaint()

我正在整理一个Swing应用程序,我常常想要替换JPanel的内容.要做到这一点,我正在打电话removeAll(),然后添加我的新内容,然后打电话revalidate().

但是我发现旧内容仍然可见(虽然被新内容遮挡了).如果我添加调用repaint()revalidate(),它按预期工作.

我确信在其他场合我经历过只是打电话revalidate()就足够了.

所以基本上我的问题是 - 我是否需要调用这两个函数,如果没有,我什么时候应该调用它们?

java swing

206
推荐指数
4
解决办法
21万
查看次数

Swing vs JavaFx用于桌面应用程序

我有一个非常大的程序,目前正在使用SWT.该程序可以在Windows,Mac和Linux上运行,它是一个包含许多元素的大型桌面应用程序.现在SWT有点老了我想切换到Swing或JavaFX.我想听听你对三件事的看法.

我主要担心的是桌面GUI应用程序会有什么好处?(我在网上看了很多人都认为JavaFX和Swing一样好,但除了简单的意见火焰战争之外我没有看到很多有效的论据).它必须适用于Windows,Mac和一些流行的Linux发行版.

  • 什么更干净,更容易维护?

  • 从头开始构建什么会更快?

我在我的应用程序中使用MVC方法,如果有任何帮助的话.

java user-interface swing javafx swingx

189
推荐指数
4
解决办法
21万
查看次数

无论显示器分辨率如何,如何将JFrame设置为居中显示?

使用Java时,我发现在启动应用程序时很难将主窗口放在屏幕中央.

有什么方法可以做到吗?它不必垂直居中,水平对齐对我来说是更重要的目标.但垂直对齐也很受欢迎.

java swing position jframe

188
推荐指数
7
解决办法
27万
查看次数