Tag: awt

导出后,java无法查找/绘制图像

你好stackoverflowites, 我正在开发一个2D游戏,当我在eclipse中运行它时,我的程序加载了它的所有图像和资源。 但是,我使用了不一定推荐的创建图像和图像图标的方法,如下所示: bannerLogo.setIcon(new ImageIcon(“/res/client/BannerHeader.jpg”)); 现在,当导出到jar时,它不会显示图像(这是预期的,因为我没有使用正确的方法。) 我搜索了正确的方法,我找到了: URL imgURL = getClass().getResource(“/res/client/BannerHeader.jpg”); Image bannerImg = Toolkit.getDefaultToolkit().getImage(imgURL); bannerLogo.setIcon(new ImageIcon(bannerImg)); 这也不起作用,我得到一个“未捕获的错误提取图像:”跟踪,它只是告诉我我的URL(imgURL)为空。 (这是我在日食中运行的时候,请注意,我甚至还没有将其导出) 我认为它与我的类路径有关,但我无法弄清楚是什么。 在Eclipse中,我的包结构如下: (父目录,项目名称) + src文件夹,在构建路径上有正常的包等 +资源文件夹,(“res”),不在构建路径上(在构建路径上尝试过,没有任何更改) +++资源文件夹的子目录 我不知道在这做什么。 对不起,文字墙。

AffineTransform会截断图片,我有什么不对?

我这里有一个尺寸为2156×1728的黑/白png文件,我希望使用AffineTransform旋转90度。 生成的图像没有正确的比例。 这里有一些示例代码(假设我已成功将png文件加载到BufferedImage中): public BufferedImage transform(BufferedImage image){ System.out.println(“Input width: “+ image.getWidth()); System.out.println(“Input height: “+ image.getHeight()); AffineTransform affineTransform = new AffineTransform(); affineTransform.setToQuadrantRotation(1, image.getWidth() / 2, image.getHeight() / 2); AffineTransformOp opRotated = new AffineTransformOp(affineTransform, AffineTransformOp.TYPE_BILINEAR); BufferedImage transformedImage = opRotated.createCompatibleDestImage(image, image.getColorModel()); System.out.println(“Resulting width: “+ transformedImage.getWidth()); System.out.println(“Resulting height: “+ transformedImage.getHeight()); transformedImage = opRotated.filter(image, transformedImage); return transformedImage; } 输出相应: 输入宽度:2156 […]

以编程方式创建带文本的SplashScreen的最佳示例

我需要以编程方式创建一个SplashScreen并向其添加文本(并更改它)。 大多数示例使用命令行参数。 有没有解决方案吗?

JScrollPane中JPanel上的JTextArea没有正确resize

我想实现以下目标: +——————Other container(s)—————–+ | +——JScrollPane (vertical)——-+ | | | JTextField | | | | Box.createRigidArea (vertical) | | | | JTextArea | | | | { etc.. any other J-component } | | | | | | | | | | | | | | | | | | | +———————————–+ | +—————————————————–+ 我能得到的最接近的是以下(伪)代码: JPanel […]

Java双缓冲

