Tag: awt

如何通过点制作直线曲线

我正在寻找一种通过多个点制作直线曲线的方法。 最好使用3个点,尽管我认为为了给出进入点的线的角度的上下文,可能需要更多来给出曲线的上下文。 通常,起点P1,控制点P2和终点P3,该线应从P1弯曲到P2,然后从P2到P3弯曲。 事实上,这是我希望实现的效果的完美示例: 如果我能做到这一点,我真的会永远感激! 到目前为止,在Java中,我尝试过使用QuadCurve2D.Double , Cub icCurve2D.Double以及Path2D.Double (使用带有Path2D.Double的curveTo)之类的东西,但无济于事 – 绘制的曲线甚至不接近通过指定的控制点。 这是我到目前为止尝试过的方法的图像: 这是我用来生成图像中的点和曲线的代码: Graphics2D g = (Graphics2D) window.getGraphics(); g.setColor(Color.blue); int d = 4; // P0 int x0 = window.getWidth()/8; int y0 = 250; g.drawString(“P0”, x0, y0 + 4*d); g.fillRect(x0, y0, d, d); // P1 int x1 = (window.getWidth()/7)*2; int y1 = 235; g.drawString(“P1”, x1, […]

使用Java发送密钥组合

根据上一个链接( 如何发送键盘输出 ),Java可以模拟使用Robot类按下的键。 但是,如何模拟按键组合? 如果我想发送组合“alt-123”这可能使用机器人吗?

为什么InvokeLater导致我的JFrame无法正确显示?

