原提問較簡略:「如何在 Java 程序中實現按鍵就可以是數字加1,按一下加一下」。需確認運行環境:
KeyListener 或 KeyEvent 處理器最直接。onKeyDown 或使用 View.OnKeyListener。import javax.swing.*;
import java.awt.event.*;
public class KeyCounter extends JFrame {
private int count = 0;
private JLabel label = new JLabel("Count: 0", SwingConstants.CENTER);
public KeyCounter() {
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(300, 200);
add(label);
// 讓 JFrame 可獲取焦點並接收鍵盤事件
setFocusable(true);
addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_SPACE) { // 按空格鍵加1
count++;
label.setText("Count: " + count);
}
}
});
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> new KeyCounter().setVisible(true));
}
}
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.input.KeyCode;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class FxKeyCounter extends Application {
private int count = 0;
private Label label = new Label("Count: 0");
@Override
public void start(Stage stage) {
StackPane root = new StackPane(label);
Scene scene = new Scene(root, 300, 200);
scene.setOnKeyPressed(e -> {
if (e.getCode() == KeyCode.SPACE) {
count++;
label.setText("Count: " + count);
}
});
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) { launch(args); }
}
純控制台下 System.in.read() 會阻塞。若需「按一下加一下」無需回車,需使用 JNI 或第三方庫(如 JLine、JNA 調用系統 API),初學者建議先從 GUI 入手。
setFocusable(true) / requestFocus())。初學者請先明確「是做控制台小工具,還是帶介面的桌面應用」,再查閱對應框架的鍵盤事件教程。上述兩個完整可運行範例可直接複製測試。