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