我正在研究一个项目,我已经尽可能多地阅读了java中的双缓冲。 我想要做的是添加一个组件或面板或其他东西到我的JFrame,其中包含要绘制的双缓冲表面。 我希望尽可能使用硬件加速,否则使用常规软件渲染器。 到目前为止我的代码看起来像这样: public class JFrameGame extends Game { protected final JFrame frame; protected final GamePanel panel; protected Graphics2D g2; public class GamePanel extends JPanel { public GamePanel() { super(true); } @Override public void paintComponent(Graphics g) { g2 = (Graphics2D)g; g2.clearRect(0, 0, getWidth(), getHeight()); } } public JFrameGame() { super(); gameLoop = new FixedGameLoop(); […]

java.awt.Color.getColor(String colorName)如何工作?

我试图通过名称获取颜色,我遇到了在Java中将字符串转换为颜色 ,这建议使用java.awt.getColor 。 我无法确定将其作为字符串传递的内容。 下列 System.out.println( java.awt.Color.getColor( “black”, Color.red ) ); 打印出来 java.awt.Color中[R = 255,G = 0,B = 0] 即它在那里使用默认颜色。 我把它放在一个文本框中,并尝试了替代资本等。这里的文档不是很有帮助。 任何人都可以建议放入什么神奇的字符串?

如何使用Graphics对象绘制透明形状?

我想在具有透明背景的BufferedImage创建一个“环”。 我可以用这样的透明背景绘制圆圈: BufferedImage bi = new BufferedImage(d, d, BufferedImage.TYPE_INT_ARGB); Graphics2D g = (Graphics2D) bi.getGraphics(); g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g.setColor(c); g.fillOval(0, 0, d, d); 但是现在我想在它的中间绘制一个较小的透明圆圈来制作一个圆环(所以当我在另一个图像上绘制这个图像时,环形周围和内部的像素都不会被绘制)。 我想使用Graphics对象来执行此操作,以便我可以使用抗锯齿。 这可能吗? 如果不是,那么解决这个问题的最佳方法是什么?

从java程序关闭特定URL的Web浏览器

我想从java程序中关闭特定URL的打开Web浏览器/浏览器选项卡。 我可以使用java中的Desktop API在Internet Explorer中打开URL。 下面是在IE中打开浏览器的代码片段 java.awt.Desktop desktop = java.awt.Desktop.getDesktop(); desktop.browse(new java.net.URI(“http://www.xyzz.com”)); 现在,当我再次运行程序时,我想确保在浏览器中没有已打开上述URL的实例。 如果是这样,请关闭它并在新的TAB或浏览器窗口中再次打开它。 这可能看起来很奇怪。 我知道应该解决这个问题的基本方法是,我们需要识别进程并终止它,然后再次调用上面的代码。 任何建议都是受欢迎的。

创建巨大的BufferedImage

我无法创建一个巨大的BufferedImage(缺少内存不是问题)。 有没有人有任何想法? 1. new BufferedImage(10000,1000000,BufferedImage.TYPE_3BYTE_BGR); Exception in thread “main” java.lang.NegativeArraySizeException at java.awt.image.DataBufferByte.(DataBufferByte.java:42) at java.awt.image.Raster.createInterleavedRaster(Raster.java:253) at java.awt.image.BufferedImage.(BufferedImage.java:368) 2. new BufferedImage(10000,1000000,BufferedImage.TYPE_INT_RGB); Exception in thread “main” java.lang.IllegalArgumentException: Dimensions (width=10000 height=1000000) are too large at java.awt.image.SampleModel.(SampleModel.java:112) at java.awt.image.SinglePixelPackedSampleModel.(SinglePixelPackedSampleModel.java:124) at java.awt.image.Raster.createPackedRaster(Raster.java:770) at java.awt.image.Raster.createPackedRaster(Raster.java:466) at java.awt.image.DirectColorModel.createCompatibleWritableRaster(DirectColorModel.java:1015) at java.awt.image.BufferedImage.(BufferedImage.java:315)

如何删除动画中的最后一个图像

我要做的是创建一个动画,创建一个“运行”的动作。 每当我在屏幕上绘制它时,动画中的最后一帧都会被遗留(因此当精灵移动时会留下一些动画帧的痕迹)。 我已经尝试过if语句并在帧更改时更改图像的绘制位置: if(a2.sceneNum() == 0) spectre_Draw1 = (screenWidth() / 2 – 120 / 2 + 120 – 6); else spectre_Draw1 = 0; g.drawImage(pic[2], spectre_Draw1, (screenHeight() / 2 – 180 / 2), null); if(a2.sceneNum() == 1) spectre_Draw2 = (screenWidth() / 2 – 120 / 2 + 120 – 6); else spectre_Draw2 = 0; g.drawImage(pic[3], spectre_Draw2, […]