Tag: awt

如何使JTable列不包含JTextFields,而是包含JTextAreas?

请告诉我,如何使JTable列包含JTextAreas,因此当用户输入大量文本时,单元格的高度会增加,我们可以看到多行(单元格被扩展;结果,行也会扩展)

Java无头双三次图像resize

我需要执行java图像裁剪并在没有X服务器的情况下resize。 我尝试了几种方法。 下面的第一个方法有效,但输出一个相当难看的resize的图像(可能使用最近邻居算法resize: static BufferedImage createResizedCopy(Image originalImage, int scaledWidth, int scaledHeight, boolean preserveAlpha) { int imageType = preserveAlpha ? BufferedImage.TYPE_INT_RGB : BufferedImage.TYPE_INT_ARGB; BufferedImage scaledBI = new BufferedImage(scaledWidth, scaledHeight, imageType); Graphics2D g = scaledBI.createGraphics(); if (preserveAlpha) { g.setComposite(AlphaComposite.Src); } g.drawImage(originalImage, 0, 0, scaledWidth, scaledHeight, null); g.dispose(); return scaledBI; } 所以我决定使用bicubic resize,它可以提供更好的结果: public static BufferedImage createResizedCopy(BufferedImage source, […]

使用JSeperator时不寻常的差距 – Java

我一直在研究Swing GUI并在添加JSeperator后得到一些不寻常和不必要的空白,不知道如何删除它们? 或任何其他选项,如何很好地实现这一目标! 视觉描述 在JLabel “速度”和JSlider之后,差距显而易见。 相关代码 control.setLayout(new BoxLayout(control, BoxLayout.X_AXIS)); …another code omitted… control.add(orientation); //JLabel control.add(norm); //JRadioButton control.add(back); //JRadioButton control.add(new JSeparator(SwingConstants.VERTICAL)); control.add(speedLabel); //JLabel control.add(speed); //JSlider control.add(new JSeparator(SwingConstants.VERTICAL)); control.add(turnOutLabel); //JLabel control.add(right); //JRadioButton control.add(straight); //JRadioButton control.add(left); //JRadioButton 我想要的是让JSeperator把所有东西都集中在一起, 视觉描述 谢谢。

用户空闲时间超过10分钟后,Java应用程序会使屏幕显示无响应

我编写了一个Java应用程序,允许用户编写鼠标/键盘输入脚本( JMacro ,链接并不重要,只是为了好奇)。 我个人使用该应用程序在我睡觉的同时在线游戏中自动执行角色动作。 不幸的是,我一直在早上回到电脑前发现它没有反应。 经过进一步测试,我发现我的应用程序导致计算机在大约10分钟的用户空闲时间后无响应(即使应用程序本身模拟用户活动)。 我似乎无法指出这个问题,所以我希望其他人可能会建议在哪里寻找或可能导致问题的原因。 相关症状和特征: 用户闲置10分钟后发生无响应 用户仍然可以在屏幕上移动鼠标指针 除鼠标外的所有内容都显示为冻结…鼠标单击无效,并且没有应用程序更新其显示,包括Windows 7桌面 我让应用程序管理器一起在应用程序中过夜,所以我可以在屏幕冻结之前看到最后一个任务管理器图像… Java应用程序正常CPU /内存使用率和总CPU使用率仅为~1% 移动鼠标后(换句话说,用户从空闲状态返回),屏幕图像在30分钟内再次开始更新(这是非常受欢迎的,有时是10分钟,有时在两小时后没有结果) 用户可以按CTRL-ALT-DEL进入Windows 7的CTRL-ALT-DEL屏幕(暂停30秒后)。 用户仍然可以移动鼠标指针,但单击任何按钮选项会导致屏幕再次冻结 在一些非常罕见的情况下,系统永远不会冻结,我会在早上回到它并充分响应 Java应用程序会在半夜自动停止输入脚本,因此Windows 7检测到“真正的”空闲状态并将显示器转为待机模式……当我醒来时,他们在早上手动移动鼠标时成功退出即使桌面显示仍然显示为冻结 鉴于问题的症状和特征,就好像Java应用程序导致登录用户的桌面显示停止更新,包括任何正在运行的应用程序。 使用的编程概念和Java包: multithreading 标准输出和错误被重新路由到javax.swing.JTextArea 该应用程序使用Swing GUI awt.Robot(非常使用) awt.PointerInfo awt.MouseInfo 系统规格: Windows 7专业版 Java 1.6.0 u17 总之,我应该强调,我不是在寻找任何具体的解决方案,因为我没有提出一个非常具体的问题。 我只是想知道在使用我正在使用的Java库时是否有人遇到过类似的问题。 我也很乐意感谢任何有关尝试进一步查明造成问题的原因的建议。 谢谢! 罗斯 PS,我会发布更新/答案,如果我在继续调试时遇到其他任何事情。 更新:我的应用程序涉及multithreading进程,每个进程初始化自己的Robot对象并异步创建输入事件。 我重构了应用程序只包含一个Robot单例对象,但不同的进程仍然异步调用输入命令。 据我所知,这并没有改变我的应用程序的行为。 我的下一步可能是在Robot单例周围创建一个同步包装器,看看是否有帮助,但鉴于症状,我不知道为什么会这样。

将Java图形用于applet时,可以增加线条粗细吗? 我不相信BasicStroke有效

我无法调整线条粗细。 我可以在图形中执行此操作,还是必须在Graphics2D中执行此操作? 如果是这样,我该如何改变程序以使其运行? 谢谢! import java.applet.Applet; import java.awt.*; public class myAppletNumberOne extends Applet { public void paint (Graphics page) { //Something here??? } }

SwingUtilities.invokeLater采用Runnable并在EDT上运行它?

我对SwingUtilities.invokeLater的签名感到困惑。 它需要一个Runnable对象。 这个Runnable对象是否被移交给Event Dispatch Thread? 为什么我不能直接在EDT的run方法上调用createAndShowGUI (如果可能的话)? 我已经阅读过有关 EDT和invokeLater如何工作的文章,但我对传递的Runnable对象感到困惑。 SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGUI(); } }); 如果我在电话下方再次呼叫SwingUtilities.invokeLater会发生什么? SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGUI(); } }); SwingUtilities.invokeLater(new Runnable() { public void run() { doSomethingOnTopOfGUI(); } });

