LibGdx开发简易菜单时TextButton传LabelStyle出现构造方法报错求助
错误原因
TextButton不存在接收(java.lang.String, com.badlogic.gdx.scenes.scene2d.ui.Label.LabelStyle)参数的构造函数,该控件要求传入的样式参数必须是TextButton.TextButtonStyle类型,你当前代码传入了Label控件专属的样式类,类型不匹配因此触发报错。
修复代码
你只需要调整样式类的声明和按钮初始化逻辑即可,修改后的完整方法如下:
public void newGame (){ Viewport viewport = new FitViewport(screenX, screenY); // 注意:如果调用这行时stage还未初始化,stage.getBatch()会报空指针,可直接改用new Stage(viewport)自动创建Batch stage = new Stage(viewport, stage.getBatch()); // 替换为TextButton专属的样式类 TextButton.TextButtonStyle buttonStyle = new TextButton.TextButtonStyle(); buttonStyle.font = new BitmapFont(); buttonStyle.fontColor = Color.WHITE; // 后续需要按钮点击状态效果时可追加以下配置: // buttonStyle.up = 按钮未选中状态的drawable // buttonStyle.down = 按钮按下状态的drawable Table table = new Table(); table.center(); table.setFillParent(true); TextButton startButton = new TextButton("Start", buttonStyle); TextButton quitButton = new TextButton("Quit", buttonStyle); // 你之前创建了Table但没有使用,把按钮加入Table才能实现自动居中排列 table.add(startButton).padBottom(30f).row(); table.add(quitButton); stage.addActor(table); Gdx.gl.glClearColor(0, 0, 0, 1); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); stage.draw(); }
额外注意事项
TextButtonStyle继承自LabelStyle,除了字体、字体颜色等基础属性外,还支持配置按钮不同交互状态的背景、按下时的字体颜色等专属属性,可根据需求自行扩展。- 不要直接将按钮单独加入Stage,否则按钮会默认停靠在屏幕左下角,加入Table后可自动实现排版对齐。
- 如果当前方法执行时
stage还未完成初始化,使用stage.getBatch()会触发空指针异常,可直接调用new Stage(viewport)构造方法,框架会自动创建对应的SpriteBatch实例。
内容的提问来源于stack exchange,提问作者awestin
相关产品推荐
相关产品推荐

