質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

0回答

759閲覧

AWT ボタンが実行中に反応しなくなる

退会済みユーザー

退会済みユーザー

総合スコア0

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2021/07/15 13:57

編集2021/07/16 16:16

前提・実現したいこと

SQLで郵便番号のデータベース(No.,郵便番号,県,市,地区,県の読み,市の読み,地区の読み)を用いて距離を出すプログラムを作っている最中です。
とりあえず住所を三つ表示させたいです。

発生している問題・エラーメッセージ

距離を出す以前に、三地点の情報を出すため検索機能を作っているのですが、一個目を表示した後、ボタンやテキストフィールドをクリックしても反応がされません。

該当のソースコード

Java

html

1コードの表示(ブロック) 2public class postNumberGUI extends Frame implements ActionListener, ItemListener { 3 java.awt.List codeList; 4 int n=3; 5 int a=0; 6 int x=0; 7 TextField[] codeField = new TextField[n]; 8 TextField[] numberField = new TextField[n];・・・ 9 TextField serchField; 10 11 Button displayButton,・・・ 12 Panel panel, ・・・ 13 //Panel[] dataPanel; 14 String displayCommand = "Display", 15 addCommand = "Add", 16 serchCommand = "Serch", 17 doneCommand = "Done"; 18// updateCommand = "Update",addCommand = "Add", deleteCommand = "Delete"; // ボタンのコマンド文字列 19 20 String driverClassName = "org.postgresql.Driver"; //SQL 21 String url = "jdbc:postgresql://localhost/test"; 22 String user = "dbpuser"; 23 String password = "hogehoge"; 24 Connection connection; 25 ResultSet resultSet; 26 27 28 //郵便番号で検索 29 30PreparedStatement prepStmt; // SELECT name 用 (リスト表示) 31PreparedStatement prepStmt_S; // SELECT用 32 33String selectStr = "SELECT code FROM postalcode"; 34String strPrepSQL_S = "SELECT * FROM postalcode WHERE code = ?"; 35 36 postNumberGUI(){ 37 setSize(1200,1000); 38 setTitle("postNumberGUI"); 39 setLayout(new GridLayout(1,2)); 40 System.out.println(a); 41 42 panel = new Panel(); 43 panel.setLayout(new BorderLayout()); 44 add(panel); 45 46 leftPanel = new Panel(); 47 leftPanel.setLayout(new GridLayout()); 48 add(leftPanel); 49 50 codeList = new java.awt.List(10); 51 codeList.addItemListener(this); 52 leftPanel.add(codeList); 53 54 55 rightPanel = new Panel(); 56 rightPanel.setLayout(new GridLayout(2,4)); 57 add(rightPanel); 58 59 dataPanel1 = new Panel(); 60 dataPanel1.setLayout(new GridLayout(8,2)); 61 rightPanel.add(dataPanel1); 62 63 dataPanel2 = new Panel(); 64 dataPanel2.setLayout(new GridLayout(8,2)); 65 rightPanel.add(dataPanel2); 66 67 dataPanel3 = new Panel(); 68 dataPanel3.setLayout(new GridLayout(8,2)); 69 rightPanel.add(dataPanel3); 70 71 serchPanel = new Panel(); 72 serchPanel.setLayout(new BorderLayout()); 73 //rightPanel.add(serchPanel); 74 75 buttonPanel = new Panel(); 76 buttonPanel.setLayout(new GridLayout(2,2)); 77 rightPanel.add(buttonPanel); 78 79 panel.add(leftPanel, BorderLayout.WEST); 80 panel.add(rightPanel, BorderLayout.CENTER); 81 82 83 for(int i=0;i<n;i++) { 84 if(i==0){ 85 dataPanel1.add(new Label("郵便番号")); 86 codeField[i] = new TextField(24); 87 dataPanel1.add(codeField[i]); 88 89 dataPanel1.add(new Label("Number")); 90 numberField[i] = new TextField(24); 91 dataPanel1.add(numberField[i]);・・・ 92 }else if(i==1){ 93 dataPanel2.add(new Label("郵便番号")); 94 codeField[i] = new TextField(24); 95 dataPanel2.add(codeField[i]);・・・ 96 }else if(i==2){ 97 dataPanel3.add(new Label("郵便番号")); 98 codeField[i] = new TextField(24); 99 dataPanel3.add(codeField[i]);・・・ 100 } 101 } 102 serchPanel.add(new Label("検索")); 103 serchField = new TextField(24); 104 serchPanel.add(serchField, BorderLayout.CENTER); 105 106 doneButton = new Button(doneCommand); 107 doneButton.addActionListener(this); 108 buttonPanel.add(doneButton); 109 110 displayButton = new Button(displayCommand); 111 displayButton.addActionListener(this); 112 buttonPanel.add(displayButton); 113 114 addButton = new Button(addCommand); 115 addButton.addActionListener(this); 116 buttonPanel.add(addButton); 117 118 serchButton = new Button(serchCommand); 119 serchButton.addActionListener(this); 120 serchPanel.add(serchButton, BorderLayout.EAST); 121 122 rightPanel.add(serchPanel); 123 124 addWindowListener ( new WindowAdapter() { 125 public void windowClosing(WindowEvent we) { 126 try { // 後処理 127 prepStmt.close(); 128 prepStmt_S.close(); 129 connection.close(); 130 } catch (Exception e) { 131 e.printStackTrace(); 132 } 133 System.exit(0); 134 } 135 } ) ; // ウィンドウを閉じる処理 136 137 try { // ドライバマネージャとコネクション 138 Class.forName(driverClassName); 139 connection = DriverManager.getConnection(url, user, password); 140 141 prepStmt = connection.prepareStatement(selectStr); 142 prepStmt_S = connection.prepareStatement(strPrepSQL_S); 143 } catch (Exception e) { 144 e.printStackTrace(); 145 } 146 displayList(); // 早速リストに名前表示 147 148 } 149 150public void itemStateChanged(ItemEvent ie) { // 選択項目が変化した時の処理 151 displayData(); // 各フィールドにデータ表示 152} 153public void clearList() { // リストクリア 154 codeList.removeAll(); // リストの項目をすべて削除 155} 156 157public void displayList() { // リスト項目表示 158 try { 159 resultSet = prepStmt.executeQuery(); // コードの列だけ抜き出す 160 while (resultSet.next()) { 161 String code = resultSet.getString("code"); 162 codeList.add(code); // リストにコードを追加 163 } 164 resultSet.close(); 165 } catch (Exception e) { 166 e.printStackTrace(); 167 } 168} 169 170public void displayData() { // 選択項目データ再表示 171 String code = codeList.getSelectedItem(), // 名前はリストの選択項目 172 number = "", 173 prefecture = "", 174 city = "", 175 area = "", 176 pref_reading = "", 177 city_reading = "", 178 area_reading = ""; 179 try { 180 prepStmt_S.setString(1, code); 181 resultSet = prepStmt_S.executeQuery(); 182 while (resultSet.next()) { 183 code = resultSet.getString("code");・・・; 184 } 185 while(0<=a&&a<=2) { 186 codeField[a].setText(code); 187 numberField[a].setText(number);・・・; 188 resultSet.close(); 189 } 190 } catch (Exception e) { 191 e.printStackTrace(); 192 } 193} 194 195public void serchData() { // 項目データ追加 196 String code = codeList.getSelectedItem(), // 名前はリストの選択項目 197 number = "", 198 prefecture = "", 199 city = "", 200 area = "", 201 pref_reading = "", 202 city_reading = "", 203 area_reading = ""; 204 code = serchField.getText(); // 各データをもらう 205 206 serchField.setText(""); 207 try { // 新データを追加 208 prepStmt_S.setString(1, code); 209 resultSet = prepStmt_S.executeQuery(); 210 while (resultSet.next()) { 211 code = resultSet.getString("code");・・・; 212 } 213 while(0<=a&&a<=2) { 214 codeField[a].setText(code); ・・・; 215 resultSet.close(); 216 } 217 } catch (Exception e) { 218 e.printStackTrace(); 219 } 220} 221 222 public void actionPerformed(ActionEvent ae) { // ボタンが押された時に行う処理 223 String command = ae.getActionCommand(); // イベントからアクションコマンドを得る 224 if (command.equals(displayCommand)) { 225 displayData(); // 表示処理 226 }else if(command.equals(doneCommand)) { 227 a++; 228 System.out.println(a); 229 }else if(command.equals(serchCommand)) { 230 serchData(); 231 a++; 232 System.out.println(a); 233 } 234 } 235 public static void main(String[] argv) { 236 postNumberGUI myFrame = new postNumberGUI(); // フレームの生成 237 myFrame.setVisible(true); // フレームの可視化 238 } 239}

試したこと

データベースのリスト表示が重いのかと思い、コメントアウトしましたが、一つ検索して表示後、反応しなくなりました。
(コードが乱雑なのも関係ありそうです、、)

補足情報(FW/ツールのバージョンなど)

eclipseを使っています。
また今後グーグルのAPIで地点の中間地点を出すものを扱いたいのですが、APIの実装方法がわからないのでよろしければご教授お願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/07/16 14:17

グーグルAPIの使用方法は、別で質問する方がよいと思いますよ。 (過去に同様の質問がないか探してからの方がいいですね!)
退会済みユーザー

退会済みユーザー

2021/07/16 16:17

初投稿のため、勝手がわかっておらず申し訳ないです。訂正しました。 API について了解しました。ありがとうございます。
退会済みユーザー

退会済みユーザー

2021/07/16 16:24 編集

それとブレークポイント張って、デバッグはされてみましたでしょうか?(ループが多いので、各ループの宣言に対して張っておくといいかもしれません!) 環境が今ないので確認出来なくて申し訳ないのです。。。
退会済みユーザー

退会済みユーザー

2021/07/17 13:06

返信ありがとうございます。 もう一度調べてデバッグしてみます。
退会済みユーザー

退会済みユーザー

2021/07/17 13:30

デバッグが厳しかったら、各ループ前にSystem.out.printlnするのも手かもしれません!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問