はじめて質問いたします。
現在、JDK1.1.7 で開発したアプレットがあるのですが、
この中で、java.awt.Choice を未選択状態にする為に select(-1);
としている個所があります。
このアプレットをJavaPlug-in1.3.1 を使用して実行すると、IllegalArgumentException
が発生してしまいます。
そこで、1.1.7 と 1.3.1 のソースコードを比べてみると、確かに、1.3.1 では、
select(-1) は認めていないようです。
--- JDK1.1.7 の java.awt.Choice の実装 --->
public void select(int pos) {
if (pos >= pItems.size()) {
throw new IllegalArgumentException("illegal Choice item position: " + pos);
}
:
:
}
<--- JDK1.1.7 ---
--- JDK1.3.1 の java.awt.Choice の実装 --->
public synchronized void select(int pos) {
if ((pos >= pItems.size()) || (pos < 0)) { <--- 違いはここだけ。。。
throw new IllegalArgumentException("illegal Choice item position: " + pos);
}
:
:
}
<--- JDK1.3.1 ---
う~ん、まさしく、-1 を拒否していますね。
何故、このような実装の違いが出ているのでしょうか?
(私的には、Java2開発者の気まぐれなのではと考えてしまいます。。)
また、このアプレットを最小限の修正で1.3.1 でも正常に動作するようにしたいの
ですが、1.3.1 の java.awt.Choice では未選択状態にする事は不可能なのでしょうか?
ご存知の方がおられましたら、是非、お教え頂きたいと思います。
よろしくお願い致します。
No.1ベストアンサー
- 回答日時:
バージョン1.1.xのAPI仕様を見ても、select(-1)で未選択状態に出来るとは書いてないんですよね…… だから1.1.7のselect(-1)で未選択状態に出来たのは、たまたまそうなっていたからとしか言いようがありませんね。
API仕様では、バージョン1.1でも1.3でも例外キャストの条件が「指定された位置が無効な場合」となっていて、具体的な数字が出てこないのでかなりあいまいな表現ですが、それでも引数に-1を渡したら普通は例外になると考えるのが自然です。
いずれにせよ、バージョン1.3のAPI仕様を見る限り、未選択状態に関することは載っていないので、あとから未選択状態になるように仕向けるのはあきらめたほうが良いと思われます。ほかに上のような裏技があったとしても、将来の実装が変更されないとは言い切れません。
提案: 未選択状態にする代わりに、空白の選択項目、あるいはウェブページに良くある「選択してください!」といったような“無効な項目”を作ってはどうでしょう。未選択状態にする目的がかかれてないので、なんともいえませんが。
>だから1.1.7のselect(-1)で未選択状態に出来たのは、たまたまそうなっていたからとしか言いようがありませんね。
うっ、確かにおっしゃるとおりです。。。
たまたまうまく動いていたからそのままにしておいたと言った感じでしょうか。。。
>提案: 未選択状態にする代わりに、空白の選択項目、あるいはウェブページに良くある「選択してください!」といったような“無効な項目”を作ってはどうでしょう。
そうですね。やっぱりそれしか無いですよね。今後の事も考えると。。。
しかし、数が多いので手間が。。。
ご回答本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 電気工事士 【電気】PAS(気中負荷開閉器)とPOS (柱上油入開閉器、Pole mounted 3 2023/07/18 23:33
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- Java jdk17.06のインストーラーが起動しない 1 2023/03/27 21:58
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- ソフトウェア 移行PCにDockerがインストールされていても各種開発環境のアプリはインストールが必要? 2 2023/05/21 21:53
- C言語・C++・C# C++ と、 1 2022/11/07 23:45
- JavaScript JavascriptからSQLへ繋ぎ方が分からない 3 2022/07/07 00:27
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- その他(コンピューター・テクノロジー) jbossとjdkの関係性、違いについて教えて下さい。そもそもjdk,jbossってなんですか? 1 2022/06/27 11:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
eclipse実行ができない
-
配列にnullを代入すると、null...
-
マイクラでPythonのプログラミ...
-
JaneStyleのスレッドが見れなく...
-
プログラミングの問題です。大...
-
JAの支部?地域の農協のカード...
-
CSV出力を画面から選択したデー...
-
下記問題の答えが"D"になる意味...
-
jdk17.06のインストーラーが起...
-
リレーションエンティティクラ...
-
自作Androidアプリのデータ引き...
-
正規表現について質問です。 カ...
-
Processingでマウスクリックで...
-
えハミルトン路と全域木のちが...
-
ショートカットキーについて
-
list の空は [] ってあわらすのに
-
あんまりお料理しないのに台所...
-
質問です。 配列が100以上の場...
-
次のhtml・cssでspan内の文字を...
-
Jupyter notebookですわかりま...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラミングの問題です。大...
-
配列にnullを代入すると、null...
-
マイクラでPythonのプログラミ...
-
JAの支部?地域の農協のカード...
-
eclipse実行ができない
-
Eclipse 動的プロジェクトで404...
-
下記問題の答えが"D"になる意味...
-
正規表現について質問です。 カ...
-
list の空は [] ってあわらすのに
-
「main メソッドを持つクラスが...
-
あんまりお料理しないのに台所...
-
JaneStyleのスレッドが見れなく...
-
jdk17.06のインストーラーが起...
-
eclipseで作ったプログラムを他...
-
改行含むテキストの表示の仕方
-
キー入力について
-
CSV出力を画面から選択したデー...
-
Processingでマウスクリックで...
-
次のhtml・cssでspan内の文字を...
-
JSFタグのfタグとは
おすすめ情報