62,614
社区成员
发帖
与我相关
我的任务
分享
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.JWindow;
public class Main {
public Main() {
}
static public class PopupListener extends MouseAdapter {
JPopupMenu menu;
public PopupListener(JPopupMenu menu) {
this.menu = menu;
}
public void mousePressed(MouseEvent e) {
showPopup(e);
}
public void mouseReleased(MouseEvent e) {
showPopup(e);
}
private void showPopup(MouseEvent e) {
if (e.isPopupTrigger()) {
menu.show(e.getComponent(), e.getX(), e.getY());
System.out.println("Showing menu at "
+ menu.getLocationOnScreen() + " isVisible: "
+ menu.isVisible() + " isValid: " + menu.isValid());
}
}
}
public static void main(String[] args) {
JWindow window = new JWindow();
window.setBounds(10, 10, 100, 100);
JPopupMenu popupMenu = new JPopupMenu();
JMenuItem quit = new JMenuItem("Quit");
quit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
popupMenu.add(quit);
window.addMouseListener(new PopupListener(popupMenu));
window.setFocusable(true);
window.validate();
window.setVisible(true);
}
}
package test;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.JTextField;
import javax.swing.JWindow;
public class Main {
public Main() {
}
static public class PopupListener extends MouseAdapter {
JPopupMenu menu;
public PopupListener(JPopupMenu menu) {
this.menu = menu;
}
public void mousePressed(MouseEvent e) {
showPopup(e);
}
public void mouseReleased(MouseEvent e) {
showPopup(e);
}
private void showPopup(MouseEvent e) {
if (e.isPopupTrigger()) {
menu.show(e.getComponent(), e.getX(), e.getY());
System.out.println("Showing menu at "
+ menu.getLocationOnScreen() + " isVisible: "
+ menu.isVisible() + " isValid: " + menu.isValid());
}
}
}
public static void main(String[] args) {
final JFrame f = new JFrame();
JButton btn = new JButton("show window");
f.getContentPane().add(btn, BorderLayout.SOUTH);
f.getContentPane().add(new JTextField());
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 这里尝试一下如果换为new JWindow会发生什么
JWindow window = new JWindow();
// window.setBounds(10, 10, 100, 100);
window.getContentPane().add(new JTextField(30),
BorderLayout.NORTH);
window.getContentPane().setBackground(Color.cyan);
window.setSize(300, 100);
window.setLocationRelativeTo(null);
final JPopupMenu popupMenu = new JPopupMenu();
JMenuItem quit = new JMenuItem("Quit");
quit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
popupMenu.add(quit);
window.addMouseListener(new PopupListener(popupMenu));
window.addWindowFocusListener(new WindowAdapter() {
@Override
public void windowGainedFocus(WindowEvent e) {
// TODO Auto-generated method stub
super.windowGainedFocus(e);
System.out.println("gain");
}
@Override
public void windowLostFocus(WindowEvent e) {
// TODO Auto-generated method stub
super.windowLostFocus(e);
System.out.println("lose");
}
});
window.setFocusable(true);
window.validate();
window.setVisible(true);
}
});
f.setSize(800, 600);
f.setLocationRelativeTo(null);
f.setVisible(true);
}
}
: