通常,我要为每个城市创建一个按钮网格,然后单击每个按钮时,让文本框显示有关城市的信息,例如资源,人口等。
我的代码如下。我希望布局保持不变,因为城市规模在3x2的小到6x4的中到12x8的大按钮网格之间。感谢您提供的任何帮助。
public class Map{
JFrame frame=new JFrame(); //creates frame
JButton[][] grid; //names the grid of button
public Map(int width, int length){ //constructor
frame.setLayout(new GridLayout(width+1,length)); //set layout
grid=new JButton[width][length]; //allocate the size of grid
for(int y=0; y<length; y++){
for(int x=0; x<width; x++){
grid[x][y]=new JButton("("+x+","+y+")"); //creates new button
grid[x][y].addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
System.out.print("This");
}});
frame.add(grid[x][y]); //adds button to grid
}
}
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500, 500); //sets appropriate size for frame
frame.setVisible(true); //makes frame visible
}
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
为了实现您的需求,您可以通过动态创建JButton并为每个按钮添加事件监听器来显示对应城市的信息。以下是一个基于您代码框架的示例,展示了如何根据城市信息填充按钮网格,并在单击按钮时显示相关信息:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Map {
JFrame frame = new JFrame(); // 创建框架
JButton[][] grid; // 命名按钮网格
String[][] cityData; // 存储城市信息,例如:{{"城市名1", "资源1", "人口1"}, {"城市名2", "资源2", "人口2"}, ...}
public Map(int width, int length) { // 构造函数
frame.setLayout(new GridLayout(width, length)); // 设置布局
grid = new JButton[width][length]; // 分配网格大小
cityData = new String[width][length]; // 初始化城市数据数组,这里应根据实际数据填充
// 示例数据填充,实际应用中应从数据库或文件读取
for (int y = 0; y < length; y++) {
for (int x = 0; x < width; x++) {
cityData[x][y] = "城市 " + (x + 1) + ", 区域 " + (y + 1); // 示例文本
grid[x][y] = new JButton(cityData[x][y]); // 创建按钮并设置文本
frame.add(grid[x][y]); // 将按钮添加到框架
// 添加按钮点击事件监听器
grid[x][y].addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JButton clickedButton = (JButton) e.getSource();
JOptionPane.showMessageDialog(frame, "城市信息: " + clickedButton.getText());
// 这里可以进一步处理,比如弹出详细信息对话框等
}
});
}
}
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设置默认关闭操作
frame.pack(); // 自动调整框架大小以适应组件
frame.setVisible(true); // 显示框架
}
public static void main(String[] args) {
// 示例:创建一个3x2的城市按钮网格
Map map = new Map(3, 2);
}
}
这段代码首先定义了一个Map
类,其中包含了一个用于存储城市信息的二维字符串数组cityData
。在构造函数中,它会根据指定的宽度和长度创建按钮网格,并为每个按钮分配一个代表城市信息的文本。同时,为每个按钮添加了事件监听器,当按钮被点击时,会弹出一个消息框显示该按钮(即城市)的文本信息。
请注意,这里的cityData
数组仅作为示例使用,实际应用中您可能需要从数据库或其他数据源获取这些信息。此外,根据您的具体需求,您可能还需要对UI进行进一步美化或功能扩展。