【发布时间】:2016-03-02 00:14:32
【问题描述】:
我有一个 JFrame,里面有一个按钮。当用户单击框架上的任意位置时,我想检查按钮是否在它之前被按下或单击。
例如,如果用户单击框架而不先单击按钮,它应该说“按钮未按下”,但如果用户单击按钮然后按下框架上的任何位置,那么它应该说“按钮被按下”。
我的代码:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Test1
{
public static void main(String[] args)
{
JFrame frame = new JFrame();
final int FRAME_WIDTH = 400;
final int FRAME_HEIGHT = 400;
frame.setSize(FRAME_WIDTH, FRAME_HEIGHT);
frame.setTitle("Test 1");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
JPanel panel = new JPanel();
frame.add(panel,BorderLayout.NORTH);
final JButton btnRectangle = new JButton("Rectangle");
panel.add(btnRectangle);
class MousePressListener implements MouseListener
{
public void mousePressed(MouseEvent event)
{
int x = event.getX() ;
int y = event.getY() ;
System.out.println("you have press the mouse at X : " + x + " and Y : " + y);
if(btnRectangle.getModel().isSelected())
System.out.println("the button is pressed");
else
System.out.println("the button is NOT pressed");
}
public void mouseReleased(MouseEvent event){}
public void mouseClicked(MouseEvent event){}
public void mouseEntered(MouseEvent event){}
public void mouseExited(MouseEvent event){}
}
MousePressListener mListener = new MousePressListener();
frame.addMouseListener(mListener);
frame.setVisible(true);
}
}
如您所见,我尝试检查是否在 JFrame MousePressed 侦听器中单击了按钮。但没有成功。我也看问题:
How can I check that JButton is pressed? If the isEnable() is not work?
但似乎无法到达任何地方,请帮助
【问题讨论】:
-
我建议将
ActionListener添加到JButton,它应该优先于帧级侦听器。这样你就有了你的自定义JFrameMouseListener和一个单独的监听器来处理JButton逻辑。
标签: java