为什么swing会简单地绘制两次?

这是绘制椭圆形的简单示例。 public class SwingPainter extends JFrame{ public SwingPainter() { super(“Swing Painter”); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); getContentPane().add(new MySwingComponent()); setSize(200, 200); setVisible(true); } public static void main(String[] args) { new SwingPainter(); } class MySwingComponent extends JComponent { public void paintComponent(Graphics g) { System.out.println(“paintComponent”); super.paintComponent(g); g.setColor(Color.red); g.fillOval(10, 10, 50, 50); } @Override protected void paintBorder(Graphics g) { System.out.println(“Paint border”); super.paintBorder(g); } […]

如何有效地实现java.awt.Composite?

背景:我需要能够以“禁用”外观创建图像。 通常建议的方法是将图像转换为灰度并显示灰度图像。 缺点是它只适用于图像,因此显示图形很麻烦,因为您无法立即访问处于禁用状态的图像。 现在我认为这可以使用java.awt.Composite动态完成(然后我不需要知道如何实现一个Icon来禁用它)。 似乎没有实现转换为灰度,所以我必须创建自己的…… 也就是说,我一起攻击了一个实现(它呈现了我所期望的)。 但我不确定它是否真的适用于所有情况(复合/ CompositeContext的Javadocs对于这种复杂的操作看起来非常薄)。 正如你从我的实现中看到的那样,我采用了一种迂回的方式来逐像素处理,因为似乎没有简单的方法来批量读取/写入像素,而这种格式并不是由所涉及的栅格决定的。 欢迎任何指向更广泛的文档/示例/提示的指针。 这是SSCCE – 它通过DisabledComposite渲染(彩色)GradientPaint,将渐变转换为灰度。 请注意,在现实世界中,您将无法知道通过哪些调用呈现的内容。 Gradient实际上只是一个例子(抱歉,但是人们常常没有这样做,所以这次我会明确说明)。 import java.awt.BorderLayout; import java.awt.Color; import java.awt.Composite; import java.awt.CompositeContext; import java.awt.Dimension; import java.awt.GradientPaint; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.image.ColorModel; import java.awt.image.Raster; import java.awt.image.WritableRaster; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.SwingUtilities; public class CompositeSSCE implements Runnable { static class DisabledComposite implements […]

Java:没有awt创建图形?

是否有任何库可以在不使用AWT的情况下创建图形? 我需要的是简单的绘图function(如画线)和文本绘图function,以便在内存中为Google应用引擎应用创建图形。 App引擎不支持AWT。 谢谢!

如何从具有多个TTF文件的Font系列导入自定义java.awt.Font? (包括一个例子)

我知道您可以使用以下内容导入Java中的Font: File file = new File(fontPath); Font font = Font.createFont(Font.TRUETYPE_FONT, file); // alternative: // Font font = Font.createFont(Font.TRUETYPE_FONT, new FileInputStream(file)); GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); ge.registerFont(font); 然后你会使用例如font.deriveFont(Font.PLAIN, 20); 获得所需的风格和大小。 例 但现在让我们看一下Consolas字体的例子,那里有四个TTF文件: consola.ttf (Plain) consolab.ttf (Bold) consolai.ttf (斜体) consolaz.ttf (Bold&Italic) 当然你可以用上面consola.ttf的方法导入consola.ttf ,然后使用font.deriveFont(Font.BOLD, 20); 与使用consolab.ttf因为简单字体只是转换为粗体字体。 示例图片 这里我用new Font(“Consolas”, Font.PLAIN, 20);安装了new Font(“Consolas”, Font.PLAIN, 20); 和new Font(“Consolas”, Font.BOLD, 20); (作为旁注,如果您使用deriveFont(Font.BOLD); […]