Я пытаюсь изучать Java, и, конечно же, я ничего не понимаю.
Для упрощения предположим, что у меня есть два класса, класс A и класс B. Я хочу вызвать класс B из класса A, и когда я это делаю, мне нужно, чтобы в любом месте я щелкал правой кнопкой мыши (правой кнопкой) внутри класса A, чтобы получить всплывающее меню, как определено в классе B. Код следующий:
КЛАСС 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();
}
}
и код КЛАССА В:
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);
}
}
Я добавил класс B внутри класса A, но он не работает.
Я попытался создать JPanel и добавить его к этому, все еще ничего.
Я попытался создать экземпляр B с параметром JPanel или JFrame, а затем внутри класса A, вызвав класс B и поместив JPanel или JFrame из класса A, но все еще ничего.
Я попытался создать метод main внутри класса B, и он работает для создания щелчка правой кнопкой мыши, но внутри класса B, и это не то место, где я хочу.
Что я здесь не так делаю?
Спасибо и всего наилучшего!