如何将数组中的logX、logY等参数转化为Logs类实例
解决Logs对象创建的问题
嗨,我来帮你搞定这个问题!从你给出的代码来看,当前的Logs类只有私有成员变量,但没有对外提供初始化这些变量的途径——这就是你没法用logX、logY这类参数创建对象的核心原因。咱们一步步来解决:
第一步:给Logs类添加构造方法
因为X、Y、width、height都是私有变量,外部代码没法直接修改它们,所以我们需要给Logs类加一个构造器,在创建对象时把参数传递进去初始化这些变量。如果之后要显示窗口,也可以在构造器里做一些基础配置:
package Frogger; import javax.swing.JFrame; public class Logs extends JFrame { private int X; private int Y; private int width; private int height; // 添加构造器,接收初始化参数 public Logs(int x, int y, int logWidth, int logHeight) { this.X = x; this.Y = y; this.width = logWidth; this.height = logHeight; // 可选:如果要显示窗口,这里可以加基础配置 setSize(logWidth, logHeight); setLocation(x, y); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 可以设置窗口标题、背景色等其他属性 } // 如果你之后需要修改参数,还可以加setter方法,比如: public void setX(int x) { this.X = x; setLocation(x, this.Y); // 同步更新窗口位置 } }
第二步:从参数数组创建Logs对象
假设你的参数数组是按每个Log的X、Y、width、height依次排列的格式存储的(比如[log1X, log1Y, log1Width, log1Height, log2X, log2Y, ...]),我们可以通过循环遍历数组,每4个元素创建一个Logs对象:
import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { // 示例参数数组:两个Log的参数 int[] logParams = {100, 200, 300, 50, 150, 250, 300, 50}; List<Logs> logObjects = new ArrayList<>(); // 遍历数组,每4个元素创建一个Logs对象 for (int i = 0; i < logParams.length; i += 4) { // 防止数组越界:如果剩余元素不足4个,停止循环 if (i + 3 >= logParams.length) { break; } int x = logParams[i]; int y = logParams[i + 1]; int width = logParams[i + 2]; int height = logParams[i + 3]; // 创建Logs对象并加入列表 Logs newLog = new Logs(x, y, width, height); logObjects.add(newLog); // 如果要立即显示这个Log窗口,调用: // newLog.setVisible(true); } // 现在logObjects里就是你需要的Logs对象集合啦 } }
额外说明
- 如果你的参数数组格式不是每4个元素一组,只需要调整循环的逻辑,按你的参数排列规则提取对应的X、Y、width、height即可。
- 因为
Logs继承了JFrame,创建对象后调用setVisible(true)就能在屏幕上显示窗口了,你还可以在构造器里添加更多UI配置(比如背景色、边框等)让它更符合需求。
内容的提问来源于stack exchange,提问作者Fiachra Kelly
相关产品推荐
相关产品推荐

