Tag: swing

如何检测用户是否在Java中单击窗口标题栏或窗口边框的任何其他部分

我使用Swing Popup类实现了一个弹出式数字小键盘。 我有一个与JTextField关联的按钮,当用户点击它时打开数字小键盘,然后当/如果JTextField失去焦点,Popup关闭。 它通常运行良好,除了偶尔我得到隐藏后从Popup“遗留”的工件。 有时候工件是弹出窗口中显示的组件的图像,但更常见的是它是一种“黑洞”,它掩盖了弹出窗口所在屏幕的同一区域中显示的任何其他内容,通过关闭应用程序和JVM来解决问题。 这个问题难以重现,但是当用户在Popup打开时操作基本窗口时,例如通过移动或resize,似乎就会显现出来。 我的想法只是在发生类似的事情时隐藏Popup,我可以使用WindowListener和ComponentListener的组合来完成。 但是,我想更进一步,只要用户点击窗口标题栏或其框架的其他部分,即使在移动,resize或图标化之前,也会立即隐藏弹出窗口。 JComboBox弹出窗口实际上就是这样工作的。 但是,我一直无法找到任何一种机制,通过该机制我可以通知用户点击了窗口标题栏。 我已经看过JComboBox和相关的代码,但也无法弄清楚它是如何工作的。 有没有其他类型的听众可以用来获得这种通知?

JTextField的“附加”文本

