Tag: awt

用红色掩码创建的java缓冲图像

我在阅读图像时遇到问题。 如果我做以下事情 URL url = new URL(“http://sofzh.miximages.com/java/gmm.jpg”); ImageInputStream stream = ImageIO.createImageInputStream(url.openStream()); ImageReader reader = ImageIO.getImageReaders(stream).next(); reader.setInput(stream, true, true); BufferedImage image = reader.read(0); ByteArrayOutputStream bos = new ByteArrayOutputStream(); ImageWriter writer = ImageIO.getImageWritersByFormatName(“JPEG”).next(); ImageOutputStream ios = ImageIO.createImageOutputStream(bos); writer.setOutput(ios); IIOImage ioImage = new IIOImage(image, null, null); writer.write(ioImage); ios.close(); FileOutputStream fos = new FileOutputStream(“badimage.jpeg”); fos.write(bos.toByteArray()); fos.close(); 图像用红色调写成。 是否有一些选项需要设置才能正确读取此图像?

如何为GUI制作启动画面?

大家好,我是Java的新手,并试图使闪屏或图像显示3秒钟。 然后它会进入我的主程序。 有没有人有想法如何做到这一点或可以链接到任何教程? 到目前为止,我已经做到了这一点,但不知道从哪里开始。 public static void main(String[] args) { splashInit(); // initialize splash overlay drawing parameters appInit(); // simulate what an application would do }

如何在Java中进行2D阴影投射?

我正在尝试按照本教程在Java中实现2D阴影投射方法: http : //ncase.me/sight-and-light/ 我想坚持使用Line2D和Polygon对象。 到目前为止,这是我的代码的主要部分: for (Polygon p : Quads.polygons) { for (int i = 0; i < p.npoints; i++) { osgCtx.setStroke(new BasicStroke(0.1f)); Line2D line = new Line2D.Double(mousePos.getX(), mousePos.getY(), p.xpoints[i], p.ypoints[i]); osgCtx.draw(line); } osgCtx.setStroke(new BasicStroke(1.0f)); osgCtx.draw(p); } 结果如下: 当涉及到构建线的参数forms时,我感到困惑。 我不知道如何用Java的方法实现数学。 有人能指出我在正确的方向,代码方面,实现这一点?

在任何屏幕分辨率中定位图像

我的程序有问题。 每当我更改屏幕分辨率时,我的图像就会开始移动到位置之外。 有关如何使我的图像保持在同一位置的任何建议,即使我更改为任何其他分辨率? p2 = new JPanel(); p2.setLayout(new FlowLayout()); ImageIcon img2 = new ImageIcon(“C:\\Drum\\Invisible4.png”); jbtn2 = new JLabel(img2); p2.add(jbtn2); add(jbtn2); jbtn2.setSize(jbtn2.getPreferredSize()); jbtn2.setLocation(140, 380);

启动画面进度条不绘图

我正试图在我的启动画面上创建自己的进度条。 创建我的启动画面很简单: java -splash:EaseMailMain.jpg Main.class(来自Eclipse) 我的main方法的第一行称为: new Thread(new Splash()).start(); 这是泼水类: public class Splash implements Runnable { public volatile static int percent = 0; @Override public void run() { System.out.println(“Start”); final SplashScreen splash = SplashScreen.getSplashScreen(); if (splash == null) { System.out.println(“SplashScreen.getSplashScreen() returned null”); return; } Graphics2D g = splash.createGraphics(); if (g == null) { System.out.println(“g is […]

AWT自定义渲染 – 捕获平滑resize并消除resize闪烁

我已经看了几个月了,到目前为止这是我提出的最好的。 由于我们的应用程序以这种方式运行并且不会被重写,因此结构(在EDT之外呈现)不值得辩论。 该应用程序具有布局模型和脚本模型,它们是集成和驱动渲染,因此渲染必须在AWT绘制模型之外执行。 我想要达到的是执行自定义渲染的最佳和可靠的方法。 以下SSCCE对我们来说效果很好。 但是,在帧大小调整期间,它有两个缺点: 偶尔有闪烁,特别是在快速resize时 从paint()调用调用resize(通过checkSize)调用的“smooth resize”hack仅适用于扩展。 缩小框架时,通常不会渲染,直到释放鼠标按钮 此外,但在这里不太明显,它偶尔会抛出IllegalStateExceptions – 可以简单地捕获/忽略这些吗? 同样有用的是输入这是否是在EDT之外发生的自定义渲染路径的最佳方法。 我尝试过最多,并做了相当广泛的研究。 这种组合(后备缓冲图像,双缓冲策略)似乎效果最好。 import java.awt.Color; import java.awt.Dimension; import java.awt.Frame; import java.awt.Graphics; import java.awt.Insets; import java.awt.Toolkit; import java.awt.event.ComponentEvent; import java.awt.event.ComponentListener; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionListener; import java.awt.image.BufferStrategy; public class SmoothResize extends Frame implements ComponentListener, MouseMotionListener { public SmoothResize() { addComponentListener(this); addMouseMotionListener(this); } private boolean […]

OSX上的JavaFX screencapture无头exception

我正在将我的旧Java应用程序从swing转换为javafx,我遇到了一个问题。 我正在使用以下代码来捕获屏幕截图: public ScreenCapper() { ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); gs = ge.getScreenDevices(); try { robot = new Robot(gs[gs.length-1]); } catch (AWTException e) { LOGGER.getInstance().ERROR(“Error creating screenshot robot instance!”); } } public Color capture() { Rectangle bounds; mode = gs[0].getDisplayMode(); bounds = new Rectangle(0, 0, mode.getWidth(), mode.getHeight()); //…… } 在Windows下运行应用程序时,此工作正常。 但是,在OSX下运行时会出现以下exception: Exception in Application start method Exception […]

获取HeadlessException:未设置X11 DISPLAY变量

线程“main”中的exceptionjava.awt.HeadlessException:没有设置X11 DISPLAY变量,但是该程序执行了一个需要它的操作。 at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:159) 在java.awt.Window。(Window.java:432) 在java.awt.Frame。(Frame.java:403) 在javax.swing.JFrame。(JFrame.java:202) 在DrawGUI。(DrawGUI.java:15) 在ShapeCreator。(ShapeCreator.java:31) 在ShapeCreator.main(ShapeCreator.java:138) 这个错误信息是什么意思? 我该如何解决?

如何将Java 2D Shape对象序列化为XML?

Shape接口由Java 2D( Arc2D , Area , CubicCurve2D , Ellipse2D , GeneralPath等)的对象实现。 一些具体对象标记为Serializable ,可以使用对象序列化进行存储和恢复,但像Area这样的其他对象不实现接口并抛出错误。 但是,由于我们经常被警告说这种天真的序列化在Java实现或版本中不一定是稳定的,我更喜欢使用某种forms的序列化。 这导致我们使用XMLEncoder和XMLDecoder从XML存储/恢复,但是它能够处理更少的Java 2D Shape对象。 两者的一些结果可以在下面看到。 我们从6个形状开始,尝试通过对象序列化和标准XML序列化来存储/恢复它们。 我们如何通过XML正确存储所有Shape对象? import java.awt.*; import java.awt.geom.*; import java.awt.image.BufferedImage; import java.beans.*; import java.io.*; import java.util.ArrayList; import javax.swing.*; import javax.swing.border.TitledBorder; public class Serialize2D { private JPanel ui; Serialize2D() { initUI(); } public void initUI() { if (ui != null) […]

如何计算JTextArea中的行数,包括由包装引起的行数?

我有一个JTextArea,我已将word-wrap和wrap-style-word设置为true。 我希望将JTextArea“打包”到给定指定宽度的最小可能高度。 要做到这一点,我正在计划使用…计算字体的高度 Font font = jTextArea.getFont(); FontMetrics fontMetrics = jTextArea.getFontMetrics(font); int lineHeight = fontMetrics.getAscent() + fontMetrics.getDescent(); …然后将其乘以JTextArea中使用的行数。 问题是JTextArea.getLineCount()计算忽略换行的换行数。 如何计算JTextArea中使用的行数,包括由自动换行引起的行数? 这里有一些演示代码可以更轻松地解决这个问题。 我有一个监听器,每次调整窗口大小时都会打印出行数。 目前,它总是打印1,但我想补偿自动换行并打印出实际使用的行数。 编辑:我在下面的代码中包含了问题的解决方案。 静态countLines方法提供了解决方案。 package components; import java.awt.*; import java.awt.event.*; import java.awt.font.*; import java.text.*; import javax.swing.*; public class JTextAreaLineCountDemo extends JPanel { JTextArea textArea; public JTextAreaLineCountDemo() { super(new GridBagLayout()); String inputStr = “Lorem ipsum […]