Вызов одного класса из другого - PullRequest
0 голосов
/ 01 июля 2019

Я пытаюсь изучать 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, и это не то место, где я хочу.

Что я здесь не так делаю? Спасибо и всего наилучшего!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...