Tag: swing

Swing与JavaFx的桌面应用程序

我有一个非常大的程序,目前正在使用SWT。 该程序可以在Windows,Mac和Linux上运行,它是一个有很多元素的大型桌面应用程序。 现在SWT有点老了,我想切换到Swing或JavaFX。 我想听听你对三件事的想法。 我主要关心的是桌面GUI应用程序会更好吗? (我在网上看了很多人的build议,JavaFX和Swing一样好,但除了简单的意见之外,我没有看到许多有效的争论)。 它必须在Windows,Mac和一些stream行的Linux发行版上工作。 什么会更干净,更容易维护? 而从零开始构build会更快? 我在我的应用程序中使用MVC methology,如果有任何帮助。

为什么我的JLabel没有显示出来

我调用这个方法称为检查我的抽象类之一,但由于某种原因,我添加到JPanel(面板)的JLabel(问题)没有显示出来。 为什么会发生? 任何解释,我正在使用重绘和validation方法,但仍然没有显示出来。

如何更改焦点JComboBox的高亮颜色

让我先解释一下我期待的成就。 我在Swing中创build了一个数据input表单,由许多JComboBoxes和JTextFields组成。 validation例程迭代这些组件,并确定为每个控件指定的值是否为“有效”(validation的细节与本示例的目的无关)。 当例程识别出一个组件包含一个无效值时,我想要改变该字段的背景颜色,以及该字段的前景/文本颜色 – 以便向用户说明该字段存在问题。 如果一个字段被认为是“有效的”,我想把控件的背景设置为白色,而前景/文本是黑色的。 所有相当直截了当的,并在所附的演示代码下面所有可实现的。 当一个combobox包含一个有效的值,并被重点 – 组合中的编辑器的背景设置为蓝色,我很满意。 但是,我试图实现的是当该combobox包含无效值时更改用于突出显示一个焦点combobox的颜色。 尽pipe已将combobox的背景颜色更改为粉色,但如果控件处于聚焦状态,仍会使用蓝色表示聚焦。 重点关注的无效字段示例: http : //postimg.org/image/ne9xgjch3/ 虽然我明白这是完全正常的行为,但我想要做的是将用于突出显示“无效”字段之一的颜色更改为颜色较深的阴影,而非重点和无效的控件将会具有这种颜色 – 这样用户仍然可以看到哪个控件是关注的,而且它仍然是粉红色的。 我明白这可能看起来很小巧,但是我的最终用户坚持认为整个领域在聚焦的时候仍然是粉红色的(或者更确切地说,是一种不同的粉色)。 这就是我的eutopia,一个专注和“无效”的领域,看起来像: http://postimg.org/image/9793bqcfj/ 我已经试过扩展DefaultListCellRenderer&BasicComboBoxEditor类,并分别设置combobox作为渲染器和编辑器。 我的印象是,编辑器会成为我需要关注的地方,所以在类的getEditorComponent方法中,我会返回一个带有适当背景和前景的标签 – 但是在这个方法中,我没有办法知道控件是否有焦点,所以无法确定如何格式化返回的标签。 此外,一旦我开始对combobox设置编辑器,我似乎失去了将控件集中在一起的能力 – 尽pipe这可能是我对如何实现编辑器缺乏了解。 我一直在阅读有关BasicComboBoxUI,但我遇到的东西已经脱颖而出,作为解决scheme。 请别人指点一下正确的方向,我已经花了几天的时间来修补这个问题,而且这真的开始困扰我了。 请原谅NetBeans生成的演示代码,这只是让我快速敲一个演示。 package com.test; import java.awt.*; public class TestForm extends javax.swing.JFrame { public TestForm() { initComponents(); } @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private […]

有没有替代JPasswordField?

当input一个密码短语时 yeast bulk seize is shows pain 每个人都可以听到轻敲空格键,所以显示密码字段中的空格也是合乎逻辑的。 所以我想要能展示的东西 ***** **** ***** ** ***** **** 代替 ****************************** 这将使打字更容易,而不会降低安全性。 UPDATE 在更新Riduidel的评论之前请三思。 当布鲁斯·施奈尔(Bruce Schneier)写道: “现在是时候以明文forms显示大多数密码了” ,然后显示一小部分密码也必须是正确的。 特别performance出可以简单地通过聆听捕捉的部分。

用于过滤列表的组件

