Javaに関する質問です。
https://www.youtube.com/watch?v=K7EZ3q-w5mE&t=0s
上記の動画通りにコードを書き写したのですが
VSCode上で実行すると画面は表示されるのですが、十字キーやスペースキーの入力を受けつけてくれませんでした。
eclipseでは自動でimportされる機能があるらしいのですが、VSCodeには無い為、自分で必要なクラス等をインポートしました。
作成したTitilePanel.javaを貼りますのでどこが間違っているのか教えていただけると助かります。
Java
1package sample02_2_ScreenChange02; 2 3import java.awt.Color; 4import java.awt.Font; 5import java.awt.event.KeyEvent; 6import java.awt.event.KeyListener; 7 8import javax.swing.JLabel; 9import javax.swing.JPanel; 10import javax.swing.border.Border; 11import javax.swing.BorderFactory; 12import javax.swing.SwingConstants; 13 14public class TitlePanel extends JPanel { 15 private static final long serialVersionUID = 1L; 16 //コンポーネント 17 JLabel title; 18 JLabel start; 19 JLabel exit; 20 JLabel select; 21 JLabel message; 22 Menu checkMenu = Menu.START; 23 Border border = BorderFactory.createLineBorder(Color.BLACK,2); //いらなければ消す 24 MyKeyListener myKeyListener; 25 26 public enum Menu { 27 START, 28 EXIT, 29 } 30 31 //コンストラクタ 32 TitlePanel() { 33 this.setLayout(null); //レイアウトの設定 34 this.setBackground(Color.cyan); //背景の色 35 } 36 // コンストラクタが呼ばれた後手動で呼び出す 37 public void prepareComponents() { 38 //タイトルロゴ 39 title= new JLabel(); 40 // ImageIcon titleLogo = new ImageIcon(getClass().getClassLoader().getResource("title.png")); 41 //600×300の画像を想定 42 //title.setIcon(titleLogo); 43 title.setHorizontalAlignment(SwingConstants.CENTER); 44 title.setVerticalAlignment(SwingConstants.BOTTOM); 45 title.setText("Created by 【YOUR NAME】"); 46 title.setHorizontalTextPosition(SwingConstants.CENTER); 47 title.setVerticalTextPosition(SwingConstants.BOTTOM); 48 title.setBounds(90,0,600,350); 49 title.setBorder(border); //縁取り(いらなければ消す) 50 51 start = new JLabel(); 52 start.setText("START"); 53 start.setFont(new Font("MV boli",Font.BOLD,40)); 54 start.setHorizontalTextPosition(JLabel.CENTER); 55 start.setVerticalTextPosition(JLabel.BOTTOM); 56 start.setBounds(330,400,150,40); 57 start.setBorder(border); //縁取り(いらなければ消す) 58 59 exit = new JLabel(); 60 exit.setText("EXIT"); 61 exit.setFont(new Font("MV boli",Font.BOLD,40)); 62 exit.setHorizontalTextPosition(JLabel.CENTER); 63 exit.setVerticalTextPosition(JLabel.BOTTOM); 64 exit.setBounds(350,450,110,40); 65 exit.setBorder(border); //縁取り(いらなければ消す) 66 67 select = new JLabel(); 68 // ImageIcon icon02 = new ImageIcon(getClass().getClassLoader().getResource("nikukyu_shirocha_small.png")); 69 // select.setIcon(Icon02); 70 select.setBackground(Color.blue); 71 select.setOpaque(true); 72 select.setBounds(280,400,40,40); 73 select.setBorder(border); //縁取り(いらなければ消す) 74 75 //説明 76 message = new JLabel(); 77 message.setHorizontalAlignment(SwingConstants.CENTER); 78 message.setText("選択:↑,↓ 決定:SPACE"); 79 message.setVerticalTextPosition(JLabel.CENTER); 80 message.setHorizontalTextPosition(JLabel.CENTER); 81 message.setBounds(249,517,300,30); 82 message.setBorder(border); //縁取り(いらなければ消す) 83 84 //配置 85 this.setLayout(null); 86 this.add(title); 87 this.add(start); 88 this.add(exit); 89 this.add(select); 90 this.add(message); 91 92 //リスナーの設定 93 myKeyListener = new MyKeyListener(this); 94 95 } 96 97 private class MyKeyListener implements KeyListener { 98 //貼り付け先を保持 99 TitlePanel panel; 100 101 //コンストラクタ 102 MyKeyListener(TitlePanel p) { 103 super(); 104 panel = p; 105 panel.addKeyListener(this); 106 } 107 108 @Override 109 public void keyTyped(KeyEvent e) { 110 // do nothing 111 } 112 113 @Override 114 public void keyReleased(KeyEvent e) { 115 // do nothing 116 } 117 118 @Override 119 public void keyPressed(KeyEvent e) { 120 switch(e.getKeyCode()) { 121 case KeyEvent.VK_DOWN: //下を押した場合 122 if(checkMenu == Menu.START) { 123 select.setLocation(select.getX(),select.getY()+50); 124 checkMenu = Menu.EXIT; 125 } 126 break; 127 128 case KeyEvent.VK_UP: //上を押した場合 129 if(checkMenu == Menu.EXIT) { 130 select.setLocation(select.getX(),select.getY()-50); 131 checkMenu = Menu.START; 132 } 133 break; 134 135 case KeyEvent.VK_SPACE: //スペースキーを押した場合 136 if(checkMenu == Menu.START) { 137 //開始 138 Main.mainWindow.setFrontScreenAndFocus(ScreenMode.GAME); 139 } 140 else if(checkMenu == Menu.EXIT) { 141 //終了 142 System.exit(0); 143 } 144 break; 145 } 146 } 147 } 148}
ソースコードの書き方を教えてくださった方がいたため、修正しました。
ありがとうございました。

回答1件
あなたの回答
tips
プレビュー