Tag: 事件处理

SWT:获得系统设备更改通知(USB设备连接/断开连接)

我正在编写一个SWT应用程序,它需要放在系统托盘中,并在用户连接某个USB设备时自动弹出(该应用程序用作其控制面板)。 在本机环境中执行此操作的方法(在这种情况下为win32,但我最终应该与平台无关)是监听WM_DEVICECHANGE事件,然后检查我的设备是否已断开连接。 谷歌搜索主题,似乎SWT实际上并没有处理这种类型的事件。 有没有人知道如何实现这一目标? 我的后备解决方案是每隔n秒对USB端口进行采样,寻找设备,但就我而言,这是一个禁止解决的问题…… 谢谢和欢呼 夏嘉曦

用于订阅的Java侦听器设计模式

我正在尝试设计一个与c#delegates概念相似的Java系统。 这是我希望实现的基本function: public class mainform { public delegate onProcessCompleted //…… processInformation() { onProcessCompleted(this); } //…… } //PLUGIN public class PluginA { public PluginA() { //somehow subscribe to mainforms onProcessingCompleted with callback myCallback() } public void myCallback(object sender) { } } 我通读了这个网站: http : //www.javaworld.com/javaqa/2000-08/01-qa-0804-events.html?page = 1 他们参考手动实现整个“订阅列表”。 但是代码不是一个完整的例子,而且我已经习惯了c#,因为我无法理解如何在java中完成它。 有没有人能够看到我能看到的工作考试? 谢谢 斯蒂芬妮

如何设置Java默认按钮以对ENTER键_released_作出反应?

