可以有两个类,并且在一个类似的类中arrayButtons[i][j].addActionListener(actionListner);在另一个ActionListeneractionListner=newActionListener(){publicvoidactionPerformed(ActionEvente){for(intj=0;j//还有更多这是因为我需要将按钮(Swing)与Action监听器分开我该怎么做?谢谢 最佳答案 不仅可以将这两者分开,而且还推荐这样做(请参阅MVC模式-这在很大程度上是关于将按钮等屏幕控件
JComponent的大小是什么时候计算的?在屏幕上显示之后还是之前?如果我在.setVisible(true)之前发送.getSize()消息,它会给我正确的答案吗?谢谢 最佳答案 我有时会在调试时检查我的组件的大小,例如,找出为什么我看不到它们。在大多数情况下,当GUI被呈现时,这些尺寸就会实现。当pack()或setVisible(true)在顶级窗口上调用时,可能会发生这种情况。我通常的方法调用顺序是先调用pack(),因为这会告诉布局管理器布置他们负责的组件,并设置组件和GUI的大小,然后调用setLocationRela
我有以下用例:我有代码在线程A中执行(不是EDT)。然后我想问用户一个问题,但这必须在EDT上完成,因为它涉及Swing代码(打开对话框等)。最后,我想将用户的回答传回线程A,以便它继续。我正在努力寻找一种将用户的答案传递回线程A的好方法。你是怎么做到的? 最佳答案 FutureTaskdialogTask=newFutureTask(newCallable(){@OverridepublicIntegercall(){returnJOptionPane.showConfirmDialog(...);}});SwingUtiliti
在得知dispose()应该在Graphics/Graphics2D对象上调用后,我着手改变我的游戏以合并它.当我在JPanel的覆盖paintComponent(Graphicsg)中添加g2d.dispose()时,我添加的组件(扩展JLabel类)在没有呈现的地方我仍然可以点击它们等但它们不会被绘制。我用普通的JLabel和JButton进行了测试,效果相同(虽然JButton在鼠标悬停时呈现)。所以我的问题是为什么会发生这种情况?这是一个SSCCE来演示:在MainMenuPanel类的paintComponent中取消对dispose()的调用后:importjava.awt
我想尝试使用SwingWorker的一些想法,因为我没有太多地使用它。相反,我遇到了一个问题,但我不知道出了什么问题。这是一个简短的SSCCE这证明了这个问题(我知道这里的人喜欢SSCCE):importjavax.swing.SwingUtilities;importjavax.swing.SwingWorker;publicclassSwingWorkerTest{publicstaticvoidmain(String[]args){SwingUtilities.invokeLater(newRunnable(){@Overridepublicvoidrun(){newMySwin
我在名为“Process”的数据库中有一个表这个进程表有3个字段:进程号进程名称process_parent_id现在我想以图形格式显示这个父子层次结构。那么,您能否向我提出以下建议:Q1。哪种数据结构更适合从数据库中获取数据并存储在该数据结构中?Q2。如何以图形格式显示该树(流程层次结构)?编辑:我想要这样的图形格式: 最佳答案 Swing有一个内置控件,用于以称为JTree的树格式显示数据。它还提供了一个名为DefaultTreeModel的数据模型,您可以使用它来存储数据。Thislink对将JTree与数据模型一起使用给出了
我想在我的程序中实现一个时钟,以便在程序运行时显示日期和时间。我研究了getCurrentTime()方法和Timer,但它们似乎都无法满足我的要求。问题是我可以在程序加载时获取当前时间,但它永远不会更新。非常感谢任何有关要研究的建议! 最佳答案 您需要做的是使用Swing的Timer类。让它每秒运行一次并用当前时间更新时钟。Timert=newTimer(1000,updateClockAction);t.start();这将导致updateClockAction每秒触发一次。它将在EDT上运行。您可以使updateClockAc
我有一个JFrame的子类,它使用从JPanel扩展的类publicclassHelloWorldextendsJPanelimplementsKeyListener我将HelloWorld对象添加到框架-app.add(helloWorld);。现在,当我按下任何键盘键时,KeyListener方法都不会被调用,并且helloWorld似乎没有窗口焦点。我也尝试调用helloWorld.requestFocusInWindow();但仍然没有响应。如何让它响应按键? 最佳答案 您是否将HelloWorld面板的KeyListene
JTable的默认行为是将焦点更改到下一个单元格,我想强制它在按下TAB键时将焦点移动到下一个组件(例如JTextField)。我覆盖了DefaultTableModel的isCellEditable方法以始终返回false:publicbooleanisCellEditable(introwIndex,intcolumnIndex){returnfalse;}但它仍然不会将焦点转移到下一个组件!我应该如何使JTable将焦点更改为下一个组件而不是下一个单元格? 最佳答案 Shift-/Tab键默认用于在组件之间转移焦点。JTabl
我是javaswing的新手,不熟悉paint()。我想在javaswing中创建一个具有以上外观的按钮。任何人都可以帮我做到这一点。任何指导将不胜感激。提前致谢 最佳答案 我在Facebook上搜索了蓝色RGB:59、89、182/十六进制代码是#3B5998和字体系列:Tahoma。在这里使用它是我通过一些调用得到的,例如setFocusPainted(false)、setBackground(newColor(59,89,182))和setFont(newFont("Tahoma",Font.BOLD,12)):importj