gpt4 book ai didi

java - ActionEvent 没有明显原因停止工作?

转载 作者:行者123 更新时间:2023-11-30 04:23:04 24 4
gpt4 key购买 nike

最近我一直在玩 Java Swing,并尝试创建一个自定义的 Minecraft 服务器启动器。当我按下标有“属性”的按钮时,它应该更改为一个新面板并在某一时刻执行此操作。但是,由于某种原因,我看不到它不再起作用。有人可以帮忙吗?

package custommcserver;

import java.awt.GridLayout;
import java.awt.event.*;
import javax.swing.*;

class Window extends JFrame implements ActionListener , ItemListener
{
JPanel mainPnl = new JPanel(new GridLayout(2,1));
JPanel propPnl = new JPanel();
JButton startBtn = new JButton("Start");
JButton stopBtn = new JButton("Stop");
JButton propBtn = new JButton("Properties");

JCheckBox allowNether = new JCheckBox("Allow players to visit the Nether dimension");

public Window()
{
super("Custom Minecraft Server Launcher") ;
setSize(500,200) ;
setDefaultCloseOperation(EXIT_ON_CLOSE) ;
add(mainPnl) ;
mainPnl.add(startBtn);
mainPnl.add(stopBtn);
mainPnl.add(propBtn);
stopBtn.setEnabled(false);
startBtn.addActionListener(this);
stopBtn.addActionListener(this);
propBtn.addActionListener(this);
setVisible(true);
}

@Override
public void actionPerformed(ActionEvent event)
{

if (event.getSource() == stopBtn)
{
stopBtn.setEnabled(false);
startBtn.setEnabled(true);
}

if (event.getSource() == startBtn)
{
stopBtn.setEnabled(true);
startBtn.setEnabled(false);


if (event.getSource() == propBtn)
{
add(propPnl);
mainPnl.setVisible(false);
propPnl.setVisible(true);
propPnl.add(allowNether);
}

}
}

@Override
public void itemStateChanged(ItemEvent event) {
throw new UnsupportedOperationException("Not supported yet.");
}
}

最佳答案

2 个问题:

  1. 该行

    if (event.getSource() == propBtn) {

    if 语句中检查 startBtn,因此实际上没有对此按钮进行检查。将其移出 if 语句 block 。

  2. JFrame 上调用 revalidaterepaint

<小时/>

旁注:

  • CardLayout 提供用另一个组件替换组件的功能。阅读 How to Use CardLayout
  • 使用匿名 ActionListener 类实例来避免问题 #1。

关于java - ActionEvent 没有明显原因停止工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16510699/

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