在我的应用程序中,我使用默认按钮。 我希望它在释放 ENTER键时做出反应。 按下 ENTER键时不显示。 我从按钮的InputMap中删除了KeyStroke 。 但它对我不起作用。 我该怎么做? import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; public class ButtonTest { public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { buildFrame(); } }); } private static void buildFrame() { JFrame f = new JFrame(“Test”); f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); JButton button = new JButton(new AbstractAction(“Button”) { […]

getSource()和getActionCommand()

什么是getSource? 它返回了什么? 什么是getActionCommand()以及它返回什么? 我对这两个人之间的困惑可以让任何人给我或区别对待我吗? 在UI中使用getSource和getActionCommand()有什么用? 特别是TextField还是JTextField?

JTextField输入无法更新MVC中TextView的输出

我正在研究高级Java并试图编写一个利用MVC设计模式的程序。 程序需要绘制一个字符串,该字符串可以由用户在JTextField的输入进行修改。 用户还可以分别通过JComboBox和JSpinner调整文本的颜色和字体大小。 这是我到目前为止: public class MVCDemo extends JApplet { private JButton jBtnController = new JButton(“Show Controller”); private JButton jBtnView = new JButton(“Show View”); private TextModel model = new TextModel(); //constructor public MVCDemo(){ //set layout and add buttons setLayout(new FlowLayout()); add(jBtnController); add(jBtnView); jBtnController.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e){ JFrame frame = new JFrame(“Controllor”); TextController […]

单击按钮时,JXTable不会刷新

我有一个JFrame ,它包含一个JXTable (来自SwingX依赖)和一个JButton 。 一旦我点击JButton,表格每次都会更新。 在我的情况下,它只在第一次更新。 其他事件也会在按钮单击时触发(每次单击按钮时都会发生这种情况)。 添加新行时,不会刷新表。 我正在使用DeafultTableModel并尝试(显式触发)所有建议的方法,如repaint , fireTableDataChanged等。 有人可以帮忙吗? EDIT-1(已添加代码段): – // the actions will take place when VALIDATE button is clicked validateButton.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent ae) { if (evCheckbox1.isSelected() || !list.isSelectionEmpty()) { try { // store the validation errors for future use List<List> validationErrors = validateSheet(Driver.this.fileLocation, list .getSelectedValuesList(), […]

有没有更好的方法来设置JPanel图形的初始位置?)

在Liang的Java编程简介(第7版)的第15章中,他介绍了一个在JPanel上制作(2-D)球的程序,并在点击放大/缩小按钮时将其放大。 我修改了程序,以便1)放大/缩小球,如果用户点击/选项+点击,2)允许你通过按下按钮选择球的颜色,3)允许你移动用鼠标拖动它。 最后一次修改是给我带来麻烦的一段时间,因为我想在开始时将球放在中心,但是然后允许用户用鼠标移动球。 我想出的解决方案是让paintComponent方法仅在第一次绘制时相对于getWidth()和getHeight()设置球的x坐标和y坐标。 为此,我向BallCanvas类添加了一个paintCount变量,并创建了一个if语句,以便它只在第一次执行时执行。 当我最初试图弄清楚如何做到这一点时,我看到了其他解决方案,比如这里给出的解决方案: 为什么我不能访问我的面板的getWidth()和getHeight()函数? ,但我发现我的解决方案更简单。 所以问题是:我认为编码风格是不是很糟糕? 专业程序员会嘲笑这个解决方案吗? 还是可以吗? 更重要的是,有没有更好(但也相对简单)的方法来做这个不涉及设置计数器? 以下是相关的代码: BallCanvas的开头: public static class BallCanvas extends JPanel { private int radius = 20; private Color color = Color.BLACK; private int ballX; private int ballY; private int paintCount = 0; … move方法(响应MouseDragged事件): public void move(MouseEvent e){ ballX = e.getX() – radius; ballY = […]

停止Swing中事件的默认行为

我在通过单击发送按钮调用的方法中有以下代码,或者在一段代码中按消息文本字段中的Enter键。 // In class ChatWindow private void messageTextAreaKeyPressed(java.awt.event.KeyEvent evt) { // Event handler created by Netbeans GUI designer to call this method. if(evt.getKeyCode() == java.awt.event.KeyEvent.VK_ENTER) { sendMessage(); } } public void sendMessage() { String currentMessage = messageTextArea.getText(); addMessage(“You”, currentMessage); app.sendMessage(currentMessage, 1); messageTextArea.setText(“”); } 最后一段代码使文本区域空白。 但是,在按Enter按钮发送消息后,文本框包含换行符,而不是为空。 我的猜测是,在我的事件处理程序运行之后,然后添加了换行符。 如何停止添加换行符?

没有事件发生

这是我的代码。我正在尝试使用箭头键移动球。 当我运行以上程序时,不显示球 ( 如果我将坐标更改为类似0,30球), 并且事件未被触发,则球既不移动也不跳跃 What is the problem ? import java.awt.*; import java.awt.event.*; import javax.swing.*; class ControlledBall extends JPanel{ int diameter = 30; int height = 30; int x_Pos = 0; int y_Pos; ControlledBall() { JFrame fr = new JFrame(“Controlled Ball”); this.setBackground(Color.black); fr.add(this); fr.setVisible(true); fr.setSize(600,400); y_Pos = this.getHeight() – diameter ; register(); repaint(); } […]

如何在java swing应用程序中保留和删除多个图形对象?

我有一个图像,我在其上使用预定义的位置来创建带有颜色的图形对象。 点击鼠标,我尝试用颜色创建一些椭圆形。 实际上我无法实现这一目标。 因为,当我点击预定位置时,我可以在其上创建一个椭圆形但是当我点击另一个预定义位置时,第一个椭圆形已经消失了。 通过点击两次可以去除椭圆形。 看看这个, public class PrintDialog extends javax.swing.JDialog{ private int count = 0; private int count_1 = 0; /** * Creates new form PrintFeetDialog */ public PrintDialog(java.awt.Frame parent, boolean modal) { super(parent, modal); initComponents(); ImagePanel panel = new ImagePanel(“Areas.jpg”); this.getContentPane().add(panel); this.setResizable(false); this.setLocationRelativeTo(panel); this.pack(); } private void formMouseClicked(java.awt.event.MouseEvent evt) { // TODO add […]