我正在尝试创建一个小的应用程序,其中U输入ID(在JButton的帮助下 – 从0到9 – )然后将已经按下的数字传递给putText-Method然后将其显示在JTextField中 – 问题在于每一个时间我按下我之前按下的那个新数字:s。 有人可以帮助我吗? public class IdPanel extends JPanel { private JTextField idField; private JLabel idLabel; public IdPanel() { setLayout(new GridBagLayout()); setPreferredSize(new Dimension(500, 70)); idField = new JTextField(20); idField.setFont(new Font(“Serif”, Font.PLAIN, 20)); idLabel = new JLabel(“Enter ID:”); idLabel.setFont(new Font(“Serif”, Font.PLAIN, 20)); GridBagConstraints gc = new GridBagConstraints(); gc.gridx = 0; gc.gridy = […]

Java:JTable更改侦听器,“对象无法转换为字符串”错误

我有一个JTable ,以及一个应该控制程序对各种动作的响应的类,我写的第一个是用于单元格更改事件。 每行都是从Part对象生成的,并且每列的列类都相应地设置。 Part(String partName, String make, String partNumber, String altPartNumber, Double price, Integer quantity, String description, Boolean isAutomotive, Boolean isMarine, Boolean isIndustrial) { //…code not shown… } 零件对象存储在可序列化的ArrayList 。 本质上,事件处理代码需要做的是使用从JTable获得的更新数据更新此ArrayList特定部件对象的参数值。 下面的代码演示了我想如何做到这一点; 这里出现标题中提到的错误。 任何人都可以解释如何处理这个问题? public class EventController extends UI implements TableModelListener { // Declarations: private int row; private int column; private Part partToChange; // …Omitted […]

以编程方式填充JPasswordField而不创建String对象

有没有一种简单的方法来填充JPasswordField的文档而不创建包含密码的String对象? 我试图创建一个“更改密码”对话框,该对话框接收旧密码并要求输入新密码两次(三个密码字段),其中旧密码可以事先知道,具体取决于用户配置的方式(密码可能已存储)。 因此,每次向她显示相关对话框时,不要求用户输入现有密码,我想以编程方式填写它。 请注意, JPasswordField.setText(String)和String构造函数不是一个选项。 我想用char数组做这个。 我一直试图滥用似乎由PlainDocument使用的PlainDocument ,但它似乎不起作用(字符在那里,但字段已损坏): import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import javax.swing.JFrame; import javax.swing.JPasswordField; import javax.swing.text.PlainDocument; import javax.swing.SwingUtilities; import javax.swing.text.GapContent; public class FillJPasswordField extends JFrame { private JPasswordField pass; public FillJPasswordField() { setLayout(new GridBagLayout()); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); char[] password = new char[]{‘p’, ‘a’, ‘s’, ‘s’, ‘w’, ‘o’, ‘r’, ‘d’}; PlainDocument doc = new […]

如何在使用jtattoo时解开JFrame

虽然之前已经问了一个类似的问题( 如何在安装jTattoo主题后使框架未修饰 ),但我无法按照解决方案来解决问题。 我没有发现指令足够清楚,因此尝试失败了很多次。 我想要一个未修饰的JFrame(而且不仅仅是全屏模式),但使用任何jtattoo主题都无法让我这样做。 有没有什么办法可以让我的JFrame在使用jtattoo主题时不修饰?

MigLayout列约束

我正在尝试开发这样的应用程序布局: * +——————+——–+ * | | | * | | | * | | | * | 70% | 30% | * | | | * | | | * | | | * | | | * | | | * +——————+——–+ 为此,我正在使用MigLayout。 根据这个备忘单 ,设置柱重量我们使用[weight] 。 但是,它不能以某种方式工作。 看看我的代码: package com.test; import java.awt.EventQueue; import javax.swing.JFrame; […]

最大化JFrame的行动?

一旦发生了特定的动作,有谁知道如何最大化JFrame? 我将在下面发布我的代码,我是一个不评论我的代码的恶魔(我会在某些时候这样做)但它应该是相当自我解释的。 我试图做的是从菜单中选择选项后使框架最大化。 如果有人能告诉我如何编辑我的代码来解决这个问题,我将不胜感激。 谢谢! import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.JMenu; import javax.swing.JMenuItem; import javax.swing.ButtonGroup; import javax.swing.JMenuBar; import javax.swing.KeyStroke; import javax.swing.ImageIcon; import javax.swing.JPanel; import javax.swing.JTextArea; import javax.swing.JScrollPane; import javax.swing.JFrame; public class MainMenu implements ActionListener { JTextArea output; JScrollPane scrollPane; String newline = “\n”; MapMenu maps = new MapMenu(); public JMenuBar createMenuBar() { JMenuBar […]

将项添加到另一个类的现有jlist中

我有一个使用NetBeans IDE中的Desing模式创建的jList(名为JList1),我想使用一个辅助类向该列表添加项目,该类解析一个大的xml列表并从中获取数据。 我的问题是,我真的不明白如何做到这一点,我已经尝试了很多不同的代码,尝试了一个模型,但不能正确。 我是java(也是编程)的新手,我不明白我是否做过类似的事情 String[] ar = {“one”, “two”, “three”}; JList Jlist1 = new JList(ar); 这创建了一个新的jList而不是使用我已创建的jList,不是吗?

如何在Java中创建这样的边框?

我一直试图复制这个边界几个小时没有成功: 有关如何做到这一点的任何想法?

用按钮在屏幕上移动球。 无法编程初始位置。

所以我正在做这个练习,我需要创建一个程序,通过按下四个按钮之一在屏幕上移动一个小球。 我已经完成了,但后来我想让初始位置位于屏幕的中心,所以我将值getWidth()/ 2分配给xCoord,将getHeight()/ 2分配给yCoord(首先我没有构造函数,然后当它不起作用时我添加了构造函数并添加了repaint(),因此将调用paintComponent())但是当我启动程序时,球仍然在左上角。 我怎样才能解决这个问题? PS我也会感谢对代码的任何评论。 谢谢。 package movingaball; import java.awt.BorderLayout; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class MovingABall extends JFrame { private JButton jbtLeft = new JButton(“Left”); private JButton jbtRight = new JButton(“Right”); private JButton jbtUp = new JButton(“Up”); private JButton jbtDown = new JButton(“Down”); private BallPanel ballPanel = new BallPanel(); public MovingABall […]