Tag: awt

如何使用TYPE_BYTE_GRAY使用AWT高效创建灰度缓冲图像

我需要从nio ShortBuffer中的数据创建灰度图像。 我有一个函数将ShortBuffer中的数据映射到无符号字节,但是在int中(很容易更改)。 我发现的方法使用RGB加透明色模型,看起来非常无效。 我无法看到如何应用TYPE_BYTE_GRAY并修改代码。 我是Java的新手。 这是我的代码: public void paintComponent(Graphics g) { final BufferedImage image; int[] iArray = {0, 0, 0, 255}; // pixel image = (BufferedImage) createImage(WIDTH, HEIGHT); WritableRaster raster = image.getRaster(); sBuf.rewind(); // nio ShortBuffer for (int row = 0; row < HEIGHT; row++) { for (int col = 0; col < WIDTH; […]

使用Java的机器人按住键

目前我正在努力让java按下如下键: Robot rob; rob.keyPress(KeyEvent.VK_ENTER); Thread.sleep(3000); rob.keyRelease(KeyEvent.VK_ENTER); 这应该按住3秒钟,在一秒左右后产生重复效果。 换句话说,如果您要手动按住“r”键,它将首先键入r,然后大约一秒后它会像rrrrrrrr一样。 我想从机器人那里得到这个效果。 我也尝试过: curTime = System.currentTimeMillis(); while(System.currentTimeMillis() – curTime < duration) { rob.keyPress(whatever); } rob.keyRelease(whatever); 然而,这是非常敏感的,持续时间为1秒输出……好吧,你的计算机可以在1秒钟内完成许多任务。 成千上万的线条值得。 这不是我的意图。 有任何想法吗? 谢谢! PS我想要这种行为的原因是因为我正在编写一种脚本语言来自动化游戏。 如果我想像正常人那样按住向上箭头键,我认为我需要我正在谈论的行为。 编辑: 由于似乎有些混乱,我道歉。 让我详细说明一下。 在我的第一个代码中,如果我选择“r”作为角色,它将只打印一个r而不管持续时间。 如果您在键盘上按“r”5秒钟,它将会 – > r … rrrrrrrrrrrrrrr …其中……意思是一秒钟。 这是我想要的行为,但我不会得到它。 第二个代码是我尝试垃圾邮件的地方点击“按”,但这实际上键入“r”它执行的每一次。 因此,如果我在一个持续时间的定时循环中,每次循环迭代它将发送“r”按钮。 那不是我想要的。 我想要的是,同样的结果就像你将键盘按下键盘3秒钟一样。 首先它只是一个r,然后是rrrrrrrrrrrrrrrrrrrrrr。 我甚至不确定release()方法的作用……我想如果你把它留在按下但没有释放,它就会在循环中将SPAM屏蔽掉! 为什么不这样做,关键是压力? 这让我很困惑。 显然,当按下某个键时,它不会按住。

如何实时触发MouseMotionListener事件?

我正在尝试创建一个图形绘制程序,允许用户通过将鼠标拖到屏幕上来绘制红色像素。 所以在某种程度上,您可以将此程序视为Microsoft的Paint程序,但只使用铅笔绘图工具和红色。 不幸的是我的程序中的mouseDragged()函数无法正常工作。 如果我将鼠标移得太快,它会跳过屏幕上的一些像素,如下所示: import java.awt.*; import java.awt.event.*; import javax.swing.*; public class FrameView extends JFrame { JPanel panel; Graphics2D drawingContext; public static void main(String[] args) { new FrameView(); } public FrameView() { panel = new JPanel(); panel.addMouseMotionListener(new MouseControls()); panel.setBackground(Color.WHITE); this.add(panel); this.setSize(new Dimension(500, 500)); this.setTitle(“Drawing Program”); this.setVisible(true); drawingContext = (Graphics2D)panel.getGraphics(); } private class MouseControls extends MouseAdapter […]

多个JTextfield的空字符串validation

有没有一种方法可以在没有if else结构的情况下validationjava中的一些JTextfields。 我有一组13个字段,如果没有为13个字段中的任何一个指定条目并且能够将焦点设置到该特定文本框,我想要一条错误消息。 这是为了防止用户将空数据输入数据库。 有人可以告诉我如何在没有if else结构的情况下实现这一目标。 if (firstName.equals(“”)) { JOptionPane.showMessageDialog(null, “No data entered”); } else if (lastName.equals(“”)) { JOptionPane.showMessageDialog(null, “No data entered”); } else if (emailAddress.equals(“”)) { JOptionPane.showMessageDialog(null, “No data entered”); } else if (phone.equals(“”)) { JOptionPane.showMessageDialog(null, “No data entered”); } else { //code to enter values into MySql database 上面的代码属于提交注册按钮的actionperformed方法a。 尽管将MySQL中的字段设置为NOT NULL,但是从java GUI接受空字符串。 为什么是这样? […]

为什么java.awt.image.BufferedImage不能序列化?

我正在尝试用Java序列化BufferedImage ,但是运行我的程序我收到了NotSerializableException 。 看看BufferedImage类,我注意到它没有实现Serializable 。 为什么BufferedImage没有实现Serializable ?

用Java绘制Sierpinski的三角形

我的代码有一些问题需要绘制一个Sierpinski的三角形(或者Sierpinski的垫片),但我不确定问题是什么。 绘制三角形的线条,然后绘制所有分形线,然后消失。 帮帮我? import javax.swing.*; import java.awt.*; public class SierpinskiGasket extends JFrame { Point x=new Point(5,545), y=new Point(300,25), z=new Point(605,545), current=x, target; private int count=0; public SierpinskiGasket () { super(“Sierpinski Gasket”); setSize(610,550); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); getContentPane().setBackground(Color.WHITE); setLocationRelativeTo(null); setResizable(false); setVisible(true); } public void paint(Graphics g) { super.paint(g); if(count==0) { g.drawLine(xx,xy,yx,yy); g.drawLine(xx,xy,zx,zy); g.drawLine(zx,zy,yx,yy); } else { while(count<10000) { int […]

JButton上的ImageIcons没有出现在Runnable JAR文件中

我的GUI上有6个JButton都有图像,当我编译并运行代码时,JButtons上的所有图像都很好地显示但是在可运行的JAR文件中,JButton上的图像没有显示出来……我该如何解决这个问题? 我在我的代码中使用此方法在JButtons上显示图标 ImageIcon SettingsIc = new ImageIcon(“bin/images/settings.png”); jb1 = new JButton(SettingsIc); jb1.setFocusPainted( false ); //jb1.setBorderPainted(false); jb1.setContentAreaFilled(false); 这是我在Eclipse中编译代码时GUI的外观 这是执行Runnable JAR文件后GUI的外观

Java搜索屏幕上的文本字段

我正在尝试创建一个程序,自动搜索屏幕上的文本字段,并在该文本字段中重复键入一个单词。 有没有可以找到文本字段的类? 或者有什么方法可以找到文本字段? 因为我知道Robot类可以键入文本,所以我只需要将光标放到文本字段并使用mousePress()和mouseRelease()方法。 谢谢

Swing和AWT混音很糟糕,但仍然完成,为什么?

我注意到人们建议不要混合使用Swing和AWT Components ,但是我们看到了很多: import javax.swing.AbstractButton; import javax.swing.JButton; import javax.swing.JPanel; import javax.swing.JFrame; import javax.swing.ImageIcon; //AWT imports though only for listeners import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; 那么为什么包括Java在内的许多人(因为我在这里得到了他们的教程)仍然使用AWT导入,尽管我看到它主要用于Listener 。 如何为Key , Button , JComboBox press / slections等东西添加原生的 Swing Listener s / Libraries? 或者我会使用firePropertyChangeListeners() ? (虽然这与Java Bean有关) 一段时间以来我一直困惑我,我的应用程序大部分都有Swing和AWT,据说这很糟糕?

如何用Java中的Graphics2D旋转文本?

我想使用Graphics2D在JPanel上旋转文本.. 我的代码是这样的: double paso=d.width/numeroBarras; double alto=datos[i].valor; Font fBarras=new Font(“Serif”, Font.PLAIN, 15); g2.setFont(fBarras); Rectangle2D barra=new Rectangle2D.Double(x,d.height-alto,paso,alto); //g2.fill(barra); x+=paso; g2.draw(barra); g2.rotate(-Math.PI/2); g2.setColor(Color.BLACK); g2.drawString(datos[i].titulo,(float)alto,(float)paso) 此方法必须在矩形上绘制一个矩形和一个文本,但是当我运行此方法时,所有图形都会旋转,我只想旋转文本。 谢谢 :)