如何使我的自定义按钮使用鼠标()使ToString()使用



我正在尝试访问toString()以在鼠标词()事件中调用我的按钮,并且它不起作用。任何帮助都将受到赞赏。而不是在标签上打印名称 " x " y,而是打印出诸如base.emptspacequl.1@ee2694

之类的东西。
public class EmptySpace extends JButton {
    private int x; 
    private static int y;
    private static String name;
    public EmptySpace(String text, int x, int y){
        super(text);
        this.name = text;
        this.x = x;
        this.y = y;
        addMouseListener(new MouseAdapter(){
            @Override
            public void mouseEntered(MouseEvent e){
                Board.toStringText.setText(this.toString());
            }
        });
    }
    public String toString(){
        return name + " " + x + " " + y;
    }
    public class Board extends JFrame{
        private EmptySpace[][] buttons;
        private JPanel toolTips;
        private JPanel toStringPane;
        protected static JLabel toStringText;
        private static int lengthy;
        private static int lengthx;
        public Board(int x, int y){
            lengthy = y;
            lengthx = x;
        }
        public void printBoard(){
            int x;
            int y;
            JPanel pane = new JPanel();
            pane.setLayout(new GridLayout(lengthy, lengthx));
            buttons = new EmptySpace[lengthx][lengthy];
            for (int i = 0; i < lengthx*lengthy; i++) {
                if(i<lengthx){
                    x = i+1;
                }else x = i % lengthx+1;
                if(i<lengthx){
                    y=1;
                }else y = i/lengthx+1;
                String xString = Integer.toString(x);
                String yString = Methods.getChar(y);

                buttons[x-1][y-1] = new EmptySpace(xString+yString,x,y);
                buttons[x-1][y-1].setPreferredSize(new Dimension(25, 25));
                buttons[x-1][y-1].setBackground(Color.WHITE);
                buttons[x-1][y-1].setText("");
                buttons[x-1][y-1].setToolTipText(xString+yString);
                pane.add(buttons[x-1][y-1]);
            }
            System.out.println(buttons[1][9].toString());
            toolTips = new JPanel();
            toolTips.setPreferredSize(new Dimension(200,500));
            toolTips.setBackground(Color.WHITE);
            toStringPane = new JPanel();
            toStringPane.setBackground(Color.GRAY);
            toStringText = new JLabel();
            toStringText.setText("test");
            toStringText.setPreferredSize(new Dimension(175,50));
            toStringText.setForeground(Color.black);
            toolTips.add(toStringPane);
            toStringPane.add(toStringText);
            JFrame frame = new JFrame("Trenches");
            SpringLayout layout = new SpringLayout();
            frame.setLayout(layout);
            layout.putConstraint(SpringLayout.WEST, pane, (1280-lengthx*25)/2, SpringLayout.WEST, frame);
            layout.putConstraint(SpringLayout.NORTH, pane, (720-lengthy*30)/3, SpringLayout.NORTH, frame);
            layout.putConstraint(SpringLayout.WEST, toolTips, ((1280-lengthx*25)-200)/8, SpringLayout.WEST, frame);
            layout.putConstraint(SpringLayout.NORTH, toolTips, (720-lengthy*30)/3, SpringLayout.NORTH, frame);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.add(pane);
            frame.add(toolTips);
            frame.setSize(1280, 720);
            frame.setVisible(true);
        }
    }

Mouselistener不使用EmptySpace.toString方法 - mouseEntered实现中的呼叫toString是指Mouseadapter实例。要参考适当的JButton实例并调用其toString方法,您可以获取事件的来源:

Board.toStringText.setText(e.getSource().toString());

或参考外部类实例:

Board.toStringText.setText(EmptySpace.this.toString());

最新更新