Tag: awt

获取javaFX 8中节点的屏幕坐标

我正在开发一个Windows 8.1 64位的JavaFX应用程序,带有4GB的RAM,JDK版本为8u45 64bit。 我想使用Robot捕获部分屏幕,但问题是我无法获取我想要捕获的锚定窗格的屏幕坐标,我不想使用snapshot因为输出质量很差。 这是我的代码。 我已经在这个链接中看到了这个问题在JavaFX中 获取 Node的全局坐标,并且这个在javaFX中获得了一个节点的真实位置,我尝试了每个答案,但没有任何工作,图像显示了屏幕的不同部分。 private void capturePane() { try { Bounds bounds = pane.getLayoutBounds(); Point2D coordinates = pane.localToScene(bounds.getMinX(), bounds.getMinY()); int X = (int) coordinates.getX(); int Y = (int) coordinates.getY(); int width = (int) pane.getWidth(); int height = (int) pane.getHeight(); Rectangle screenRect = new Rectangle(X, Y, width, height); BufferedImage capture = […]

当覆盖paint或paintComponent时需要恢复图形原始状态

我意识到大多数Java代码都会覆盖paint或paintComponent,它们中的大多数都没有恢复图形对象的旧状态,之后它们就改变了图形对象的状态。 例如,setStroke,setRenderingHint …… 我想知道在从方法返回之前恢复图形对象的旧状态是否是一个好习惯。 例如 public void paintComponent(Graphics g) { super.paintComponet(g); Stroke oldStroke = g.getStroke(); g.setStroke(newStroke); // Do drawing operation. g.setStroke(oldStroke); } 这是一个好习惯吗? 还是结束了?

java使用机器人类发送击键

我知道可以使用Robot Class在java中发送键击,但有没有办法在目标进程已经启动时指定它?

在屏幕上查找复合位置

我正在用Java实现SWT和AWT的屏幕键盘。 一个重要的事情是将键盘移动到所选文本字段可以显示的位置,而不是位于屏幕键盘后面。 对于AWT,我可以检测当前所选组件的位置 Component owner = KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner(); if (owner == null) { return; } Point ownerLocation = owner.getLocationOnScreen(); Dimension ownerSize = owner.getSize(); 如何在SWT中实现相同的逻辑? 我通过将一个focuslistener添加到SWT事件队列来获取当前选定的小部件。 但是当我打电话时 Point location = new Point(mTextWidget.getLocation().x, mTextWidget.getLocation().y); Dimension dimension = new Dimension(mTextWidget.getSize().x, mTextWidget.getSize().y); 我将得到与父复合相对的位置。 如何才能将特殊小部件的位置与整个屏幕相关联?

使JScrollPane自动向下滚动

我正在尝试使用JTextArea实现JScrollPane。 JTextArea被附加到,我希望JScrollPane在添加更多文本时继续向下滚动。 怎么能实现这一目标?

听众和适配器有什么区别?

我试图区分监听器和适配器。 它们几乎是一样的但是在监听器中你必须实现接口中的所有方法,但是使用适配器你可以选择只实现你需要的方法,这样代码就是清理器并且更容易阅读? 我也被告知适配器只允许一个实现实例化,你无法实例化监听器,我不完全理解这一点。 有人可以解释哪一个更好用,哪些你可以做一个但你不能用另一个?

是否可以使用awt.Toolkit和java中的剪贴板知道剪贴板中复制的内容是否是mp3文件

我正在尝试编写一个在后台运行的代码,并监视复制.mp3 文件或包含 .mp3文件的文件夹的复制操作 { Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard(); if (cb.isDataFlavorAvailable(DataFlavor.javaFileListFlavor)) { try { String name = “”+cb.getData(DataFlavor.javaFileListFlavor); boolean found = false; if (name.toLowerCase().endsWith(“.mp3]”)) { System.out.println(“Is MP3”); found = true; } if (!found) { System.out.println(“Is not MP3”); } } catch(UnsupportedFlavorException ex) { ex.printStackTrace(); } catch(IOException ex) { ex.printStackTrace(); } } }

仅当附加文本时,JTextArea才会滚动到底部

我正在尝试创建一个JTextArea ,每次将文本追加到该文本区域时,它都会滚动到底部。 否则,用户应该能够滚动顶部并查看上一条消息。 我用过这段代码: JTextArea terminalText = new JTextArea(); JPanel terminal = new JPanel(); terminal.setLayout(new BorderLayout()); add(terminal); //Adds the terminal to mother JPanel //I added scrollbar to my JTextArea JScrollPane scroll = new JScrollPane(terminalText); terminal.add(scroll, BorderLayout.CENTER); scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); scroll.getVerticalScrollBar().addAdjustmentListener(new AdjustmentListener() { public void adjustmentValueChanged(AdjustmentEvent e) { e.getAdjustable().setValue(e.getAdjustable().getMaximum()); }}); 到目前为止,每当我使用terminalText.append将某些内容添加到terminalText时,此代码似乎会使我的文本区域滚动到terminalText文本区域的底部。 但是,用户无法使用滚动条滚动到顶部以查看上一条消息。 有没有办法来解决这个问题? 我应该使用DocumentListener来实现这一目标吗?

摆动计时器基本function

我是java平面设计的新手,如果可能的话,我希望你帮我一个简单的例子来帮助我理解JFrames,Timers,SwingControllers和所有这些东西的基本function。 您将如何实施以下案例: 我们有一个内置JPanel的JFrame。 执行开始时,JPanel是白色的,但我们希望它每两秒更改一次颜色: public class MiJFrame extends javax.swing.JFrame { public MiJFrame() { initComponents(); } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new MiJFrame().setVisible(true); jPanel1.setBackground(Color.yellow); jPanel1.setBackground(Color.RED); } }); } // Variables declaration – do not modify private static javax.swing.JPanel jPanel1; // End of variables declaration } 首先,我在setBackgroud()方法之间使用了线程对象的sleep方法,但它不起作用,因为它只显示最后一次更改。 你如何在这里使用Timer对象?

从用户获取颜色作为字符串并在接受枚举值的方法中使用它?

如何从用户获取颜色作为String并在接受Color enum值的方法中使用它? 想法是获取用户选择的颜色并将值传递(或以任何其他方式处理情境)到方法element.setBackground(java.awt.Color) 。