gpt4 book ai didi

java - 有了这个 Java 代码示例,我对内部类有了初步的了解吗?

转载 作者:太空宇宙 更新时间:2023-11-04 07:41:42 25 4
gpt4 key购买 nike

我正在设计一个倒计时器,发现了一个here 。这个效果很好……你输入秒数,它会自动为你倒计时。我修改代码以监听单选按钮选择以设置开始时间。单击“开始”按钮后,倒计时就会开始。我已经解决了布局问题,但在将 ButtonListener 放置在下面的代码中时遇到问题。

My UI

刚刚开始使用嵌套类,所以有些概念对我来说有点模糊。下面,如果我理解正确的话,ActionEvent是倒计时,它位于ActionListener类内部,它捕获按钮点击。倒计时取决于按钮单击,并且不能独立于按钮单击运行,并且 Listener 类中的所有变量也可用于 Event 类。

所以我想,如果我想为单选按钮添加 ListenerEvent,这些 Listener 将封装 Action,这将封装下面的代码。我已经在类声明中标记了我认为它们应该去的位置,但没有标记右括号。我需要做一些更仔细的分析来弄清楚它们是如何工作的。这是正确的做事方式吗?或者,还有更好的方法?如果我在 radiobuttion event 中将 startTime 变量声明为 public,它应该遵循其他嵌套类,对吧?

我对这一切的理解正确吗?或者我遗漏了一些重要的观点。这是我的第一个带有内部类的项目,所以请保持温柔。 :)

  public Test() {
super("Countdown timer");
final String startTime = "10"
text = new JTextField(startTime, 18);
start = new JButton("Start");
pr = new JRadioButton("30");
sr = new JRadioButton("15");
lr = new JRadioButton("5");
JPanel radioPanel = new JPanel(new GridLayout(0, 1));
radioPanel.add(pr);
radioPanel.add(sr);
radioPanel.add(lr);

//new button action listener here {
// new button action event here {

start.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent click) {
final long current = System.currentTimeMillis();
try {
final long limit = Integer.parseInt(text.getText().trim())* 1000; // X seconds
timer = new Timer(1000, new ActionListener() {
public void actionPerformed(ActionEvent event) {
long time = System.currentTimeMillis();
long passed = time - current;
long remaining = limit - passed;
if(remaining <= 0) {
text.setText(startTime);
timer.stop();
} else {
long seconds = remaining/1000;
long minutes = seconds/60;
long hours = minutes/60;
text.setText(String.format("%02d:%02d:%02d remaining", hours, minutes, seconds%60));
}
}
});
timer.start();
} catch(NumberFormatException nfe) {
// debug/report here
nfe.printStackTrace();
}
}});
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
panel.add(radioPanel);
panel.add(text);
panel.add(start, BorderLayout.CENTER );
add(panel);
}

最佳答案

您的代码没有定义任何典型意义上的内部(=嵌套)类。您正在使用Anonymous (inner) Classes 。您可能对这个问题感兴趣:

How are Anonymous (inner) classes used in Java?

有关真正的内部(=嵌套)类的信息,请尝试 relevant part Oracle 的 Java tutorials 。请注意,有两种内部类,静态和非静态,在以下问题中讨论:

Java inner class and static nested class

关于java - 有了这个 Java 代码示例,我对内部类有了初步的了解吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15978344/

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