1 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 01:09:54 ] プログラミング言語Javaに関する質問スレです。 JavaScript, Ajaxの質問は、ここでは受け付けていません。 Web製作管理 pc11.2ch.net/hp/ Webプログラミング pc11.2ch.net/php/ をご利用下さい。 よくある質問 ・「コマンドまたはファイル名が違います」 「'javac' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」 「Exception in thread "main" java.lang.NoClassDefFoundError: 」 www.wikiroom.com/java/?path,classpath ・String に == は使うな。equals() を使え。 ・「\12288 は不正な文字です。」 文字リテラル以外で全角スペースは使えません。半角スペースに。 ・その他の質問→「APIのjavadoc見ろ」 前スレッド 【初心者】Java質問・相談スレッド120【歓迎】 pc11.2ch.net/test/read.cgi/tech/1223603727/ 次スレは>>990 あたりで。 過去ログ、関連スレッド、よくある質問とその回答など、 質問をする前に、貴方が見なければならないサイトについての情報は、 下のwikiのページにまとめてあります。 www.wikiroom.com/java/
54 名前:52 mailto:sage [2008/11/19(水) 12:46:40 ] JTextFieldをJTextPaneにしているのがいけないのですかね もうちょい試行錯誤してみます
55 名前:デフォルトの名無しさん [2008/11/19(水) 16:15:47 ] 初心者から中級者の間だけど、サンプルソース打ちながらやってみて面白い本をおしえて。 サーバサイドJavaは無しで・・
56 名前:デフォルトの名無しさん mailto:sage [2008/11/19(水) 16:37:36 ] あるpngファイルAを読み込み、別ファイルBを生成するプログラムを作ることになりました 以下現プログラムの該当部分です Iterator readers = ImageIO.getImageReadersBySuffix("PNG"); ImageReader reader = (ImageReader)readers.next(); ImageInputStream iis=ImageIO.createImageInputStream(file); reader.setInput(iis); BufferedImage bi = reader.read(0); Raster raster = bi.getData(); Object obj = raster.getDataElements(0,0,raster.getWidth(),raster.getHeight(),null); 最終的にはObjectをImageIOに食わせてデータ取得できるらしいですけど、 createImageInputStream、getImageReadersではなしのつぶてでした どのメソッドを使えばいいのか教えて下さい
57 名前:デフォルトの名無しさん mailto:sage [2008/11/19(水) 19:22:56 ] >>56 こんな感じでいいんじゃない BufferedImage bi = ImageIO.read(fileA); int w = bi.getWidth(), h = bi.getHeight(); int[] rgb = bi.getRGB(0, 0, w, h, null, 0, w); ・・・・ bi.setRGB(0, 0, w, h, rgb, 0, w); ImageIO.write(bi, "png", fileB);
58 名前:56 mailto:sage [2008/11/19(水) 19:43:11 ] >>57 すっかり言及を忘れてましたが、Bはpngではなくバイナリファイルなんです >>56 プログラムのObjectを何らかの形に変換し吐き出すと思われるのですが、 そこで使用するのがImageIOらしいです とりあえずおとなしく直に聞くことにします お手数おかけしました
59 名前:デフォルトの名無しさん [2008/11/19(水) 23:21:40 ] プログラミングに関係ないですが ブルーレイを購入しようググっててBD-Jを知りました。 で、色々な情報があって混乱しています。 1.まず「BD-Jはブルーレイの仕様でブルーレイプレイヤーなら必ず使える」という情報。 ・・とすると、PS3やDiGA等でもJavaを実行できるということ? 2.「最近のシステムアップデートでPS3でBD-Jが使えなくなった」という情報 ・・あれ?BD-Jはブルーレイの仕様なのにPS3はBD-Jが使えなくなったってどういうこと? 思ったのがもともとPS3はUSBからBD-Jが起動できたらしいが、単にこれができなくなったってことでしょうか? ブルーレイディスクにBD-Jアプリを焼けば現在でもPS3でBD-Jが実行できるのでしょうか? ご存知の方いましたら教えてください
60 名前:デフォルトの名無しさん [2008/11/19(水) 23:32:14 ] 質問です。 HttpServletRequest#getHeader("Cookie")を使用すると たまーにnullが帰ってくることがあるんですが、どうしてなんでしょうか?
61 名前:デフォルトの名無しさん mailto:sage [2008/11/19(水) 23:44:33 ] 凄く初心者な質問をさせてください。 関数ってどういう基準で分割していくのが良いとか基準があるのでしょうか? 自分で書いてたコードなんですが初期化処理Init()の中で更に ボタンの初期化InitButton()、メニューの初期化InitMenu()とか、 機能毎ってよりコンパクトにまとめるのを目的に小さくするのって (しかもここでしか絶対使われない)どうなんだろうって気になりました。
62 名前:デフォルトの名無しさん [2008/11/19(水) 23:54:02 ] >>61 Javaに限らず関数分けの目的は2つあります。 1. 複数箇所で使うまとまりを関数化する。 2. ひとつの関数の中のコードが長すぎるので関数化して分割しソースを見やすくする。 61さんの場合は後者ですね。 以前の1メソッド50ステップまでというルールのプロジェクトがありました。 ちなみに、私も61さん同様 2. の分け方はあまり好きではありません。コメントで区分けしておけばいいだけですし。
63 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 00:08:28 ] 複数個所に同じような処理があっても,それらが複数のクラスにまたがってるときは 関数にまとめるのが必ずしも良いとは言えない 取り回しがしづらくなる
64 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 01:10:58 ] 入力フォームを作成する 1.氏名を表示させる 2.男性、女性をreslt.phpで表示させる 男性の場合青、女性の場合赤で表示させること 3.趣味を表示させる 読書、ゲーム、映画、旅行、スポーツ チェックした項目をreslt.phpで複数表示させる事 チェックした項目には あなたの趣味は○○と○○ですね。と表示させる 読書、ゲーム、映画、2点以上 のみチェックした場合、「たまには体を動かしましょう」 スポーツ、旅行の 2点チェックした場合 「体を動かすのは良いことです。」 全てチェックを入れた場合には、(5点)「たくさんの趣味がありますね。」 と表示させる 3ができません 助けてください>< www9.uploader.jp/dl/naoya6628/naoya6628_uljp00007.zip.html 1,2はできました C言語が間違ってるんだと思います 友達いないんだ 明日俺だけ出来ないとか担ったらいやなんだ お願いですから助けて下し亜><
65 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 03:07:21 ] >>61 適切な名前がつけられる場合は分割する。 不適切な分割が既にされている場合、あるいは、 昔は適切だったが、今は不適切になってしまった場合は、 一度展開してから整理して分割する。 どのように分割すればいいか良く分からないときは、放置。 事が進むにつれ、だんだん分かってくるかもしれないし、 そもそも何をもってして適切かが変化するかもしれない。 変更後のテストは必須
66 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 05:57:30 ] Serializableなんですが、 private void writeObject(ObjectOutputStream stream) throws IOException を特に定義しなかったとき、フィールドに配列があっても大丈夫なんでしょうか。 それとObject[]とかだとどうなるんでしょうか。
67 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 08:27:50 ] GUIの時は特にブロックで分けてるなぁ
68 名前:はんしょう [2008/11/20(木) 08:46:29 ] これまで Jbuilder2005でJPXを開いて、実行させると描画していたのですが DOCモードでJAVA を動かした(と言ってもなにも描画しないで元のPromptになった) 後、再度Jbuliderで実行させようとすると -- Java プロセスを起動中に IOException が送出されました - とエラーになったのです 元のように描画実行するようにするにはどうしたら 良いでしょうか?
69 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 09:46:15 ] アプレットでダブルバッファリングを試みているのですが、 createImage(int,int)のシンボルが見つからないという警告が出ます。 importでComponentも読み込んだのですが認識してくれません。 何か他のクラスのcreateImage()と衝突などしているのでしょうか? わかるかたいらっしゃたらよろしくお願いします。
70 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 10:20:12 ] >>64 Cの宿題なら該当スレへ行け
71 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 10:37:31 ] >>62 コメント書けばいいとかで巨大なメソッド作るなよ。 読むときどこにそのコメントがあるかも分からなくなるんだからな。 コメントに”○×処理”とか書くぐらいなら、コメントをそのままメソッド名にしろよ。 メソッドを分けるのに苦労するなら、読み物がどう分かれているかを参考にしてみたらどうだ。 最近のプログラミングは、多少の速度アップを求めてソースを汚くするより 人間が読みやすいようにするのが良いという流れもあるだろ。
72 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 11:28:40 ] GUIでコンボボックスとテーブルを使って下記のよう動作を実現したい。 テーブルA[A_ID,A_NAME] テーブルB[B_ID, B_DATA,A_ID] コンボボックスにA_NAMEの一覧を用意して選択したA_NAMEから テーブルBのB_DATAをテーブルに表示させる コンボに一覧を表示させることはできたけど、選択したA_NAMEからB_DATAを 引っ張る方法がわかりません。 考えとしてはコンボにA_ID,A_NAMEを保持させて、A_NAMEだけ表示させようと考えてます。 コンボボックスって表示させるデータ以外のデータも保持できますか?
73 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 11:30:42 ] >>60 ブラウザがクッキーを無効にしてるんじゃね それかまだクッキーを設定してない初回アクセス時とか
74 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 11:34:55 ] >>66 大丈夫です なぜなら配列は Serializable です Object[] は中身がすべて Serializable または null なら大丈夫です Serializable でないオブジェクトが混じっている場合は NoSerializableException が投げられます
75 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 11:41:36 ] >>69 createImageはComponentのメソッドだから、自クラスがComponentのサブクラスなら this.createImage(...) あるいは this を省略して単に createImage(...) と書けるが、 そうでないなら対象のコンポーネントを指定する必要があるよ
76 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 11:49:57 ] >>72 >コンボボックスって表示させるデータ以外のデータも保持できますか? そもそも JComboBox は任意のデータを保持できます addItem 等の引数が String じゃなく Object になってるでしょう 項目をどう表示するかを決めるのは ListCellRenderer であり、JComboBox#setRenderer で設定できます デフォルトでは単に toString した文字列を表示するだけですが、自分で好きなレンダラを書けばよいです ところでGUI関連はSwingスレの方がよいかも
77 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 11:57:17 ] それで安心しました。rmiもあるみたいですけど、 Serializable はwebアプリのようなデータの転送で使っても実用に得るのでしょうか? クライアントの設定情報をeventと交えて直列化して、相互に転送するときとかですが、 例えば検索ボタンを押して3秒ぐらいまでなら実用と考えていますが実用的でしょうか。 それとも、上のwebアプリの例えだとメソッド呼び出しじゃないんですが、rmiとかの方がよいのでしょうか。
78 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 11:59:22 ] -5.6 % 3.3 5.6 % -3.3 5.6 % 3.3 -5.6 % -3.3 の答えがそれぞれ -2.3 2.3 2.3 -2.3 なんですが、これをどなたか解説していただけないですか
79 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 12:02:02 ] >>76 ありがとうございます。 setRendererでレンダリングを設定ができるんですね。 >ところでGUI関連はSwingスレの方がよいかも そうですねスレ違いでしたね。ご迷惑をおかけしました。
80 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 12:14:44 ] >>78 Java言語仕様書に書いてある通りです つまり、そういう仕様です java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.17.3 > the result of the remainder operation can be negative only if the dividend is negative (訳) 被除数が負の場合に限り結果が負になります
81 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 12:19:13 ] >>77 RMI も中では Serializable 使ってるから同じじゃない?
82 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 12:28:09 ] >>80 どうもです
83 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 13:27:28 ] [aaaa]ssssssという文字列から aaaaを取り出したいんですがsubStringを使おうにも、[aaaa]の長さは変動しますので subStringが使えません。なにかいい方法は無いでしょうか?
84 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 13:34:07 ] >>83 String s = "[aaaa]ssssss"; int start = s.indexOf('[') + 1; int end = s.indexOf(']'); String r = s.substring(start, end); System.out.println(r);
85 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 14:18:12 ] >>84 たすかりました
86 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 14:37:05 ] >>83 この機に、java.util.regex 辺りをマスターするんだ
87 名前:デフォルトの名無しさん [2008/11/20(木) 14:43:44 ] swingスレッドがないのでここでお聞きしますが、 guiでのpaintやrepaintはシングルスレッド設計が多いのですがこれはどうしてなのでしょうか? プロパティに反応してrepaintするときなど、シングルスレッドのままだと順番まちのためpaintがされずに、 ボタンが押されっぱなしのような固まったような状態が0.5秒ぐらいなってしまいこっとの方が大問題だと思います。 似たような現象は今でもfireforxとかでたまにあります。 それでもguiをマルチスレッドにしないのはなにかほかにデメリットがあるのでしょうか。
88 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 15:30:41 ] >>87 java.sun.com/products/jfc/tsc/articles/threads/threads1.html の最後あたりに書いてある
89 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 15:59:34 ] 個人的には、あらゆるイベント処理を漏らさず synchronized でガードしなければならないことを考えると、今のままでいい
90 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 16:59:54 ] >こっちの方が大問題 何と比べて大問題なんだよ。 例えばデッドロックよりも大問題なのか?
91 名前:デフォルトの名無しさん [2008/11/20(木) 17:21:56 ] そのリンクですけど、guiプログラマーにはthreadの深い理解は不要だとかオーバーヘッドどうとかですけど、 プログラム処理でこれといったデメリットではないと思いますがこの程度が原因でマルチスレッドを捨ててるんですか? これからguiやデスクトップアプリは2dやnetなどの通信などどんどん大規模になっていって、ほとんどの処理にスレッドの同期・非同期処理が必要になるとおもうのですが、 それでもシングルスレッドなのは何か他に理由があるのでしょうか? jdkがいくら進化してもシングルスレッドのままだと昔のシングルタスクOSの限界と同じかとおもいます。 デッドロックとかcuiでもあるわけでなくなるわけではないし、guiとなにか関係あるんですか。 仮に全てのメソッドをsynchronizedにしても今のCPUなら全く遅くならないんですけど、それよりも先のようにシングルスレッドの処理待ちのほうが大問題だと思いませんか?
92 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 17:36:40 ] synchronized万能主義者か synchronizedで囲うだけでマルチスレッド化による問題が解決すると思っているようなら勉強し直すことだ フレームワークがシングルスレッドであることによるシンプルさを捨てさせてまで マルチスレッドヘルに飛び込まないといけないほど反応時間を気にしないといけないのなら 自分が作ろうとしているものの設計の方をこそ見直すべきだ
93 名前:デフォルトの名無しさん [2008/11/20(木) 17:40:27 ] DOMに関する質問です。 あるDTDにvalidなXML文書からDOM木を作成するとします。 普通にXML文書をparseすると文章中の改行やタブもTEXTノード としてDOM木の中に表現されますよね(規格通り)。 こういった改行等のTEXTノードは削除して、DTD中に定義された CDATAやPCDATAに対応するTEXTノードのみを残す、小粋な お掃除方法は無いでしょうか?
94 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 17:41:46 ] GUIってユーザープログラムからだけでなく、OSからの処理も受け付けないといけないんだから、 つーかOSの一部の機能を借りている状態で実行してるんだから、 イベントディスパッチがシングルスレッドってのは納得しやすいと思うんだけど。 別にマルチで自前で書いてもスレッドセーフかどうかさえ気をつければ良いんじゃないの?
95 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 17:44:07 ] >>91 通信のような処理はGUIと無関係なんだから単純にGUIと別のスレッドでやればよかろう そのことでGUIをマルチスレッドにする必要はないと思うが 仮にこれからそれらが必要になるとしても、swingが作られたのは10年も前なわけだが、 10年後の未来を予測して設計しておくべきだったと? 設計当時の理由はそのリンク先の通りで、 残念ながら(?) 今後来るかもしれないメニーコア時代のことまで考慮されて作られてはいなかった synchronizedで遅くなることよりも、synchronizedし忘れてバグったり、デッドロック起きたりする方が俺は怖い それに単純にすべてsynchronizedするんならシングルスレッドと同じじゃまいか synchronizedかける場所を慎重に取捨選択するのはなかなか面倒な作業だと思うが
96 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 17:53:15 ] 最近設計されたGUIでマルチスレッドなものってなにがあるっけ?SubArctic ? 日本語情報が少なすぎて全く使ってないからよくわからん。
97 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 18:51:20 ] JTableってデータを更新する際初期化とか必要ですか? [1111] [2222] [3333] [4444] こんな感じでデータが入ってて そこからsetModelでデータを上書きしたら [5555] [] [7777] [] 見たいな感じになります。
98 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 19:10:44 ] >>97 試してみたけど大丈夫だったよ (import省略) public class Test{ public static void main(String[] args){ final Object[] columns = { "x" }; final Object[][] dataA = {{ "1111" }, { "2222" }, { "3333" }, { "4444" }}; final Object[][] dataB = {{ "5555" }, { "6666" }, { "7777" }, { "8888" }}; final JTable table = new JTable(dataA, columns); JButton button = new JButton("update"); button.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ table.setModel(new DefaultTableModel(dataB, columns)); }}); final JFrame frame = new JFrame(); frame.add(table); frame.add(button, BorderLayout.PAGE_END); SwingUtilities.invokeLater(new Runnable(){ public void run(){ frame.pack(); frame.setVisible(true); }}); }}
99 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 19:11:48 ] GUIツールキットの多くがシングルスレッドなのは、伝統だと思います。 非同期にやってくるイベントをキューにためて、後はイベントループを 回して順繰りに処理していく方法は一つの成功した設計モデルとして とても長い伝統と実績があります。 ソースが公開されているGUIツールキットを幾つかバらしてみれば、 多くの場合はイベントループ等の根っこの設計がどれもよく似通って いる事が分かるかと思います。 また他の部品の振る舞いをあまり意識せずに個々の部品にイベント ハンドラを書いてイベントを投げるだけでGUIの振る舞いが定義出来 るのも、イベントがシーケンシャルに処理される事を仮定出来る点が 大きいと思います。 そういう意味では、ツールキットを利用するプログラマに「楽をさせる」 良い設計ともいえます。 時代遅れとの見方もありますが、むしろこれに代わるリーズナブルな 設計モデルがまだ無いという辺りではないかと思います。
100 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 19:36:48 ] >>98 すいません・・・別の箇所で問題が原因でした。 ご迷惑をおかけしました。
101 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 19:55:17 ] >>99 イベントがどのタイミングで処理されるのかを マルチスレッドだと制御できるとは思えないからなぁ。 シングルスレッドだからこそ、予測しやすいわけで。 まぁ、予測ができるだけで、確実にシーケンシャルに実行されるかどうかはわからんのだけど。
102 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 19:56:55 ] どう考えてもシンプルでコストが安いしな。 今のマシンなら楽勝って考えるてるなら、 自分で作ったらいい。環境はあるんだから。
103 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 20:19:49 ] UIがマルチスレッドなら、特別な仕掛けがない限り UIコンポーネントから取得するデータは、取ってきた時点で 既に古いものになっていると考えなければならない。 こんなもので何を決められようか?
104 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 21:50:54 ] 複数のインターフェースを使ってボタンをクリックすることで 画面の切り替えをしたいのですが、この場合CardLayoutを使うと思うんですが 本を読んでもイマイチ分からないので、使い方を教えていただけませんか? それともCardLayout以外にも画面の切り替えを行う方法はありますか? よろしくお願いします
105 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 21:57:06 ] JTabbedPaneはどう?
106 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 22:29:15 ] >>105 教えていただきありがとうございます タブを使うやり方もいいんですが、 できれば、ボタンをクリックしてカードを 切り替える感じのものがいいのですが ありませんでしょうか?
107 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 22:29:35 ] private static final String TEISUU = "定数"; と定義された定数に対して インスタンスメソッドの中から、クラス名を付けずにTEISUUにアクセスしてもエラーになりません。 これは何故でしょうか? 具体的には、 class Test{ private final static String TEISUU = "定数"; public void method(){ String var; var = TEISUU; System.out.println(var); } と書けてしまいます。 文法的には var = Test.TEISUU; とすべきではないのですか? private final String TEISUU = "定数"; としても解決すると思うのですが、 自分が勉強した限りではどの本見ても定数にはstaticを付けてるんですよね。 定数にはstaticを付けるというのがお決まりなのでしょうか?
108 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 22:45:57 ] Javaでどの様にハッキングするの? どの位の所まで分かる様になったらハッキング系の事出来るの? JavaでLAN周りを調べる事何て出来るの? どの様にJavaにネットと通信出来るように書くのか気になる。
109 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 22:52:45 ] >>107 TestクラスのTEISUUの値は,インスタンスの状態にかかわらず常に"定数"になるんでしょ? それならstaticにするのが自然。メソッドの場合も同様の考え方をする。 Test.を省略できるのは同じクラス内だから。そういうルールだから仕方ない。
110 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 22:53:14 ] >>107 書けてしまうのは文法的に誤っていないから。 文法的に誤っているということだがJLSのどこに書かれているの? static finalが付いているものは変更不可のクラス変数。 インスタンスごとの変更不可変数であればstaticは不要。
111 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 23:39:55 ] >>109 >>110 ありがとうございます! 自分のクラスのstaticフィールドにアクセスする場合は クラス名省略できるんですね。知りませんでした。 よく考えてみたらインスタンスごとの定数ってあまり考えられないですね。。 単純に例が少なかったのかな。
112 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 23:43:04 ] >>73 レスサンクス。 同じブラウザで一度フォームデータをsubmit、ブラウザの戻る、またsubmit っていう操作を何回もしていると、不定期でおきているから、 cookieが未設定とか、ブラウザで無効にしているってのはなさそうなんだよね。 CookieはsetMaxAge(-1)でブラウザが閉じられるまでは消えないから、有効期限ってのも 関係なさそうだし・・・。 Hoge test = new Hoge(HttpServletRequest); って感じで、Hogeクラスのprivateメンバに保持しておいて、 Hogeクラスのメソッド内で使おうとすると、時々nullになるんよ。 よくわからなかったから、メンバに持たせるのはrequestそのものじゃなくて、 コンストラクタ内でgetHeader("cookie")やってStringメンバに入れておくことにしますた。
113 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 23:43:40 ] 定数をインスタンス毎に持っても意味ないからstaticにするぐらいにしか考えてないぜ
114 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 23:46:52 ] Javaが趣味って奴いるの? 個人レベルで何する気なんだ?Javaで
115 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 00:17:07 ] >>112 待て、おまえはServletにおけるオブジェクトのライフサイクルをちゃんと理解してるのか??? そのHoge testはどこに定義されている?
116 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 00:43:27 ] >>115 Hoge testはHttpServletのdoPost内でインスタンス化されて、 threadとして動いてます
117 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 01:10:01 ] スレッドってよくわかんねーーー スレッドセーフなクラスって何だよ… 横槍ごめんなさい。
118 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 01:19:43 ] >>116 よくわからん。該当部分のコードを見せろ。Hoge testの定義位置も含めて。 HttpServletRequest/HttpServletResponseの生存期間はHTTPのリクエストを受け付けてからレスポンスを返すまでってことは理解してるよな?
119 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 01:51:32 ] >>114 Javaが趣味でもおかしくはないと思うが それより、趣味の何らかの計算とか集計とかに使うと非常に便利>Java
120 名前:デフォルトの名無しさん [2008/11/21(金) 01:52:00 ] 引数の戻り値について、質問です。 class Cara{ int num; double gas; int setNum(int n){ num = n; System.out.println("車のナンバーを" + num + "にしました"); return n; } double setGas(double g){ gas = g; System.out.println("車のナンバーを" + num + "にガソリンの量を" + gas + "にしました"); return g; } void show(){ System.out.println("車のナンバーは" + num + "です"); System.out.println("ガソリンの量は" + gas + "です"); } }
121 名前:デフォルトの名無しさん [2008/11/21(金) 01:57:03 ] class Sample_return{ public static void main(String args[]){ Cara car1 = new Cara(); car1.show(); car1.setNum(1234); car1.setGas(20.5); //戻り値 int nums = //←戻り値を代入したい double gass = //←戻り値を代入したい System.out.println("サンプルから車を調べたところ"); System.out.println("ナンバーは" + nums + "ガソリンの量は" + gass + "でした"); } } これらの、ソースで "int setNum(int n){" や"double setGas(double g){"のメソッドように 引数の受け取りメソッドに戻り値を付けて、返す事はできないのでしょうか? 要するに、引数の受け取り処理とreturnの処理を、同時に・・・ 因みに、そうした場合、どうすればいいかわかりません "//戻り値 int nums = //←戻り値を代入したい double gass = //←戻り値を代入したい " ご教授、お願い致します。
122 名前:120-121 [2008/11/21(金) 02:04:00 ] やはり、このように class Cara{ int num; double gas; void setNumGas1(int n, double g){ num = n; gas = g; System.out.println("車のナンバーを" + num + "にガソリンの量を" + gas + "にしました"); } int getNum1(){ //int型の値を返すメソッドです System.out.println("ナンバーを調べました"); return num; //呼び出し元に値を返します } double getGas1(){ //double型の値を返すメソッドです System.out.println("ガソリンの量を調べました"); return gas; //呼び出し元に値を返します } void show1(){ System.out.println("車のナンバーは" + num + "です"); System.out.println("ガソリンの量は" + gas + "です"); } }
123 名前:120-121 [2008/11/21(金) 02:07:29 ] class Sample_return{ public static void main(String args[]){ Cara car1 = new Cara(); car1.setNumGas1(1234, 20.5); int number1 = car1.getNum1(); //戻り値を持つメソッドを呼び出します、戻り値を変数numberに代入します double gasoline1 = car1.getGas1(); //戻り値を持つメソッドを呼び出します、戻り値を変数gasolineに代入します System.out.println("サンプルから車を調べたところ"); System.out.println("ナンバーは" + number1 + "ガソリンの量は" + gasoline1 + "でした"); } } 受け取り処理のメソッド"void setNumGas1(int n, double g){" 戻り値の処理メソッドは、"int getNum1(){" "double getGas1(){" のように分けないと、ダメなのでしょうか?
124 名前:デフォルトの名無しさん [2008/11/21(金) 04:02:00 ] 万能主義はあなたの方でしょw 実際は、シングルスレッドすることは全てのメソッドをsynchronizedにするのとほとんど変わりませんよ。 それにsynchronizedは同期のことでしょ?あなたはスレッドを分かってないようですね。 勘違いしているようですけど別にswingのスレッドとかの設計に文句があるんじゃなくて、 どうしてシングルスレッドにこだわるのかって事です。もともとswingはコンポーネントなのであってguiが前提なわけで、マルチスレッドで設計するものかと思います。 swingはピュアjavaというよりも全てpaintで済ますって理念なんで分からなくもないんですけど・・・
125 名前:デフォルトの名無しさん [2008/11/21(金) 04:11:01 ] >>95 通信の処理とかがGUIと関係あるかではなくて、処理の結果をGUI(のコンポネント)が受け取ります。 それで、計算や処理など既にハード上の能力は十分ですぐ結果が出ても、肝心の表示の方がイベントまちとか シングルスレッドで0.5...1秒待たされるようじゃそのコンポネント(swing)を使うにはストレスがあります。 たまに複雑なJTableでもあるでしょ、少しもたつくことが。 swing workerにもありますが、計算結果や通信結果の受信はguiと関係なので次のswing frameworkでは切り離したわけで、 だから描画とは関係ないeventやproperty fireとかもシングルスレッドにしてるのはどうしてなのかということです。 将来が予測できるかどうかじゃなくて、マルチスレッドにしてviewを独立させないことは自分自身で未来を潰しているようにみえませんか。
126 名前:デフォルトの名無しさん [2008/11/21(金) 04:33:04 ] >>99 伝統的に、イベント処理がシングルスレッド(シーケンシャル処理)だからですか。 なんかcui(今ではwebアプリとかサーブレットとか)ではThreadを導入していても、 gui(swingツールキット? invokeLaterなど)の設計の発想は昔のcのシーケンシャル処理・構造処理のままでOO指向じゃなかったんですね。 guiの(コンポネントじゃなくて)次のツールキット設計は、その古いシーケンシャル処理からの分離してコンポネント間の独立で 正しくOO指向のツールキットでしょう。最近guiやMVCなどの概念を使って、自作のコンポネント開発してみてるんですけど、 awtパッケージやawt.Toolkitはマルチスレッド設計ですよね?それで開発しているとよく気になって、swingは描画と 関係ない処理・イベント受付が絡み合ってるみたいなんでその辺りをすっきし指せれば別に遅くもないし、 透明かも擬似的に出来るし、逆に洗練され使いやすいんですけど。 SUNがswingに関心をもたなくなって次に向いている理由もなんとなく分かります。
127 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 08:44:26 ] >>126 お前は、Sunが何故GUIのマルチスレッド化を諦めたのかをちゃんとしらべたほうがいい。 AWTは失敗だった、マルチスレッドでGUIを「正しく」実装するのは現実的には不可能だ、と言ってるんだから。
128 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 09:23:05 ] AWTはマルチスレッド対応じゃねーし、 マルチスレッド対応だから失敗したわけじゃないでしょ。
129 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 10:59:18 ] こんなGUIのフォームを作りたいんですが、 その中でいくつか質問があります。 テーブルA ボタン テーブルB ID Name ID Name [1 ][A ] [1 ][E ] [2 ][B ] (追加) [2 ][F ] [3 ][C ] (削除) [3 ][G ] [4 ][D ] [4 ][H ] 1.テーブルID項目は非表示にさせたいけどできますか? 2.テーブルAセルを選択した状態で追加ボタンをおしてテーブルBに追加したいんですが、 選択したセルの情報を取得する方法はありますか? 以上です。よろしくお願い致します。
130 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 11:16:02 ] >>129 できますか、ありますかといわれたら、できますありますと答えるしかないw
131 名前:デフォルトの名無しさん [2008/11/21(金) 11:19:12 ] >>130 やり方を教えてほしいです。
132 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 11:23:06 ] あげてすいませn
133 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 11:27:23 ] Java低速GUI Swing 8 pc11.2ch.net/test/read.cgi/tech/1227234261/
134 名前:31 [2008/11/21(金) 11:35:33 ] エクリプスにアプレットプラグイン追加してやってみたのですが >>32 と同じエラーがでます。 どうやら画像が読み込めてないようなのですがどうしたらいいのでしょうか?
135 名前:デフォルトの名無しさん [2008/11/21(金) 11:44:25 ] >>127 SUNはどうしてGUIのマルチスレッド化を諦めたんですか? GUIとマルチスレッドはあまり関係ないんで当然だと思うんですが、何を正しく実装するんでしょうか?
136 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 11:51:34 ] 起きたばっかりで書き込んで所々重大な誤字がありますね。 少し誤解があるみたいなんで直しておきましたw 計算結果や通信結果の受信はguiと関係ないので、次のswing frameworkでは切り離したわけで、 古いシーケンシャル処理からの分離してコンポネント間の独立で、まさしくOO指向のツールキットでしょう。
137 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 12:01:27 ] それでJavaFXの方はJavaとは独立してリッチ何とかと宣伝してるんでけど、結局は新しいツールキットなんですか? それともswingみたいなコンポネント(デベロパ)の延長なんでしょうか? nativeピアで透明化が可能なawt.Windowが(ネイティブ依存でも)取得できれば、 awtとjava2d,3dでなんとでも出来る感じがしますけど。ただswingがなくなる事はないでしょうけど、 java seはOS依存と思われるシステムトレイもサポートしたので、そのうちそんなwindowの取得も出来るんでしょうか。
138 名前:31 [2008/11/21(金) 12:08:34 ] 読み込み方法を変えたら無事に動きました。
139 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 13:02:16 ] >>126 webアプリがマルチスレッドになってるのはwebアプリにはクライアントが複数あるから。 基本的には 1クライアントに対して、一度に 1スレッドしか動かないようにするわけで。
140 名前:デフォルトの名無しさん [2008/11/21(金) 13:25:22 ] それと同じような構造でgui toolkit frameworkを作ればいいんじゃないですか? 今のハードならスレッドにしたところでたとえすべて同期にしたとしても全く問題ないわけで。 webやデータベース問い合わせはすぐ処理が終わりますが、paintは少し計算が必要なだけでそんなのは今のハードなら屁でもないでしょw 今の時代のguiコンポネントは、テキストフィールドとか情報表示程度なので多少もたつく程度であまり気にならいのでしょう。 プロパティ更新などのイベントとpaintは全く関係ないのでこの辺りを切り離なせばswingはかなり有用なコンポネントになるんじゃないでしょうか。 問題もわかったことなので作るのはそんなに難しくはないのですが、どっちにしてもこんな根底部分の機構は私一人ではどうにもならないものなので、誰かjava.net辺りのプロジェクトで提案してリードしてくださいなw
141 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 13:32:07 ] 不満があって知識があって明確な目標があるのに何で自分で実装して提示してみないんだろう。 最初から実用に供することのできるGUIフレームワークなんか期待していないけれど、 スレッドセーフな小規模実装を出して技術的実現性とその有用性を示して見せれば否定的意見は減ると思う。 俺としてはGUIのスレッドセーフ化をsunが諦めたのは分からんでもない。
142 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 13:33:58 ] 言いだしっぺがやるべき
143 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 13:38:11 ] >>140 それを自分自身で提案すればいいじゃないか 文句を垂れてみせるだけでもいろいろ意見が出てくるはずだぜ だれも>>140 自身にコード書いてみせろとは言わんよ
144 名前:31 [2008/11/21(金) 13:40:14 ] プログラムは>>31 と同じです。 画像を変更したら、うまく赤い枠で囲むことができなくなりました。 もっと精度よく検出するにはどうしたらいいでしょうか? 実行した画像 www2.uploda.org/uporg1799104.jpg
145 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 14:08:09 ] Executors.newSingleThreadExecutor();で処理すれば マルチスレッドの勉強しなくてもよくない?って思ったんですけど 考えが甘いですか?
146 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 14:21:16 ] 勉強しないで取捨できるって天才だな
147 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 14:21:38 ] 例えば メッセージ: 「実行時にフォーマットを行いますか?」 ラジオボタン: 「はい(デフォルト)」「いいえ」 ボタン: 「実行」 なんてダイアログがあって、次のイベントが入ってくるとします。 (1)「ラジオボタン[いいえ]をクリック」 (2)「[実行]をクリック」 この場合、入力イベントがシーケンシャルに処理されるのであれば (2)のイベントを処理する段階では(1)が既に処理されている事を概ね 仮定出来ます。ラジオボタンの現在状況を気にせず、選択状態を示す 内部変数を参照して処理を開始できます。 ところが、このラジオボタンはとても重要なので"シャッキーン"とか 派手なビジュアルエフェクトの後に内部変数を[いいえ]側に倒す実装の 場合はどうでしょう。 となると[実行]ボタンの側では処理を開始する前に、ラジオボタン等々の 処理内用に関連する全てのGUI部品向けのイベントが全て処理済みで あるか確認する必要があります。 もし個別のGUI部品が非同期にイベントを受領して処理する事が可能 なのであれば、プログラマは常に部品間の依存関係に注意して適切に ロックなどを設計する必要があります。これが結構大変。 あるいは、高度なユーザーであれば、ダイアログボックスの生成に要 する0.5秒より短い時間でいいえ「付近」と実行「付近」をカンでクリック してくるかも知れません。 ラジオボタンの生成やpaintが完了する前に[実行]ボタンがイベントを 受領してしまうと、どうでしょう。
148 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 14:22:41 ] いずれにしても上記の(1)->(2)というイベント「順」で表現された 「フォーマットはしないで、実行」という「文脈」を正しくとり 扱う必要があります。GUIの側は非同期処理で実装されていてもOK ですが、その処理内容は常に上記のイベントの入力順番を意識する 必要があります。 まとめると、ユーザー操作のイベントは個々が単発で存在している のではなく、「[いいえ]をクリック」「[実行]をクリック」とその イベント列で表現された文脈の中に存在しています。 さらにGUIを持つアプリケーションは、多くの場合内部状態をもって いるステートフルなアプリケーションです。 ステートフルなアプリケーションは非同期に入力されるイベントを 適切に取り扱うためにキューやロックを慎重に設計する必要がある、 これはGUIのみならずアクセンスカウンターからAmazonに至る 全てのウェブアプリケーションについても同じ事です。 ただGUIは内部状態の更新を引き起こすイベントの粒度がウェブに 比べより細かく、数も多いです。 また前述のようにイベント列は文脈をもっています。 この問題に対してイベント列をキューにためて順繰りに処理を行う 方法がプログラマが管理しやすい「現実的な」解として長らく支持 されてきたのだと思います。 もし現在の実装よりマルチスレッドなGUIツールキットの開発を目指 しているのであれば、個人的には入力イベントの文脈依存性をどの ように取りさばくのか、その実装アイデアに興味があります。
149 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 14:57:13 ] >>147 一つのアイデアとして、そういうことはやらない、ってのはどうかな?
150 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 15:27:18 ] >>147 1.フェイルセーフの観点からは、「フォーマットしない」をデフォルトにすべき 2.内部変数のセットは、「シャッキーン」の前に実行すべき
151 名前:デフォルトの名無しさん [2008/11/21(金) 16:23:06 ] >>150 いや・・・全くそのとおりなのですが・・・ 要はイベントの入力順を気にせず処理できるものからパクパク 処理していくと時に致命的な結果を招きかねませんよ、という事を 説明するために無理矢理作った例です。寝ないで考えたのに〜。
152 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 16:29:09 ] マルチスレッドGUI君は、自分の答えやすいレスへしか返事してないな。 なんというチキン。
153 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 16:49:31 ] >俺としてはGUIのスレッドセーフ化をsunが諦めたのは分からんでもない。 デッドロックとかも心配しるようですが、スレッドセーフは同期の問題なので、guiのpaintとは全く関係ありませんよ。 これでもまだ分からないなら、たぶんスレッドの本質部分があまり分かってないんじゃないでしょうか。 少なくともguiやpaintを上手く設計したところで、デッドロックがなくなるわけではないでしょw せっかくOO指向をサポートしている言語なのに、paintを従来型のツールキットにあるイベント処理(ロジック)か何か勘違いしてるんでしょうね。
154 名前:デフォルトの名無しさん [2008/11/21(金) 16:57:41 ] >>147 たぶんそれは、jsr提案で次のswing frameworkにあるSwignWorkerで分離してると思うんですけど。 イベント処理つまりイベントのデータの取得、計算、結果の過程と、描画paintを区別・分離した実装 のことを書いてあるんですがお分かりになりませんでしたか? 実装にもよると思いますが、OO指向的には、計算とその表示は別に連動している必要はありませんよ。 どうしても連動させたいならsynchronizedでしょうかね。といってもスレッドのことわかってないみたいなんで、 そういう方はリンク先にもありましたけど、you do not have to understand the thread or sync deeply.とかなんですかねw