gpt4 book ai didi

java - 是否可以将 Interger 签名分配给 JButton 对象?

转载 作者:行者123 更新时间:2023-12-02 04:41:52 25 4
gpt4 key购买 nike

我正在创建一个动态数量的按钮,因此我无法根据需要命名每个按钮,而且每个按钮内的文本必须为空,所以我也无法使用它。另一方面,我需要通过一个整数(甚至两个整数)来标识每个按钮

下面是我的特定类的代码:

    package view;

import java.awt.Color;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedList;

import javax.swing.JButton;
import javax.swing.JFrame;

import view.Nodes.Node;

public class AdjacencyMatrixWindow {

public JFrame frame;
int index;
LinkedList<Node> nodes;
int rowNumber=1;
Iterator<Node> nodeIter;
JButton btn;

public AdjacencyMatrixWindow(int index,LinkedList<Node> nodes) {
this.index=index;
this.nodes=nodes;
sortNodes();
for (Node node : nodes)
sortConnecteds(node.isConnectedToNodes);
nodeIter = nodes.iterator();
initialize();
apply();
}


private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 358, 297);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.getContentPane().setLayout(new GridLayout(nodes.size()+1, nodes.size()+1));


}

public void insertFirstRowLabels()
{
for (int i=0;i<=nodes.size();i++)
{
if (i==0)
{
Label lbl = new Label(" ");
lbl.setBackground(new Color(240,240,240));
frame.getContentPane().add(lbl);
}
else
{
Label lbl = new Label(String.valueOf(i));
frame.getContentPane().add(lbl);
}
}
}

public void insertRow(Node node)
{
for (int i=0;i<=nodes.size();i++)
{
if (i==0)
{
Label lbl = new Label(String.valueOf(rowNumber));
frame.getContentPane().add(lbl);
rowNumber++;
}
else
{
if (node.isConnectedToNodes.contains(node.getNodeByID(i)))
{
btn = new JButton("T");
frame.getContentPane().add(btn);
}
else
{
btn = new JButton(" ");
frame.getContentPane().add(btn);

}
}
}
}

public int columnNumbers()
{
if (nodeIter.hasNext())
return Integer.parseInt(nodeIter.next().getNodeID());
return -1;
}

public void apply()
{
insertFirstRowLabels();
for (int i=0;i<=nodes.size()-1;i++)
{
insertRow(nodes.get(columnNumbers()-1));
}
}

public void sortNodes()
{
Collections.sort(nodes, new Nodes.IDComperator());
}

public void sortConnecteds(LinkedList<Node> node)
{
Collections.sort(node, new Nodes.IDComperator());
}

Runnable selectAndDraw = new Runnable()
{
public void run()
{

btn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent b) {

}});

}
};
}

抱歉,代码写得不是很干净。

最佳答案

In the other hand i need to identify each button by an Integer (or even two integers)

您可以设置按钮的操作命令:

button.setActionCommand("1");

操作命令是一个字符串,用于标识单击哪个按钮,因此它可以是一个包含两个数字的字符串(您需要解析该字符串以获取这两个数字)。

然后在 ActionListener 中,您可以从 ActionEvent 访问此数据:

String actionCommand = event.getActionCommand();

关于java - 是否可以将 Interger 签名分配给 JButton 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30085698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com