【初心者】Java質問・相談スレッド115【歓迎】
■ このスレッドは過去ログ倉庫に格納されています
0001Javaが初心者
2008/05/12(月) 03:05:27JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作管理 http://pc11.2ch.net/hp/
Webプログラミング http://pc11.2ch.net/php/
をご利用下さい。
よくある質問
・「コマンドまたはファイル名が違います」
「'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
「Exception in thread "main" java.lang.NoClassDefFoundError: 」
http://www.wikiroom.com/java/?path,classpath
・String に == は使うな。equals() を使え。
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」
前スレッド
【初心者】Java質問・相談スレッド114【大歓迎】
http://pc11.2ch.net/test/read.cgi/tech/1207385614/
次スレは>>990あたりで。
過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/
0153デフォルトの名無しさん
2008/05/16(金) 10:43:36使い方としては、
Color color = Color.getColor("red");
だけど、ドキュメントを見るとシステムプロパティがどうとか書いてあっ
てよくわからんね。
0154デフォルトの名無しさん
2008/05/16(金) 10:49:05自前でやるんなら、自分でCSV書き出すプログラム書くだけだよ。
0155デフォルトの名無しさん
2008/05/16(金) 11:40:26for(data[] row : array){
for(data cell :row){
data.toString()と","をファイル出力
}}
0156デフォルトの名無しさん
2008/05/16(金) 12:41:17それはダメ。
その実体は new Color(int, int, int, int) の引数を結合した数値の文字列表現。
> 指定されたプロパティが見つからない場合、
> ***または整数値として解析できなかった場合***、null が返されます。
>145 の言う「名前から色」というのは、どこかで対応表を持つ必要があるから、
公開ライブラリには向かない、と私は思う。
要は、Map<String, Color> か何かで専門クラスを作りましょう、と。
0157デフォルトの名無しさん
2008/05/16(金) 12:45:53javax.swing.txt.html.StyleSheet#stringToColor(String) とか?
0158デフォルトの名無しさん
2008/05/16(金) 12:47:53改行してない。
0159デフォルトの名無しさん
2008/05/16(金) 18:00:57JToggleButton();で押下時のボタン色を変えるシンプルな方法はありますか?
メソッドをネットで検索しても見つかりませんでしたので、
JToggleButton();を継承して、オーバーライドしたクラスを作ったんですが、
ボタンのイベントの"actionPerformed()"が、使用されるアプリのほうが
自分より早く呼ばれてしまう為、旨くいきませんでした・・・
0160デフォルトの名無しさん
2008/05/16(金) 18:05:23public class IToggleButton extends JButton implements ActionListener
{
private boolean isSelected = false;
IToggleButton(String str){
super(str);
addActionListener(this);
if (this.isSelected) setBackground(Color.pink);
else setBackground(null);
}
public void actionPerformed ( ActionEvent e ) {
isSelected = isSelected?false:true;
if (isSelected) setBackground(Color.pink);
else setBackground(null);
}
public void setSelected(boolean selected){
this.isSelected = selected;
if (this.isSelected) setBackground(Color.pink);
else setBackground(null);
}
public boolean isSelected() {
return(this.isSelected);
}
}
0161デフォルトの名無しさん
2008/05/16(金) 19:55:47プログラム言語のスレはココですか?
0162デフォルトの名無しさん
2008/05/16(金) 20:40:200163デフォルトの名無しさん
2008/05/16(金) 22:35:26若い女の営業スマイル。よく出せるなと思っていました。
コンビニやスーパーでも俺みたいなきもいおっさんによくこうも
にこやかな営業スマイルだせるなと感心しておりました。
こないだ、パチンコ屋に行きました。そこは町の中心部にあり自宅から
4,50分のところです。そこは、衣装もエロチックでミニスカートにスリットなる
切れ目が入っていて、店員さんもなかなかの魅力的な娘が多いです。
それも楽しみにときどきそこの店に行きます。
あまりでないので、自動販売機のところで一服してるとかわいい娘が
コーヒーを配っています。あまりこの店までこれないので、ついミニスカートのスリットから見える
太ももを凝視して興奮してしまいました。かなり長い間エロい目つきで見てたはずです。
相手に気づかれました。さすがに、とってもいやな顔されるだろうとおもっていました。
最初はたしかにちょっといやな顔をしましたが、すぐにあのにこやかな営業スマイルにもどりました。
これはびっくりしました。いくら店員とはいえ、俺みたいなもてないブサ男に
この場面で営業スマイルとは・・・
恐れ入りました。パチンコ屋のあの店員。
0164163
2008/05/16(金) 22:36:080165デフォルトの名無しさん
2008/05/16(金) 22:39:49女性店員よりプロ意識が低いと言いたいわけですね?わかりますw
0166デフォルトの名無しさん
2008/05/16(金) 22:54:26http://www.7andy.jp/books/detail?accd=31942656
やさしく学ぶ Sun認定Javaプログラマ
http://www.7andy.jp/books/detail?accd=32020519
この2つでどっちを買うか迷ってるんだけどどっちがオススメ?
もしくは他にオススメある?
一応研修でざっと習って「やさしいJAVA」ってのも貰った
基本をきっちり押さえつつも実践的な練習もできる本が欲しい
他のSUN認定の分厚いのや外人が書いた翻訳された本は見にく過ぎて無理だった
とりあえず逆引きの本は1冊買った
誰か助けて
0167デフォルトの名無しさん
2008/05/16(金) 23:12:15「実践的な練習」がどのレベルを指してるのか分かんない。
1.実用的なプログラムを、とりあえず動くレベルで書けるようになりたい。
2.動けばいいレベルなら既に書けるから、より良いコーディングを学びたい。
1なら言語本(Javaそのものを説明してる類の本)はやさしいJava1冊で十分。
それよりも実際に何か書いてみる方に注力して、書きながらその都度必要
な情報を検索する、それでもみつからないなら本を探して買うってやり方の
方が経済的だし効率いい。
言語本を何冊も買うのは意味ないし、言語本を2冊読む時間があるなら1
冊だけ読んでもう1冊読む分の時間で実際にコード書く方が効率いい。
あと、1のレベルに達してない人が2を求めるのは非効率。先ずは1から。
もし2ならJavaの鉄則とJavaの格言は良い本だよ。読みやすいしね。
0168デフォルトの名無しさん
2008/05/16(金) 23:27:34こんな時間にどうもありがとう!
明日その2冊を立ち読みしてみる
0169デフォルトの名無しさん
2008/05/17(土) 00:21:32javaプログラミングをするのに優れたフリーのテキストエディターを教えて下さい。
できれば文字の色を変えてくれて、Tabで列を揃えてくれるやつがいいです。
OSはWindows XPです。
よろしくお願いします。
0170デフォルトの名無しさん
2008/05/17(土) 00:36:59java.util.List は同期化されませんが、以下のようにすれば、list はスレッドセーフになって帰ってくるのですよね。
List unsyncList = new ArrayList();
List list = Collections.synchronizedList(unsyncList);
○質問1:
マルチスレッド環境において、
Collections#synchronizedList() が返した list に対しては、
synchronized ブロックでくくらずに add() や get() しても、スレッドセーフが保たれるという理解でよいですか?
○質問2:
javadoc の Collections#synchronizedList() のところに、
以下のように書いてあるのが気になります。
>返されたリストの繰り返し処理を行う場合、ユーザは、次に示すように手動で同期をとる必要があります。
>
>List list = Collections.synchronizedList(new ArrayList());
> ...
>synchronized(list) {
> Iterator i = list.iterator(); // Must be in synchronized block
> while (i.hasNext())
> foo(i.next());
>}
>これを行わない場合、動作は保証されません。
これは、list の add() や get() は質問1:で同期化されるようになったが、
list.iterator() が返すイテレータへのアクセスは同期化されていないので、
イテレータでグルグルまわすときは、synchronized 文で自分で同期化してね、という理解でよいでしょうか?
0171デフォルトの名無しさん
2008/05/17(土) 00:42:19いくつもあるし相性があるって人もいるので、
ぐぐって出てきたのを使ってみれば?
あるいはEclipse、NetBeans等の統合開発環境とか
文法ミスを指摘してくれたり、デバッグ用の機能がそろってたりと何かと便利
大規模な開発にも耐えうるし、ひとつ持っておくのをお勧めする
0172デフォルトの名無しさん
2008/05/17(土) 00:48:44なるほど、ありがとうございます。
早速ぐぐってみます。
0173デフォルトの名無しさん
2008/05/17(土) 01:17:27Effective Javaがいいよ!
0174デフォルトの名無しさん
2008/05/17(土) 01:31:30sync-List は、単にsynchronizedメソッドでラップされたインスタンスを提供してるだけ。
必要とされる同期化の手続きが、著しく改善されるわけではない。
iterator で返されるインスタンスは、ラップされたものとは違うので、
生成前に必要な手続きを行う必要がある。
0175デフォルトの名無しさん
2008/05/17(土) 01:42:45>質問1
はい。
ただし、例えば以下のようなことをしたい場合は、containsやaddがそれぞれ単体で同期されてても
間に割り込まれる可能性があるので、全体をsynchronizedで囲まないと望む結果にはならない。
if ( list.contains(x) == false ) list.add(x);
>質問2
はい。
どのみち、iterator、hasNext、nextをそれぞれ単体で同期したところで、
間にaddが割り込まれたらConcurrentModificationExceptionが起きるから、使い物にならないと思う。
ところで、CopyOnWriteArrayListという便利なものもあるよ。
状況によってはおすすめ。
0176デフォルトの名無しさん
2008/05/17(土) 02:24:22Color c = (Color)Color.class.getField(colorname).get(null);
要try-catch
0177デフォルトの名無しさん
2008/05/17(土) 07:49:46スレ違いなら誘導をお願いします。
DBから読み込んだ内容をテーブルとして表示し、レコードごとにボタンを置いて押すとそのレコードの詳細を表示するものを作っています。
レコードをテーブル表示するのはwhile(ResultSet.next())で<tr>〜</tr>を繰り返して実現できそうなのですが、詳細を表示するボタンに迷っています。
というのも渡すパラメータが10個あり、しかもそのうち9つがレコードの内容に依存しない共通の項目です。
ボタン一つ一つにformを作ってhiddenで10個のパラメータを付加してwhileで回すのも考えたのですが、例えば20個のレコードに対して200のhiddenが生成されるのはいかがなものかと他の手段を探しています。
buttonを押したときにonclickで遷移することも考えましたが、buttonに直接パラメータを付加できる属性はないものでしょうか?
0178デフォルトの名無しさん
2008/05/17(土) 08:27:13リンク"A href=恐らくdoPostの値></A"で
データをJAVAサーブレットに送信したいのですが方法がわかりません。
リンクにdoPostの情報を与えるのもわかりませんがリンクからの情報をサーブレットに値を与えデータを返す方法もわかりません。
本にも載ってないのでどうすればいいかわかりません、教えて君になってしまいますがよろしくお願いします。
0179178
2008/05/17(土) 08:52:140180デフォルトの名無しさん
2008/05/17(土) 09:55:43現場のソースで、
List list = new ArrayList();と記述し、ArrayListのメソッドを
使っているソースを見かけたのですが、
ArrayList list = new ArrayList()とのメリット上での差異が分りません。
良い点があるから、List list = new ArrayList();と記述するのでしょうが、
その良い点が分りません。よろしくお願いします。
一応、sjc-p1.4の資格は持っていて、SJCPに合格するだけのインターフェースの知識は
あります。
0181デフォルトの名無しさん
2008/05/17(土) 10:01:33そもそも、一覧から詳細にいくのに10個もパラメータいらんだろ?
なんかおかしな設計ではないのか?
POSTで送信する(Formを使用する)場合、
>9つがレコードの内容に依存しない共通の項目
レコード(繰り返し処理)の外側に配置すればいい
各列のハイパーリンクをクリックしたならば、JavaScriptで各行のキーをhidden項目に設定。
その後、隠しボタンにした「詳細」ボタンをJavaScriptでクリック
ってのが1つの方法。
詳細がボタンであっても同様。
GETでいいならば、URLのパラメータに10個のパラメータを付ければいい。
POST/GETとFORMあたりがよく解っていないならば、まずはHTTPの勉強を汁。
0182デフォルトの名無しさん
2008/05/17(土) 10:07:06ぶっちゃけて言えば、半端な知識のマが書いた中途半端なコードなだけ。
意図としてはListで定義されているメソッドしかlist変数では使えないって効果しかない。
これがメリットとなるか?というならば、ほとんどの場合は否。
これがメリットとなるケースは、一般的にいって定義されたクラス外からlistの参照を持つ場合。
つまり、あるクラスのフィールドとして、
private final ArrayList list = new ArrayList();
と書いてあっても、
public List getList() {
return list;
}
とアクセサを定義しておけば、
private final List list = new ArrayList();
とする必要は(ほとんど)ない。
クラス内でArrayListをLinkedListに変更したり、配列に変更しても、List getList()さえ仕様通りの動きをすればいいわけだ。
ローカル変数でやるならばもっと意味はない。
0183デフォルトの名無しさん
2008/05/17(土) 10:12:13極端な話、LinkedListなんて専用メソッドを活用しなきゃいらない子。
0184デフォルトの名無しさん
2008/05/17(土) 10:25:11swingでゲームを作ろうとして勉強しているものです
ゲーム中(ループ中)にJPanelを実装したクラスのコンストラクタでボタンを配置
別スレッドでループ処理する。このときアクティブレンダリングして描画命令
してるのですが、なぜかボタン隠れた状態で更新されてしまいます。
下にコードを書きますので、どなたかご教授ください
0185デフォルトの名無しさん
2008/05/17(土) 10:26:43「選択肢があるなら、抽象データ型を使え」という指針がある
Listとおけば実装の詳細がより隠蔽される
例えば実装を交換したいという状況になっても、new ArrayList();の部分だけを取り替えてやればいい
・・・・一応、理論上はそういうことになってるようなのだが、
listのスコープが狭い場合はデメリットにしかならんような?使えるメソッド減るし
0186デフォルトの名無しさん
2008/05/17(土) 10:26:48import java.awt.*;
import javax.swing.*;
/*****************************************
* パネルクラス(中間コンテナ)
*
*****************************************/
class MainPanel extends JPanel implements Runnable{
//パネルサイズ
public static final int WIDTH = 500;
public static final int HEIGHT = 500;
private Thread thread;
//コンストラクタ
public MainPanel(){
//サイズの設定
setPreferredSize(new Dimension(WIDTH,HEIGHT));
thread = new Thread(this);
thread.start();
JButton btn = new JButton("OK");
add(btn);
}
0187デフォルトの名無しさん
2008/05/17(土) 10:28:14public void run(){
while(true){
SwingUtilities.invokeLater(new Runnable() {
public void run() {
gameRender();
paintScreen();
}
});
try{
Thread.sleep(200);
}catch(InterruptedException e){
e.printStackTrace();
}
}
}
0188デフォルトの名無しさん
2008/05/17(土) 10:29:03// ダブルバッファリング用
private Graphics dbg;
private Image dbImage = null;
//バッファにレンタリング
public void gameRender(){
//初回時の呼び出しならばダブルバッファリング用のオブジェクト作成
if(dbImage==null){
//バッファイメージの作成(領域)
dbImage = createImage(WIDTH,HEIGHT);
if(dbImage==null){
System.out.println("no dbimage obj!");
return;
}else{
//バッファイメージに図や画像を書き込むために必要なGraphicsオブジェクトも作っておく
dbg = dbImage.getGraphics();
}
}
//バッファをクリアする
dbg.setColor(Color.WHITE);
dbg.fillRect(0, 0, WIDTH, HEIGHT);
}
0189デフォルトの名無しさん
2008/05/17(土) 10:29:39public void paintScreen(){
try{
Graphics g = getGraphics();
if(g!=null && dbImage!=null){
//バッファイメージを画面に描画
g.drawImage(dbImage,0,0,null);
}
//システムのtoolkitオブジェクトを返し、画面を強制的に更新させる
Toolkit.getDefaultToolkit().sync();
if(g!=null){
//グラフィックオブジェクトの破棄
g.dispose();
}
}catch(Exception e){
e.printStackTrace();
}
}
}
0190デフォルトの名無しさん
2008/05/17(土) 10:33:02//コンストラクタ
public MPN(){
//タイトル
setTitle("ウィンドウ");
setResizable(false);
//ContentPaneにパネルを貼り付ける
MainPanel panel = new MainPanel();
Container contentpane = getContentPane();
contentpane.add(panel);
//フレームサイズをパネルに合わせて設定
pack();
}
private static void createFrame(){
MPN game = new MPN();
game.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
game.setLocationRelativeTo(null);
game.setVisible(true);
}
public static void main(String[] args) {
//イベントディスパッチスレッドにフレームを作成させる
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createFrame();
}
});
}
}
0191デフォルトの名無しさん
2008/05/17(土) 10:35:21長くなりすみません。
どうもダブルバッファリングするとボタンがうまく配置しません。
paintComponentメソッドを使った描画処理ではうまくいきました。
0192デフォルトの名無しさん
2008/05/17(土) 10:51:46trimToSize() も clone() も使う必要ない場合だと、5文字削れてラッキーとか。
メソッド境界以外では抽象型に拘る必要がないってのもわかるけど、
ArrayList と List にも拘るほど違いないから、ぶっちゃけどうでもいい。
0193デフォルトの名無しさん
2008/05/17(土) 11:23:53それとも親(JPanel)にボタンを描画させたいの?
0194デフォルトの名無しさん
2008/05/17(土) 11:54:22俺は、後でプロファイルを取ってListの実装を最適化する予定の時、よくそう書いておく
0195デフォルトの名無しさん
2008/05/17(土) 12:03:04JPanelに描画させたいっす。
コンストラクタでやってるように
なのになぜか裏にいってしまうんだああああ!なぜだあああ!
0196デフォルトの名無しさん
2008/05/17(土) 12:31:26dbImageを描画した後にrepaintして親を再描画させる
適当に考えてみたので見当違いだったらごめん
0197186
2008/05/17(土) 12:44:26パネル上に描画処理をほどこすと、かぶるものなのでしょうか
ダブルバッファ処理をしないでpaintComponentを使った描画はかさならず描画されました
ダブルバッファ処理は別スレッド処理なのでイベントディスパッチスレッドで
処理させているのですが、そこらへんがおかしいのでしょうか
うむうむ・・・・
0198デフォルトの名無しさん
2008/05/17(土) 12:47:160199186
2008/05/17(土) 13:07:34描画する領域と、描画する前のサブ領域でダブルバッファリングでは?
参考サイトにはそうかいてあった
0200デフォルトの名無しさん
2008/05/17(土) 14:17:28その参考サイトが間違ってるだけじゃね?
例えば、そのプログラムだと gameRender() と paintScreen() を
マルチスレッドで並列動作させたらチラつくでしょ。
チラつかないようにgameRender() が使う描画用の領域と、
paintScreen() が使う、既に描画完了してる表示用の領域と
二つ持つのがダブルバッファリング。
paintScreen() 相当の処理が十分速ければダブルでいいけど、
遅い場合はトリプルバッファリングが必要になったりする。
まぁ、いまどきは Window#createBufferStrategy() 使えば済む話だから
自前でダブルバッファリングする必要はあんましないはず。
0201デフォルトの名無しさん
2008/05/17(土) 14:25:11つまり、左右方向キーは入力を受け付けて上下方向キーは無視、のような
ただJtextAreaに直接KeyEentリスナーを加えてもダメみたいだたし
何かいい方法があればご教示下さい
0202201
2008/05/17(土) 14:26:47左右キーでカーソルを左右に移動、上下キーでは何も処理をいない、
というテキストアリアを実現したいと考えています
0203デフォルトの名無しさん
2008/05/17(土) 14:34:45その上から塗りつぶしたら見えなくなるよ
0204デフォルトの名無しさん
2008/05/17(土) 14:41:26何が真っ先に呼ばれるんだろう
protected void processKeyEvent(KeyEvent e)かな・・・自信ない
上手くいったら報告プリーズ
0205186
2008/05/17(土) 14:49:13ありがとうございます。
とすると、上のコードではどうなるのでしょうか
私も考えているのですがいまいち・・知識がたらず・・すみません
0206デフォルトの名無しさん
2008/05/17(土) 14:53:08Exception in thread "main" java.lang.UnsupportedClassVersionError: mix/ide/MixID
E (Unsupported major.minor version 50.0)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
0207206
2008/05/17(土) 14:57:03javaのプログラムをコンパイルしたいのですが・・・
http://mixide.sourceforge.net/
mixideというプログラムです
jar形式で配布されてるので、それをcmdで実行すると
C:\MixIDE-1.4rc6>java -jar MixIDE.jar
Exception in thread "main" java.lang.UnsupportedClassVersionError: mix/ide/MixID
E (Unsupported major.minor version 50.0)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
となってしまいます・・・アドバイスください
0208デフォルトの名無しさん
2008/05/17(土) 14:59:46dbImage = createImage(WIDTH,HEIGHT);
以降で自身にaddされたコンポーネントを自分で描画する
0209デフォルトの名無しさん
2008/05/17(土) 15:07:57Keymap 使って、VK_UP や VK_DOWN に何もしない Action を結び付けてみるとか。
TextAction noaction = new TextAction("noaction") { public void actionPerformed(ActionEvent e){} };
textarea.getKeymap().addActionForKeyStroke(KeyStroke.getKeyStroke(KeyEvent.VK_UP, 0), noaction);
0210デフォルトの名無しさん
2008/05/17(土) 15:08:49本当ありがとう、processKeyEventメソッドを
オーバライドしてやったら上手くいったよ
昨日1日奮闘してダメだったことを30分で解決してくれるとは、、
もっと精進せねば
0212186
2008/05/17(土) 15:41:54なるほどなるほど。
画面に描画するときに一緒に描画するんですね
ボタンのようなコンポーネントの描画に関してちょっと知識不足です
ぱねるにaddすればはりつけられることはわかっているのですが
一緒に描画というところがまだわかりません
自分で調べてみますが、よろしかったらご教授お願いします!
0213180
2008/05/17(土) 15:50:16質問に答えていただいてありがとうございます。
0214デフォルトの名無しさん
2008/05/17(土) 16:13:01コンパイルエラーがでるんですが、なぜでしょうか??
returnでbooleanを返してるんですが???
tryの外からbooleanを返すとうまくいくのですが、何故なのか理由がよくわかりません。
public boolean DBDelete(int formVal[]) {
try {
Connection con = getConnection();
Statement smt = con.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_UPDATABLE);
ResultSet rs = smt.executeQuery("SELECT * from kyuuyo WHERE 社員番号="+formVal[1]);
if (rs.next()) {
if (rs.getInt("社員番号")==formVal[1]) {
rs.deleteRow();
return true;
} else {
System.out.println("該当する社員番号がありません");
return false;
}
}
} catch(Exception e) {
e.printStackTrace();
}
}
0215デフォルトの名無しさん
2008/05/17(土) 16:21:52全てのケースにおいて return するか例外投げるかしないとダメ。
具体的には rs.next() が true にならないケースと、
catch(Exception e) で例外捕捉したケースが漏れてる。
booleanの結果を戻すか、例外投げる必要がある。
0216デフォルトの名無しさん
2008/05/17(土) 16:31:00SQLインジェクション
0217デフォルトの名無しさん
2008/05/17(土) 16:41:21KeyStroke a = KeyStroke.getKeyStroke("ctrl A");
for (InputMap im = t.getInputMap(); im != null; im = im.getParent()) {
im.remove(a);
}
とか。
0219デフォルトの名無しさん
2008/05/17(土) 17:05:30それはそれでマズイ
0220デフォルトの名無しさん
2008/05/17(土) 17:07:28if (rs.next()) {
}
//ここじゃね?
0222デフォルトの名無しさん
2008/05/17(土) 18:00:520223デフォルトの名無しさん
2008/05/17(土) 18:08:45List list = new ArrayList();
は、List としての機能が必要だが、インスタンスを生成するには具象クラスが必要なので
とりあえずArrayList を使ったということ。
すなわち、それ以降は単に List の機能が必要なだけという、
プログラムの書き手から読み手への強い意思表示が含まれている。
これを、半端な知識のマと言ってしまうと、書き手は哀れw
0224デフォルトの名無しさん
2008/05/17(土) 18:44:13無駄に短いスコープで抽象化するのは俺も反対だな
そもそもListに関して言えば、何も考えずにgetListとか作る方が問題となるわけで。
0225186
2008/05/17(土) 19:10:01gameRenderの
dbImage = createImage(WIDTH,HEIGHT);
以降で自身にaddされたコンポーネントを自分で描画する
とアドバイスをいただいたのですが、まだ理解できずボタンが隠れてしまします
gameRender内でaddで追加してもだめでした。
どなたかご教授お願いします
0226デフォルトの名無しさん
2008/05/17(土) 19:20:40「お、ここ、List で十分じゃん」と書き換えるのは抽象化って感じだけど、
List でロジック組んでみたけど、その List のインスタンスも生成しなくちゃならない
というような場合は、むしろ具象化って呼ぶのが適当じゃね?
(そもそも、はなっから List でなく ArrayList で考えるような場合がどれだけあるのだろうか)
そのような場合、生成部分は仕方ないけどそれ以外を
わざわざ List から ArrayList へ置き換えてやる必要があるのかどうか。
いくらスコープが狭くても面倒だし
0227デフォルトの名無しさん
2008/05/17(土) 19:21:18どこか落とせるところ無いですか?
0228227
2008/05/17(土) 19:36:020229デフォルトの名無しさん
2008/05/17(土) 19:43:140230186
2008/05/17(土) 19:47:52できました!
感激です!
スキです!
0231デフォルトの名無しさん
2008/05/17(土) 20:01:14これをコンパイルしようとすると終盤でFigureTypeが見つけられないとでてしまいます
どこを修正・追加すればコンパイル可能になるでしょうか?
0232デフォルトの名無しさん
2008/05/17(土) 20:06:42むしろ最初からListではなくArrayListで考えれば充分で、Listとして考える必要もないような気がする。
>生成部分は仕方ないけどそれ以外をわざわざ List から ArrayList へ置き換えてやる
宣言と初期化は普通は同時に行うわけで、書き換える必要もないと思うけど?
0233186
2008/05/17(土) 20:13:31ボタン表示ができたのですが、ボタンとしての機能がなくなっていました!
コンストラクタでボタンをADDで貼り付けて、別スレッドでpaintで描画した結果、
addで貼り付けたボタンは結局うしろにいって、paintで描画したボタン(ボタンとしての機能なし)
が画面はじにでるだけでした!
こういうものなのでしょうか?
0234デフォルトの名無しさん
2008/05/17(土) 20:57:46クリックしたイベントが伝達されてないだけだと思う。
設計が悪い。
0235デフォルトの名無しさん
2008/05/17(土) 21:01:08バッファイメージを自分で作るってのはそういう事だよ。
ゲームなんだよね?
JButton使わずにパネル上のマウス位置とマウスイベントを拾ってボタンは画像にしたらどうだろう。
0236デフォルトの名無しさん
2008/05/17(土) 21:05:05それは順序が逆だ。使う側が必要とするのは本来はListという概念を実現している何かであって、その実現手段は知ったこっちゃない。
しかし、Listの実体を生成するためには、具体的なモノを明示的に指定する必要があって、諸々の取捨選択の結果としてArrayListを用いることになるわけだ。
だから、ListでなくArrayListを型として用いるということは、利用側が必要としているのは「Listを実現した何か」ではなく「ArrayListという実装」である、という意志の表明になる。
0237デフォルトの名無しさん
2008/05/17(土) 21:06:41まあ、どうでもいいんだけど
例えば、本来、ローカル変数で十分なところに(ループのイテレータとか)フィールドを割り当ててて、
「できることが多いからいいじゃないか」
「クラスの外からは隠蔽されているからいいじゃないか」
「最初からフィールド変数で考えれば十分じゃないか」
と言われるくらい気持ち悪い(※)
ましてや、これを、
「イテレータにフィールド変数を使わないのは、半端な知識がマが書いた云々」
とか非難され始めたら、ちょっと一言いいたくなる。
(※)それぞれ、以下から脳内変換
「ArrayList は List よりメソッドが多いからいいじゃないか」
「外向けのメソッドをつくる場合に、List にすればいいじゃないか」
「最初から ArrayList で考えれば十分じゃないか」
>>生成部分は仕方ないけどそれ以外をわざわざ List から ArrayList へ置き換えてやる
>宣言と初期化は普通は同時に行うわけで、書き換える必要もないと思うけど?
考えてみれば、仮引数とかに使うとかしなければ、そうそう必要ないねぇ。
でも、まあ、人間の頭の中では List を操作しているつもりなのに、
プログラムの中では操作している変数は ArrayList である
という剥離は気持ち悪い。プログラムは、人間が読むためのドキュメントであるべきなのだから。
0238デフォルトの名無しさん
2008/05/17(土) 21:45:36その理論でいくならば、すべてのクラスにおいて具体的なモノとインターフェイスは別々に考えなければならないともとれる。
現実ではListとして考える≒ArrayList、諸所の取捨選択なんてほとんどない。
メソッド内とかクラス内で閉じるものに対して、「使う側」を意識するんか?
実体をつくるのも使うのも自分だろ。
そりゃ外部とのインターフェイスとしてはListが望ましいけどね。
0239デフォルトの名無しさん
2008/05/17(土) 22:24:21Listでも構わんし、ArrayListでも気持ち悪くもない。
>232も必要がないとしか言ってないわけでどっちでもいい的立場なんじゃね?
0240デフォルトの名無しさん
2008/05/17(土) 22:26:57> その理論でいくならば、すべてのクラスにおいて具体的なモノとインターフェイスは別々に考えなければならないともとれる。
ある意味yes. 実装レベルでclassとinterfaceに分離するか否かは、モノの性質、作業工数、管理工数などを考慮して決めるけど。
あと、「使う側」って言うのは「List/ArrayListを使用しているコード」のこと。
それから、「表明」する主語は「コードを書いた人」で、「表明」している先は「そのコードを読むモノ(人だけじゃなくコンパイラも含む)」のこと。
つまり、List でなく ArrayList と書いたなら、そのソースコードを書いた人はそれを読むモノに対して、「ここでは (List ではなく) ArrayList である必要があるのだ」と主張しているのに等しい。
0241177
2008/05/17(土) 22:46:21確かに詳細にいくだけならプライマリキーを渡せばいいのですが、
詳細からまた一覧に戻ってくる際に同じ条件で検索する必要があるので一覧画面が受け取ったパラメータをまるまる渡してやらなければいかんのです…
ユーザインターフェスはformとボタンを使用する事を考えています。
コードとしては
<table>
<% while(ResultSet.next()){ %>
<tr><td>-----テーブル内容-----</td><td><form action="URL" method="POST"><--hiddonいっぱいとsubmit--></form></tr>
<% } %>
というのが思いついてはいるのですが、それだと生成されるレコードごとにhiddonがたくさん書き込まれてしまうなぁと思いまして…bottunタグにパラメータを埋め込めたら便利なんだけどなぁと思っているのですが…
0242177
2008/05/17(土) 22:47:300243デフォルトの名無しさん
2008/05/17(土) 22:54:05行ごとにformを作るな、ページに1つでいいだろ
どこまでも検索条件を持ちまわすのか?
検索条件が増えたとき困らないか?
なんでもセッションに値を突っ込むのは奨励されないが、2画面以上遷移して値を保持しなければならない場合、セッションに積んだ方がいい。
0244デフォルトの名無しさん
2008/05/17(土) 23:04:57axis2は今動かして(クライアントだけだけど)とりあえず動いた。
JAX-WSはJDK落とすのがかったるいのでまだ試してないw
ttp://homepage2.nifty.com/igat/igapyon/diary/2008/ig080116.html
の「いろいろ問題」ってーのは具体的にどのあたりなんでしょ?
0245デフォルトの名無しさん
2008/05/17(土) 23:09:08Map と Hashmap では、体感しやすい経験があった。
最初のソース:
マスタ取得部品みたいなクラスがあって、
Hashmap map = new Hashmap();
で定義されていて、この map オブジェクトを外部からさわれるようになっている。
当然、呼び側からは Hashmap 型でアクセスしていた。
後日、Map の一覧をソートされた状態で表示する必要が発生し、Treemap に変えたくなった。
けれども呼び側では、すべて Hashmap にしているため、呼び側を、結局 Map で
取得するよう、すべて書き換えた。
部品側は、Map map = new Treemap();
にしておしまい。
こういうことがあると、呼び出し側ではインターフェースで取得すべきと思うようになった。
List においても、後日データ量が増えた、チューニングの問題で、ArrayList から LinkedList に変えたくなった
ときに、呼び出し側は List にしておけば、部品側だけの修正ですむと思うのだけど。
0246デフォルトの名無しさん
2008/05/17(土) 23:09:29ま、現状だと資料とか実装例とか豊富なaxis2でいいと思う。
チャレンジャーならばJAX-WS使ってみれば?
0247デフォルトの名無しさん
2008/05/17(土) 23:12:59問題は「当然、呼び側からは HashMap 型でアクセスしていた」ところ
0248244
2008/05/17(土) 23:19:44おお、もうお返事がw
了解、さしあたりaxis2でもう少し掘り下げてみる。
いや、axis(1)のような、Wikipediaにまで載ってる明らかなダメがあるのかと思ってねw
>JAX-WS
ttp://ja.wikipedia.org/wiki/Apache_Axis
0249245
2008/05/17(土) 23:20:49その部品は、以下のようなメソッドが外部向けに定義されていた。
public Hashmap getMasterMap() { }
たしかにこのままでも、呼び側は Map map = HogeUtil.getMasterMap();
すればよかったんだけど、Javadoc に返却値の型が Hashmap と書かれていたので、
みんな Hashmap 型で取得していたよ。
0250デフォルトの名無しさん
2008/05/17(土) 23:25:23× public HashMap getMasterMap() { }
○ public Map getMasterMap() { }
あとHashMapだよ、Hashmapはないわ
0251デフォルトの名無しさん
2008/05/17(土) 23:27:28xfire ( http://xfire.codehaus.org/ )
あるいは、後継の
CXF ( http://cxf.apache.org/ )
はどうだい?
xfire は使ってたけど、POJO を WebService 化するのがすごく楽だった。
(コード修正なし、xml 書くだけ)
まぁいまどきのデファクトという意味では、Axis2 でしょう。
0252デフォルトの名無しさん
2008/05/17(土) 23:37:28ページに一つでformにしたいんですが、複数のSubmitを作ったら全部のHiddenを渡してしまうのが…というのが悩みでして。
submitを押したときに特定のパラメータを渡す動作をsubmitの中に書ければいいのですが…
検索条件は検索結果と詳細の間だけで持ちまわす物です。
■ このスレッドは過去ログ倉庫に格納されています