好的,我已经阅读了网上的搜索结果,但我还没有找到问题的解决方案,也许我错过了一些简单的东西,因此我在这里…… 我有一个相当大的项目,处理维修业务的工单。 这是所有数据库连接,许多页面的代码和类。 但我只是在前端添加了一小段代码,实质上是在我们的笔记区域中检查新消息。 无论如何,我显示一个带有两个JLabel的简单JFrame ,而一个单独的线程查询数据库。 这一切都发生在程序的开始。 问题是我的小“请等待” JFrame提出了它的框架但没有胆量,没有背景,没有JLabel ,在等待期间(这是程序加载的其余部分,而不是数据库线程),显示后,但到那时它错过了它的观点。 我写了以下示例程序。 它显示一个简单的JFrame (CheckingMessagesGUI:一个带有两个JLabel的JFrame ,仅此而已)hibernate5秒然后显示Example(主程序) JFrame ,然后在这个例子中立即关闭( System.exit(0) ),当然我的真正的计划继续做更多。 我发现invokeLater似乎导致了这个问题。 一旦睡眠定时器用完,窗口就会显示,但显示它的代码是在Thread.sleep命令之前给出的,应该按照那个顺序完成了吗? 我的问题是为什么invokeLater会导致我的JFrame无法正确显示? 我的理解是invokeLater的目的是让项目在正确的AWT事件线程上运行,这会让我觉得这个窗口会被正确绘制。 无论如何,我确定我错过了一些明显的东西。 我在下面的代码中注释掉了invokeLater部分,它运行正常,如果你把它放回去它不… 提前谢谢了。 package javaapplication6; public class Example extends javax.swing.JFrame { public Example() { System.out.println(“Example started”); setBounds(100,100,200,200); System.out.println(“cmGUI instantiated”); CheckingMessagesGUI cmGUI = new CheckingMessagesGUI(); System.out.println(“Set cmGUI visible”); cmGUI.setVisible(true); cmGUI.validate(); try { System.out.println(“timer started”); […]

鼠标移动时java绘制线条

我想在我的应用程序中添加一个function,允许用户通过在起始位置单击鼠标并在结束位置释放它来绘制直线。 当鼠标移动直到它最终被释放时,线应该移动; 类似于使用Microsoft Paint应用程序绘制线条的方式。 如何实现这一点,以便线条在移动时重新绘制,而不重新绘制可能已在该矩形区域中绘制的其他内容?

如何确定GraphicsEnvironment是否存在

我有一个需要用户输入密码的应用程序。 我想要做的是从控制台读取密码(如果操作系统支持一个例如unix)或显示JOptionPane并要求用户输入他的密码(如果操作系统支持图形界面,例如窗口)。 有些人可能会争辩说,在上述两种情况下都可以使用控制台,因此控制台输入就足够了。 但问题是如果Java应用程序开始使用javaw.exe,则控制台不可用。 因此,我需要一种方法来确定我是否可以做任何一种情况。 我的问题是如何确定运行应用程序的环境是支持控制台还是图形界面。 我知道静态方法存在GraphicsEnvironment.isHeadless()但是从Java doc我认为这个方法无法区分操作系统是否支持图形,而不是操作系统可以支持其中一个I / O设备(键盘,鼠标,屏幕)。 有谁知道更多关于这个? 如果操作系统支持控制台或图形环境,我能够检索吗? 提前致谢。

如何在Java的CardLayout中获得顶级卡片

是否可以在Java的CardLayout中获得顶级卡? 我已经尝试循环遍历每个组件以检查isVisible()的可见性,但似乎它们都是“可见的”。 编辑:通过“顶级卡”我的意思是当前处于“顶部”的那个,正在显示,而不是第一张或最后一张牌。 另外,我不知道它是否有帮助,但我正在寻找一个JPanel(或其子类) 编辑:代码段 for (Component component : getComponents()) { if (component instanceof JPanel && component.isVisible()) { currentPanel = (JPanel) component; System.out.println(currentPanel.getClass().getName()); } } 上面的代码总是打印出每个组件类的名称,无论它们是否是可见卡。 编辑 :我将此作为学校作业的一部分。 我不是想在这里获得免费赠品,作业并不围绕这种布局。 它似乎是在面板之间切换最方便的布局。 我的老师已经指定项目中没有第三方代码。 我之前看过camickr链接的实现,但我不能使用它。 我可以松散地实现它的类似function,也许在文档中提供它,但我不能简单地下载和使用它。 编辑 :我试图获得顶级卡的原因是因为我有一个带有“添加”按钮的工具栏。 我没有为我的两个可能的东西添加一个按钮,而是希望通过查看当前正在查看的面板来知道要添加哪个按钮。 如果还有其他更合适的方法,请告诉我。 编辑 :谢谢大家的帮助。 我弄清楚问题是什么。 我想这是我的错,因为我没有提供足够的细节。 我的两张牌是JScrollPane ,我还需要查看其中的内容,看看其中一个面板是否是我看到的那个。 我没有检查滚动窗格本身上的isVisible() ,我一直在查看它始终可见的争议,滚动窗格是我需要validation的可见性。 public JPanel getCurrentPanel() { JPanel currentPanel = null; for (Component […]

在EDT之外安全使用Component.repaint()?

我找不到任何官方文档说从除了事件调度线程(EDT)之外的另一个线程调用Component.repaint是安全的。 这样吗? 我在哪里可以找到一些文档/代码?

使用Eclipse(Java)创建GUI

可能重复: eclipse的最佳GUI设计师? 是否有任何Eclipse插件工具可以帮助创建图形用户界面(swing,awt或swt),因为我厌倦了每次编写Panels,Labels,… 谢谢

Java AWT drawString()不会显示在窗口上

我正在关注Java : The complete reference 8th edition (JDK 7)的示例Java : The complete reference 8th edition (JDK 7) AWT上Java : The complete reference 8th edition (JDK 7) ,我无法在出现的窗口上显示字符串。 正确设置大小和标题,窗口显示。 如果我在paint()方法中在控制台上输出一个字符串,我发现它实际上被调用了几次,但字符串没有出现在我的应用程序的窗口中。 我看不出我偏离这个例子的地方; 我实际上有一点代码(他们添加了一个鼠标监听器和一个键监听器):\ import java.awt.Dimension; import java.awt.Frame; import java.awt.Graphics; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; public class Main { public static void main(String[] args) { Application app = new […]

摆动部件重量轻?

每当我读到Swing时,他们都会说它们是轻量级组件。 所以我只是用谷歌搜索Swing,发现这意味着Swing不依赖于本地同行。 这就是为什么他们被称为“轻量级” ? 我的意思是轻量级我认为Swing组件占用的内存比AWT组件少。 不是这样吗?