从另一个班级上课

时间:2019-07-01 19:05:44

标签: java swing class

我正在尝试学习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内却不是我想要的。

我在这里做错了什么? 谢谢,祝一切顺利!

0 个答案:

没有答案