我正在尝试访问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());