Java 如何创建一个可以存储大量信息并具有鼠标侦听器的新按钮?

Java 如何创建一个可以存储大量信息并具有鼠标侦听器的新按钮?,java,swing,Java,Swing,所以我在gui中进入了一些新领域,我有一个gui可以使用它在一个面板中打印一个按钮网格,该面板以一个框架为中心。但我真的需要这些按钮来存储大量数据(我想我自己可以处理),并且有鼠标侦听器(鼠标插入很重要)。因为我从来没有做过这样的事情,所以我很难让一个好的类运行(最终我会有一个按钮类型的层次结构。默认/父按钮保存一个位置,x和y,子按钮将保存不同的统计信息)。我不知道如何启动button类,也不知道如何使用override Mouse Listener,希望您能提供帮助 以下是我已经得到的: p

所以我在gui中进入了一些新领域,我有一个gui可以使用它在一个面板中打印一个按钮网格,该面板以一个框架为中心。但我真的需要这些按钮来存储大量数据(我想我自己可以处理),并且有鼠标侦听器(鼠标插入很重要)。因为我从来没有做过这样的事情,所以我很难让一个好的类运行(最终我会有一个按钮类型的层次结构。默认/父按钮保存一个位置,x和y,子按钮将保存不同的统计信息)。我不知道如何启动button类,也不知道如何使用override Mouse Listener,希望您能提供帮助

以下是我已经得到的:

public class Board extends JFrame{

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));
    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);

      JButton[][] buttons = new JButton[lengthx][lengthy];

      buttons[x-1][y-1] = new JButton(xString+yString);
      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]);
    }
    JPanel toolTips = new JPanel();
    toolTips.setPreferredSize(new Dimension(200,500));
    toolTips.setBackground(Color.WHITE);

      JFrame frame = new JFrame("Oval Sample");
      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);

}
public class Methods {
//max 52
public static String getChar(int i) {
    return i > 0 && i < 27 ? String.valueOf((char)(i + 96)) : (i > 26 && i < 53 ? String.valueOf((char)(i+64-26)): null );
}
公共类板扩展JFrame{
私人静态文件;
私有静态int lengthx;
公共董事会(内部x、内部y){
长=y;
长度x=x;
}
公共印制板(){
int x;
int-y;
JPanel窗格=新的JPanel();
窗格.setLayout(新的GridLayout(冗长、长x));
对于(int i=0;i

}

不确定您想要做什么,但这里有一个自定义按钮类的示例

public class MyButton extends JButton{

  public final int x, int y;

  public MyButton(String text, int x, int y){
    super(text);

    this.x = x;
    this.y = y;

    addMouseListener(new MouseAdapter(){
      @Override
      public void mousePressed(MouseEvent e){
        System.out.println("The mouse was pressed!");
      }
    });
  }

}

“用于存储大量数据的按钮”?我很困惑。为什么/如何在按钮中存储数据?层次结构中的第一个按钮将有x和y线。一个分支将存储另一个字符串,比如4个整数。然后这些整数与等式中其他按钮的整数交互。我想在执行Mouseenter时将所有这些信息打印到工具提示面板中。同样,当我勾选一个按钮,信息在工具提示面板中,当我将鼠标悬停在另一个按钮上时,方程工作,工具提示面板将打印两个按钮放在一起的结果。然后单击第二个按钮将实际执行方程。(工具提示面板是将发生的事情的预览)为什么不
addActionListener()
?OP特别询问如何添加鼠标侦听器。提问者也承认自己是新手。为什么不推荐
addActionListener()
而不是
addMouseListener()
?我想使用MouseEnter,但我不熟悉如何使用ActionListener。重写
MouseEnter())
MouseAdapter
中的
。同时更新您的问题以澄清此要求。