Tag: awt

禁用awt / swing调试(精细)日志消息

我正在使用java日志记录将我的应用程序的日志消息写入日志文件和其他目标。 将日志级别设置为FINE ,我还从AWT / Swing中获取(不需要的)消息,例如: {0}, when grabbed {1}, contains {2} 和别的。 查看JDK源代码(参见此处 ),可以看到相应记录器的名称是sun.awt.X11.grab.XWindowPeer 。 我从Java日志框架中理解的是,这个日志记录处理程序应该从其父类如sun.awtinheritance其日志级别。 我尝试了以下方法: Logger.getLogger(“sun.awt”).setLevel(Level.OFF); 但AWT / Swing调试消息仍出现在日志输出中。 以编程方式禁用这些日志消息的推荐方法是什么(同时仍允许来自其他来源的FINE消息)?

如何在Java中获得真正的字符串高度?

我正在使用FontMetrics.getHeight()来获取字符串的高度,但它给了我一个错误的值,切断了字符串字符的下降。 我可以使用更好的function吗?

AffineTransform没有改变中风?

当使用带有两个不同参数的Graphics2D scale()函数(在x和y方向上按不同比例缩放)时,稍后在此Graphics2D对象上绘制的所有内容也会缩放。 这具有奇怪的效果,即在一个方向上绘制的线比在另一个方向上绘制的线更粗。 以下程序产生此效果,它显示此窗口: public class StrokeExample extends JPanel { public void paintComponent(Graphics context) { super.paintComponent(context); Graphics2D g = (Graphics2D)context.create(); g.setStroke(new BasicStroke(0.2f)); int height = getHeight(); int width = getWidth(); g.scale(width/7.0, height/4.0); g.setColor(Color.BLACK); g.draw(new Rectangle( 2, 1, 4, 2)); } public static void main(String[] params) { EventQueue.invokeLater(new Runnable(){public void run() { StrokeExample example = new […]

如何正确输出java全屏

现在我在我的程序中做的是我正在使用setundecorated = true和setundecorated = true因此它使它全屏显示并且显示看起来非常好,但问题是左侧和右侧有图像(边框)我的屏幕和蓝色背景。 发生的变化是,在更改屏幕和分辨率时,这些会受到干扰并且无法正确显示。 那些灰色斑块再次出现 历史: 我有一个java程序,我想要全屏打开; 我无法找到正确的方法,因此我将最小值调整为(1370,727)和最大尺寸。 因此,它开始在我的笔记本电脑上正常打开,但当我将笔记本电脑的显示器更换为LCD时,它开始出现问题: 它在一个较小的窗口中打开: 如果我然后点击最大化按钮,侧面和底部会出现一个灰色区域(我希望屏幕上的项目能够拉伸或居中): 例如,底部有一个灰色的补丁。 相反,我希望背景覆盖整个屏幕。 更新1如果我更改为可伸缩的gridbaglayout,这是我使用的代码,会发生什么: Menu.setExtendedState(MAXIMIZED_BOTH); GridBagLayout gbl = new GridBagLayout(); Menu.setLayout(gbl); JButton component = new JButton(“1”); gbl.layoutContainer(Menu); GridBagConstraints gbc = new GridBagConstraints(); gbc.fill = GridBagConstraints.NONE; gbl.setConstraints(component, gbc); Menu.add(component); Menu.pack(); Menu.setVisible(true); 题 如何将“this”框架设置为setExtendedState(MAXIMIZED_BOTH),就像我对其他人一样? (如果我在main函数中执行此操作,则会出现错误;即使我为此创建函数并在main中调用它也会出现错误) 如何根据额外的灰色空间来拉伸/重新排列所有内容? 更新2此项目中的我的文件: 更新3这是我正在处理“FormTTS.java”的当前文件在那里搜索“MAXIMIZED_BOTH” ,你会发现我想你要检查的代码。

Java applet重新绘制一个移动的圆圈

我刚从Pygame搬过来,所以applet中的Java 2D对我来说有点新鲜,特别是在重新绘制屏幕时。 在pygame中你可以简单地做display.fill([1,1,1])但是如何在Java中的applet中做到这一点? 我理解使用repaint()但是没有清除屏幕 – 任何移动的物体都没有从屏幕上“移除”,所以你得到一长串画圆。 这是我一直在测试的代码: package circles; import java.applet.Applet; import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.util.Random; public class circles extends Applet implements Runnable { private static final long serialVersionUID = -6945236773451552299L; static Random r = new Random(); String msg = “Click to play!”; static int w = 800, h = 800; int[] […]

Mac OS X上没有窗口的基于SystemTray的应用程序

如何在mac os x上执行仅作为SystemTray TrayIcon运行的应用程序(没有awt窗口和停靠图标)? 我正在使用的代码是这样的: public class App { public static void main( String[] args ) { final TrayIcon trayIcon; if (SystemTray.isSupported()) { SystemTray tray = SystemTray.getSystemTray(); Image image = Toolkit.getDefaultToolkit().getImage(“tray.gif”); trayIcon = new TrayIcon(image, “Tray Demo”); trayIcon.setImageAutoSize(true); try { tray.add(trayIcon); } catch (AWTException e) { System.err.println(“TrayIcon could not be added.”); } } else { […]

在编辑面板后读取面板到布局?

我要做的是动态编辑面板并将其读取到(边框)布局。 该面板包含文本字段,我希望用户能够向面板添加或删除文本字段。 我尝试的是以下内容:从布局中删除面板,向面板添加另一个文本字段,将面板读取到布局。 然而,这不起作用(没有发生任何事情;只有面板被删除但没有读入新的文本字段,因此该区域只是空的)。 即使我从布局中移除了面板,然后将另一个组件添加到该位置的布局(BorderLayout.EAST); 没事(只是空的)。 这是代码中不起作用的部分: vfields[blocks] = new TextField(“0”); //add new textfield to the array of textfields blocks += 1; dp.blocks = blocks; this.remove(values_fields); //remove the values_fields panel from the borderlayout values_fields.add(vfields[blocks]); //add new component,textfield to the panel this.add(values_fields, BorderLayout.EAST); //readd the panel to the border layout<– doesn't work 我希望任何人都可以帮助我。 我对Java很陌生,所以我可能只是做了一些完全错误的事情,但我自己也没有看到。 提前致谢! Skyfe。

Swing:如何从AWT线程运行作业,但是在窗口布局之后?

我的完整GUI在AWT线程内运行,因为我使用SwingUtilities.invokeAndWait(…)启动主窗口。 现在我有一个JDialog,它只是显示一个JLabel ,它表示某个作业正在进行中,并在作业完成后关闭该对话框。 问题是:标签不显示。 这项工作似乎是在JDialog完全布局之前开始的。 当我只是打开对话框而不等待作业并关闭时, 会显示标签。 对话框在其ctor中执行的最后一项操作是setVisible(true) 。 诸如revalidate() , repaint() ,……之类的东西也无济于事。 即使我为受监视的作业启动一个线程,并使用someThread.join()等待它也没有帮助,因为当前线程(即AWT线程)被join阻塞,我猜。 用JFrame替换JDialog也无济于事。 那么,这个概念一般是错的吗? 或者,在确保JDialog (或JFrame )完全布局后 ,我可以管理它以完成某项工作吗? 我想要实现的简化算法: 创建JDialog的子类 确保它及其内容完全布局 启动一个进程并等待它完成(线程与否,无关紧要) 关闭对话框 我设法编写了一个可重现的测试用例: 编辑现在解决了问题:这个用例确实显示了标签,但由于对话框的模态,它在“模拟过程”之后无法关闭。 import java.awt.*; import javax.swing.*; public class _DialogTest2 { public static void main(String[] args) throws Exception { SwingUtilities.invokeAndWait(new Runnable() { final JLabel jLabel = new JLabel(“Please wait…”); @Override public […]

将AWT图像转换为SVG图像

我正在使用以下代码摄取AWT图像(从PDF,到PDFBox): private java.awt.Graphics2D graphics; public void drawImage(java.awt.Image awtImage, java.awt.geom.AffineTransform at) { graphics.setComposite(getGraphicsState().getStrokeJavaComposite()); graphics.setClip(getGraphicsState().getCurrentClippingPath()); graphics.drawImage( awtImage, at, null ); } 并希望捕获/输出图像为SVG。 我一直在使用生成svgforms的Batik库 我有自己的SVG库,并希望将方法添加到我的SVGImage类中以生成类似的东西。 我是否需要将AffineTransformation应用于数据,如果是,如何? 我很高兴能够指出适当的(F / OSS)方法或可以做到这一点的库。 数据应该是内联的(如上例所示)和XML兼容。 更新:在没有任何答案或评论的情况下,我不得不编写自己的实现。 这不是完全无足轻重的,可能不是很强大或最好的解决方案。 我将其作为答案附加 – 请评论是否有缺陷或可以改进。

如何获得Java应用程序的鼠标位置?

documentDOM.addEventListener(“click”, new EventListener() { public void handleEvent(Event evt) { if (evt.getType().equals(“click”)) { System.out.println(“hello”); MouseEvent mouseIvent = (MouseEvent) evt; int screenX = mouseIvent.getXOnScreen(); int screenY = mouseIvent.getYOnScreen(); System.out.println(“screen(X,Y) = ” + screenX + “\t” + screenY); } } }, true); 我需要在我的Java应用程序上找到特定的像素位置。 此Java应用程序可以窗口化或最大化窗口。 我的代码以某种方式不返回整数。 当hello消息吐出时,此事件会触发。