我在JFrame中嵌入了一个JPanel。JPanel被添加到BorderLayout的CENTER。我正在使用以下代码对其进行绘制,但MouseEvent的getX()和getY()似乎偏移了实际坐标。为什么?相关代码是:-privateImagebackBuffer=createImage(getWidth(),getHeight());publicvoidmouseDragged(MouseEvente){//System.out.println("Canvas.mouseDragged()");Graphics2Dg2d=(Graphics2D)backBuffer.getGr
我在Windows7下使用带有JDK6的Netbeans7.0来设计我的Java应用程序的用户界面。我应用系统外观。但它在Windows中看起来是我想要的方式,但在MacOS中有所不同,更糟糕的是,它在Linux中的不同窗口管理器(LXDE、GNOME、KDE、XFCE)中看起来不同。我所说的不同是指字体的外观和大小。在Windows中,如果标签看起来像“v1.23”,那么在其他操作系统中它看起来像“v...”,因为字体在该操作系统中变大并且JLabel没有足够的空间来显示。这种情况发生在几个地方。我不想增加标签宽度。我希望标签在所有操作系统中的给定宽度看起来都一样。默认情况下,Net
我需要隐藏java.awt.Scrollbar(VERTICAL)的箭头按钮在AWT应用程序中。有谁知道这是如何实现的?我看到一个例子here,但代码只是隐藏了按钮。按钮的空白空间仍然存在;它没有被滚动条占用。更准确地说,这是我应该实现的屏幕截图。我不确定该朝哪个方向去做。更新:我正在寻找AWT中的解决方案。但现在我也对Swing中的建议持开放态度。 最佳答案 试试这个..它用大小为0x0的按钮替换VerticalScrollBar上的常规按钮。虽然它确实限制了您的外观和感觉:(JScrollPanescroller=newJScr
我需要阻止用户在JButton上进行多次点击,而第一次点击仍在执行。我能够为这个问题提供解决方案,但我不完全理解它为什么有效。下面我发布了有效的代码和无效的代码(修剪到最低限度)。在第一个示例(好)中,如果您运行它并多次单击按钮,则只有一个操作被视为第二个示例(坏),如果您多次单击鼠标,您至少会执行两次操作。第二个(错误的)示例根本没有使用invokeLater()方法。行为差异从何而来?importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.util.logging.Level;i
swing组件的名称属性的预期用途是什么?内部使用swing吗?背景:一位同事通过将文本字符串的键存储在名称属性中来实现国际化机制。然后,他简单地遍历所有swing元素并获取存储在组件的name属性中的键。他争辩说name属性似乎没有用在其他地方,这是最简单的方法。 最佳答案 来自javadoc的组件名称“设置或获取组件的名称。当您需要将文本与不显示文本的组件相关联时,这会很有用。”。所以我觉得用这个名字很好。您还可以在组件的属性中放置一些东西。 关于java-swing组件的名称属性是
我正在使用SwingWorker在我正在制作的应用程序上执行一些重负载任务。虽然今天我了解了Executor类和这个例子:Executors.newCachedThreadPool().execute(newRunnable(){publicvoidrun(){someTask();});有人可以解释为什么要使用SwingWorker而不是上面的例子吗?这是我目前使用SwingWorker的方式:SwingWorkerworker=newSwingWorker(){protectedObjectdoInBackground(){someTask();returnnull;}};work
我的代码中有一个JCombobox。我添加了FocusLost事件。但无论如何都没有开火。我已经尝试了很多时间,但没有找到解决方案。jcbItemType.addFocusListener(newjava.awt.event.FocusAdapter(){publicvoidfocusLost(java.awt.event.FocusEventevt){jcbItemTypeFocusLost(evt);}});privatevoidjcbItemTypeFocusLost(java.awt.event.FocusEventevt){//TODOaddyourhandlingcodeh
我有一个JScrollPane,它在水平行中包含一些图像。如果图像行对于视口(viewport)而言太长,则JScrollPane会显示一个滚动条,从而降低视口(viewport)的高度。我想调整图像大小以适合视口(viewport)。我怎样才能检测到视口(viewport)改变了它的大小?不幸的是,注册更改事件处理程序似乎不起作用。 最佳答案 在ViewPort上使用更改监听器似乎对我有用。这是一个小演示:importjava.awt.BorderLayout;importjava.io.UnsupportedEncodingEx
我的代码片段如下:SystemTraysystray=SystemTray.getSystemTray();try{TrayIcontrayicon=newTrayIcon(newImageIO.read(newFile("icon.png")),"Iamadescription");}catch(IOExceptione){e.printStackTrace();}一切运行顺利,但系统托盘中显示的图像被截断了。除非我缩小到16x16(从40x40),否则只显示左上部分。icon.png是正确加载的图像文件(不为空)。我以为系统托盘图标文件可以是40px?有人可以向我解释这里的问题是什
如果错误的堆栈跟踪(不发生在主线程中)不包含您的任何方法,可以采取什么可能的行动来找出问题所在?有问题的完整跟踪:Exceptioninthread"AWT-EventQueue-0"java.lang.ArrayIndexOutOfBoundsException:0>=0atjava.util.Vector.elementAt(UnknownSource)atjavax.swing.table.DefaultTableColumnModel.getColumn(UnknownSource)atjavax.swing.plaf.basic.BasicTableHeaderUI.getH