Tag: awt

存储Graphics对象是一个好主意吗?

我目前正在用java写一个绘图程序,这个程序的devise具有灵活和全面的function。 这源自我最后的项目,我前一天写了一整晚。 正因为如此,它有吨和大量的错误,我一直在逐一处理(例如,我只能保存文件将是空的,我的矩形不正确,但我的圈子呢…)。 这一次,我一直在试图为我的程序添加撤销/重做function。 但是,我不能“撤销”我所做的一切。 因此,每次发生mouseReleased事件时,我都有一个想法来保存我的BufferedImage副本。 但是,有些图像的分辨率达到了1920×1080,我认为这样做效率不高:存储这些图像可能需要千兆字节的内存。 为什么我不能简单地用背景颜色绘制同样的东西来撤消是因为我有许多不同的画笔,基于Math.random()绘制,因为有许多不同的图层(在单个图层中) 。 然后,我考虑克隆用于绘制到BufferedImage的Graphics对象。 喜欢这个: ArrayList<Graphics> revisions = new ArrayList<Graphics>(); @Override public void mouseReleased(MouseEvent event) { Graphics g = image.createGraphics(); revisions.add(g); } 我之前没有这样做,所以我有几个问题: 难道我仍然在浪费毫无意义的记忆吗?就像克隆我的BufferedImages ? 是否有一种不同的方式可以做到这一点?

Java:使用图像作为button

我想在Java中使用一个图像作为button,我试图做到这一点: BufferedImage buttonIcon = ImageIO.read(new File("buttonIconPath")); button = new JButton(new ImageIcon(buttonIcon)); 但是这仍然显示图像背后的实际button,我只想将图像作为button来使用,我该怎么做?

如何在Java中居中一个窗口?

居中java.awt.Window的最简单方法是什么,比如JFrame或者JDialog ?

Swing和AWT有什么区别?

有人可以解释我什么是Swing和AWT之间的区别? 是否有任何情况下,AWT比挥杆更有用/build议使用,反之亦然?

屏幕上鼠标位置周围区域的缩放框

有什么办法可以创build一个Javadynamic缩放框,其中包括例如20x20pix区域的光标(但即使光标将超出应用程序的框架),将例如在一个小的JPanel中显示? 我正在问一个颜色select器程序的上下文。 需要实现的最后一个function就是Zoom Box。

为什么我的项目没有显示在JFrame中?

我对JFrame相当陌生,我想知道为什么我的项目没有显示在窗口上。 我知道我没有一个ActionHandler,但我只想我的文本框显示在我的窗口。 这是我的代码: import java.awt.Font; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPasswordField; import javax.swing.JTextField; public class FirstGUI extends JFrame{ public void GUI(){ setTitle("Welcome"); setResizable(false); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); setSize(600,600); JLabel title = new JLabel(); title.setText("Apple Inc. Member Login Port"); title.setFont(new Font("Arial", Font.PLAIN, 24)); JTextField login = new JTextField("Login",10); JPasswordField pass = new JPasswordField("Password"); add(title); add(login); add(pass); } public […]

从鼠标光标下获取RGB值

我正在尝试构build一个程序来检测鼠标光标下的颜色,然后在屏幕上的窗口中显示颜色和RGB值。 我对Java很新,所以不知道什么。 我有两个代码,我已经在一个朋友的帮助下,第一个获取caching图像的特定坐标的RGB值,另一个获取用户定义的RGB值,并显示一个窗格中的颜色。 我的问题是“如何让程序检测鼠标光标下的颜色,而不pipe它滚动的是什么? public class Buffered_Image { public static void main(String[] args) throws IOException { BufferedImage bi = ImageIO.read(new File("C:/Users/user/Pictures/Hornet.jpg")); Color c = new Color(bi.getRGB(50,40)); int red=c.getRed(); int green=c.getGreen(); int blue=c.getBlue(); System.out.print("Red " + red + " Green " + green+ " Blue" + blue + "\n" ); } } public class RGB_Pane { […]

java多个graphics

好,所以我一直在研究这个代码,显示了sortingalgorithm是如何工作的。 现在我有它在同一sorting多个图表sorting的工作,但我需要每个图表在同一时间做不同的sorting。 我一直在研究和试图解决这个问题,现在我只是拥有隧道视野。 我会发布我的代码,以防我的解释混乱。 我觉得这可能会使很多使用javagraphics的人受益,任何帮助都将不胜感激。 import java.applet.Applet; import java.awt.*; import java.awt.event.*; import java.util.Random; import java.util.StringTokenizer; import java.util.Scanner; public class Sort extends Applet { /** Constructor. Only for starting the sorting animation as applet. */ public Sort() {} /** For starting the sorting animation as application. */ public static void main(String[] argv) { Frame _aFrame = […]

绘制一个组件到BufferedImage导致显示损坏

我正在使用这里描述的JScrollNavigator组件,以便将一个导航窗口提供到一个embeddedJScrollPane的大型“canvas”CAD组件。 我试图使用JScrollNavigator绘制canvas的缩略图来为用户提供一些额外的上下文。 但是,这样做的行为会导致我的应用程序主框架的渲染被破坏。 具体来说,它是在视口组件(即我的主canvaspaint(Graphics)上调用paint(Graphics)的动作,传递由BufferedImage创build的Graphics对象,导致后续的显示损坏; 如果我评论这一行,一切工作正常。 下面是JScrollNavigator的重写paintComponent方法: @Override protected void paintComponent(Graphics g) { Component view = jScrollPane.getViewport().getView(); BufferedImage img = new BufferedImage(view.getWidth(), view.getHeight(), BufferedImage.TYPE_INT_ARGB); Graphics2D g2d = img.createGraphics(); // Paint JScrollPane view to off-screen image and then scale. // It is this action that causes the display corruption! view.paint(g2d); g2d.drawImage(img, 0, 0, null); Image scaled = […]

Java的Paint方法出现问题,可笑的刷新速度

我正在开发R-Type的一个非常简单的版本作为大学的工作,但尽pipe它的工作,手艺速度是很慢,所以运动是丑陋和笨拙。 我用刷新的方法刷新屏幕,还有其他的方法或方法最好吗? 运动video 在主面板上绘制方法 @Override public void paint(Graphics g) { super.paint(g); Graphics2D g2 = (Graphics2D) g; g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2.drawImage(fondo, 0, 0,1200,600,this); pj.paint(g2); g2D=g2; } PJ的油漆方法 public void paint(Graphics2D g) { g.drawImage(imagen,x,y,this); } PJ的移动方法 public void move (KeyEvent e) { int dx = 0; int dy = 0; int code = e.getKeyCode(); switch (code) { case […]