Tag: awt

绘制图像的某些部分偏离角落?

我正在使用各种精灵表来加载太空飞船。 Graphics.drawImage()的文档说明了参数 boolean Graphics.drawImage(Image img, int dstx1, int dsty1, int dstx2, int dsty2, int srcx1, int srcy1, int srcx2, int srcy2, ImageObserver observer); 但是,文档说dstx1和dsty2是左上角的坐标,当您使用dstx2和dsty2指定绘制的区域时,尺寸为(dstx2-dstx1)和(dsty2-dsty1)。 除非我误解了函数的工作原理,否则它只会从角落加载部分图像。 如何绘制未连接到左角的图像的一部分,以绘制精灵表的不同部分?

“GetMessage()”循环的Java Swing对应位置在哪里?

几年前我做了一些Win32 GUI编程。 现在我正在使用Java Swing。 出于好奇,Win32消息循环逻辑的Swing对应物在哪里? 在Win32中,它是通过API GetMessage()实现的 。 我想它肯定已被深深地包裹在某个地方。

c#using和Java import之间的区别

我知道在java中我们使用*(星号)来导入包中的所有内容 import java.lang.*; 那么为什么我们不在C#中使用相同的*(星号)来导入所有内容是否有任何方法在java中导入所有内容。 有什么区别 import java.awt.*; 和 using System.windows.forms;

Java:使用剪贴板在同一应用程序的不同实例之间复制粘贴java对象

我试图在同一个应用程序的不同实例之间实现对象的复制粘贴。 目前它只能在一个应用程序中工作(我的意思是,在同一个应用程序实例中复制和粘贴),但在不同的实例之间不起作用。 复制代码: // MyObject is a class of objects I want to copy/paste; // MyObjectSelection is a class that impements Transferable and ClipboardOwner interfaces Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); MyObject data = new MyObject(selectedItems); MyObjectSelection dataSelection = new MyObjectSelection(data); clipboard.setContents(dataSelection, this); 之后,我可以检查剪贴板的内容,如下: Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); Transferable clipboardContent = clipboard.getContents(this); DataFlavor[] flavors = clipboardContent.getTransferDataFlavors(); System.out.println(“flavors.length=” […]

如果显示器关闭,AWT / Swing是否取消绘画操作?

我遇到Swing问题,只有在计算机显示器电源关闭时才会出现,但我的Swing应用程序继续在后台运行。 似乎每当显示器关闭时,Swing / AWT都会取消所有绘画操作,导致GUI中的一些显示问题在显示器重新打开后立即可见。 例如,当我使用自定义JNI函数关闭监视器并随后打开一个简单的消息对话框时,当监视器重新打开时,消息对话框为空: 但它在下次重绘后正确绘制: 这是Swing的预期行为吗? 有没有办法指示Swing即使显示器电源关闭也能继续绘制到屏幕上? 编辑:这是一个SSCCE: package test; import javax.swing.JOptionPane; import javax.swing.SwingUtilities; public class App { public static void main(String[] args) throws Throwable { System.out.println(“***** Please turn off the monitor in the next 70 seconds *****”); Thread.sleep(1000L * 70); SwingUtilities.invokeLater(new Runnable() { @Override public void run() { JOptionPane.showMessageDialog(null, “Test”); } }); } […]

在Windows屏幕对话框弹出窗口中,全屏独占模式下的AWT帧最小化

我正在开发一个在全屏独占模式下使用awt框架的应用程序。 Everythings工作正常,直到Windows弹出窗口可见。 这将窃取焦点,我的应用程序将被最小化。 这是我的框架初始化代码: if (ApplicationConfig.getInstance().useFullscreenMode()) { frame.setUndecorated(true); frame.setResizable(false); if (monitor.isFullScreenSupported()) { monitor.setFullScreenWindow(frame); if (monitor.isDisplayChangeSupported()) { DisplayMode defaultMode = new DisplayMode( (int) appDimension.getWidth(), (int) appDimension.getHeight(), 32, DisplayMode.REFRESH_RATE_UNKNOWN); monitor.setDisplayMode(defaultMode); frame.setFulscreenDisplayMode(defaultMode); DisplayMode selectedMode = monitor.getDisplayMode(); log.debug(“Setting fullscreen display mode to ” + selectedMode.getWidth() + “x” + selectedMode.getHeight() + ” color depth: ” + selectedMode.getBitDepth() + ” refresh […]

使用Java在GUI编程中混合awt和swing

我读到SO,混合awt和swing对于Java中的GUI编程来说并不是一个好方法。 但我不能找到任何在使用swing时不使用某些awt组件的示例。 例如,即使使用swing,我遇到的大部分示例都将使用awt进行布局和事件处理。 话虽这么说,在使用Java的GUI编程中混合使用swing和awt是什么意思? 它是否意味着不要同时借用摇摆和awt等按钮,canvas等图形小部件,或者只是完全使用swing或awt? 或者可以使用摆动和事件处理以及awt布局的图形单元(如按钮,面板)? 大多数情况下,导入至少看起来像这样: import javax.swing.*; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Color; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; 我可能错了,但我没有看到使用完全摆动而没有awt的例子,或者因为我是Java GUI的新手而以错误的方式看待它。

一个动作监听器,两个JButtons

我有两个名为“Left”和“Right”的JButtons 。 “向左”按钮向左移动一个矩形对象,“向右”按钮向右移动矩形对象。 我在类中有一个ActionListener ,它在单击任一按钮时充当侦听器。 但是,我希望在单击每个操作时发生不同的操作。 如何在ActionListener区分哪个被点击?

如何隐藏JScrollBar中的箭头按钮

我需要在AWT应用程序中隐藏java.awt.Scrollbar(VERTICAL)的箭头按钮。 有谁知道如何实现这一目标? 我在这里看到了一个例子,但代码只是隐藏了按钮。 按钮的空置空间仍然存在; 它没有被滚动条占用。 更确切地说,这是我应该实现的截图。 我不确定去哪个方向。 更新:我一直在寻找AWT的解决方案。 但现在我也对Swing的建议持开放态度。

处理事件调度线程

我有一个关于’事件派遣线程’的问题。 我有一个Main类,也是一个JFrame。 它初始化代码中的其余组件,其中一些不涉及Swing,其中一些涉及。 用这样的EDT简单地初始化Main类就足够了吗?… public static void main(String[] args) { javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { new Main(); } }); } 这样一切都将在Event Dispatcher线程上运行。