什么是适合创build一个可过滤的列表,如下所示的Java Swing组件?

如何使用摇摆计时器开始/停止animation

有人可以教我如何使用swing timer具有以下目的: 我需要有一个开始被animation的多边形(简单的animation,如旋转),当我点击鼠标; 并再次点击时停止animation。 我没有理解MouseListener工作方式,但与实际的animation。 我尝试使用paint()方法模拟animation,在该方法中绘制,擦除和重绘多边形(例如模拟旋转),但在此期间,小程序不会听取点击。 它只会在那个时候听。 当我点击鼠标时,我需要摆动计时器来打破这个时间。

Java Swing保存并加载工作区/设置

我有一个Java Swing应用程序,其中包含一堆框架,而这些框架又主要包含显示大量数据的表格。 由于在启动时安排所有的窗口和表格总是很麻烦,所以我想实现“工作空间”function,这样用户可以保存一个首选项设置,并且在启动时select自动加载存储的工作空间到所有窗口和表格都显示为以前保存的。 具体来说,我希望存储在工作区中的设置是: 活动窗口(JFrame)及其大小和位置在屏幕上 表设置,包括选定的列,列顺序,列宽,sorting,过滤 有没有人知道一个聪明和简单的方法来实现这个没有明显的,什么看起来像一个非常复杂和繁琐的解决scheme迭代所有打开的窗口,并保存每个信息与Preferences api? 谢谢

如何设置JTextArea的方向从右到左(在JOptionPane中)

我有JScrollPane与JTextArea里面,我想设置JTextArea的方向从右到左,所以其中的文本将从右侧开始,滚动条将在左侧 我已经尝试了以下,但他们并没有影响方向的方向: txt.applyComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); txt.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); txt.setAlignmentX(JTextArea.RIGHT_ALIGNMENT); 编辑: 两个答案camickr&trashgod提供了很好的工作,但不是在我的程序中使用我的JTextArea作为对象消息并将其传递给OptionPane。 EDIT2: 我想通了setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); 如果我将它应用于JOptionPane内容,则不起作用。有没有其他解决scheme来解决这个问题? 类似于我的代码: import java.awt.*; import java.util.*; import javax.swing.*; public class TextArea extends JPanel { private JTextArea txt = new JTextArea(); public TextArea() { setLayout(new GridLayout()); txt.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); JScrollPane scroll = new JScrollPane(txt); scroll.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); setPreferredSize(new Dimension(200,200)); this.add(scroll); } private void display() { Object[] options = {this}; JOptionPane pane […]

如何在Swing中创build延迟

我做了一个二十一点的游戏,我希望AI玩家在拿牌之间暂停一下。 我试着简单地使用Thread.sleep(x),但是这会让它冻结,直到AI玩家完成所有的卡片。 我知道Swing不是线程安全的,所以我看了一下Timers,但是我不明白怎样才能使用它。 这是我现在的代码: while (JB.total < 21) { try { Thread.sleep(1000); } catch (InterruptedException ex) { System.out.println("Oh noes!"); } switch (getJBTable(JB.total, JB.aces > 0)) { case 0: JB.hit(); break; case 1: break done; case 2: JB.hit(); JB.bet *= 2; break done; } } 顺便说一句,命中(); 方法更新GUI。

jPanel的背景图片无效

我是制作graphics用户界面的新手,所以我决定尝试一下用于eclipse的windows builder,虽然很好,但我确实有一些疑问。 我一直在寻找,但我看不到find一个好方法来添加一个背景图像到我的“菜单”。 例如,我试过这个: public Menu() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(50, 50, 300, 250); //Dimensiones contentPane = new JPanel() { //Imagen de Fondo public void paintComponent(Graphics g) { Image img = Toolkit.getDefaultToolkit().getImage( Menu.class.getResource("http://img.dovov.comrotom.jpg")); g.drawImage(img, 0, 0, this.getWidth(), this.getHeight(), this); } }; 并添加以下类: import java.awt.Graphics; import java.awt.Image; import java.awt.Toolkit; 但无济于事,窗口依旧暗淡的灰色,到目前为止,我的代码只是WindowsBuilder为你烹饪的标准加4个button,但我怀疑它们在这里很重要。 不应该我添加的代码重写jPanel的paintComponent()方法,并在其中绘制图像? 菜单的类位于我的项目中的一个包中,而且图像位于同一个项目中的imgs包内。 非常感谢。