我正在尝试学习Java,当然我没有得到任何东西。 为了简化起见,让我们假设我有两个类,即A类和B类。我想从A类调用B类,当我这样做时,我需要在A类内部的任何位置单击鼠标右键(右键)以获取B类中定义的弹出菜单。代码如下:
CLASS A代码:
package test1;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Toolkit;
import javax.swing.JFrame;
public class A {
JFrame frame;
Toolkit toolkit;
A () {
frame = new JFrame("A class");
setDimm(frame);
B b = new B();
frame.setVisible(true);
}
void setDimm(JFrame frame) {
this.frame=frame;
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
frame.getContentPane().setBackground(Color.gray);
frame.setSize(800, 600);
toolkit = frame.getToolkit();
Dimension size = toolkit.getScreenSize();
frame.setLocation((size.width-frame.getWidth())/2, (size.height-frame.getHeight())/2);
}
public static void main (String [] args) {
new A();
}
}
,CLASS B代码为:
package test1;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
public class B extends JFrame {
JPopupMenu menu;
JMenuItem addRow, removeRow;
B(){
menu = new JPopupMenu();
addRow = new JMenuItem("Add row");
removeRow = new JMenuItem("Remove row");
// Adding two action listneres just to test the clicking on the items
addRow.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.out.println("Add rows. Testing and it works");
}
});
removeRow.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
System.out.println("Remove rows. Testing and it works");
}
});
// end of action listeners
addMouseListener(new MouseAdapter(){
public void mouseReleased(MouseEvent e){
if (e.getButton() == e.BUTTON3) {
menu.show(e.getComponent(), e.getX(), e.getY());
}
}
});
menu.add(addRow);
menu.add(removeRow);
add(menu);
}
}
我在A类中添加了B类,但是它不起作用。 我尝试创建一个JPanel并将其添加到该列表中,但还是一无所获。 我尝试用JPanel或JFrame参数创建一个B实例,然后在类A内调用类B,然后将类A的JPanel或JFrame放入,但仍然没有。 我试图在类B内创建一个main方法,并且它可以创建右键单击,但是在类B内却不是我想要的。
我在这里做错了什么? 谢谢,祝一切顺利!