【初心者】Java質問・相談スレッド115【歓迎】at TECH
【初心者】Java質問・相談スレッド115【歓迎】 - 暇つぶし2ch800:797
08/06/03 20:34:03
>>799
> 大丈夫だと思うが、とにかく落としてきて軽く動かしてみ
とりあえず動くようで安心しました。さっそく、インストールしてみます。
回答ありがとうございます。

801:デフォルトの名無しさん
08/06/03 21:21:38
>>598
5/3するときにはそれがdouble型に代入されるなんて気にしちゃいない。
つーか、思ってるだけじゃなく、キャストのありなしで結果が違うことくらいは試せ。


802:デフォルトの名無しさん
08/06/03 21:34:41
>>798
URLリンク(www.lcv.ne.jp)
ここの「5割る2は2?」って所を見ると良いよ。

803:デフォルトの名無しさん
08/06/03 21:46:15
>>802
ありがとうございました。
これで寝れそうです。

804:デフォルトの名無しさん
08/06/03 21:48:18
>>803
マルチ先にも断っとけよ。

805:デフォルトの名無しさん
08/06/04 01:39:53
設計に関して質問があります。

今作っているソフトの中でJButtonやJTextなどのオブジェクトが多数出現します。
こうした場合配列にしておくと
JButton button[]=new JButton[BUTTONNUM];
for(int i=0;i<button.length;i++)
{
button[i].~
}
みたいに一括で処理できるものもあるので便利なのですが、
個別の名前(例えばdeletebutton)を付けた場合に比べて
button[1]、button[2]では何のボタンか分かりづらい面があります。

こういう場合、一般的にor皆さんの場合どうしているか教えてください。

806:デフォルトの名無しさん
08/06/04 01:43:31
ちなみに今現在の処理方法ですが、
HashtableとgetIndex(String)という関数を作って、

Hashtabel hash=new Hashtable();
hash.put("delete","0"");
hash.put("prev","1");
・・・
public int getIndex(String buttonname)
{
return Integer.parseInt((String)hash.get(buttonname));
}
button[getIndex("delete")]という風にしています。

807:デフォルトの名無しさん
08/06/04 03:46:46
自分では使ったことのない機能:
enum MyButton { DELETE, ... }

... button[MyButton.DELETE] ...
(いきなり質問の条件を無視してみる)

808:デフォルトの名無しさん
08/06/04 04:08:34
>>806
そういうハッシュテーブルの使い方をするくらいなら、
間接的に配列のインデックスなんかに結びつけるんじゃなくて、
HashMap<String, JButton> buttons = new HashMap<String, JButton>();
buttons.put("delete", new JButton());
buttons.put("prev", new JButton());
...
buttons.get("delete").~
みたいに名前とインスタンスを直接結び付けておいてもいいような。
>>805のように一括して処理したいようなループを回すときは、
for (JButton button : buttons.values()) {
button.~
}
のようにできるし。

809:デフォルトの名無しさん
08/06/04 04:30:13
>>807
たぶんそれコンパイルできない
Cの列挙型ではないからもしやるならbutton[MyButton.DELETE]でなくbutton[MyButton.DELETE.ordinal()]だ

810:デフォルトの名無しさん
08/06/04 08:03:06
>>805
個別の名前をつけて配列にも入れておけばいいじゃない
JButton deleteButton = new JButton();
JButton prevButton = new JButton();
...
JButton button[] = { deleteButton, prevButton, ... };

811:デフォルトの名無しさん
08/06/04 08:45:22
ボタンいくつ貼り付けてるの?

812:デフォルトの名無しさん
08/06/04 11:26:13
>>810
たぶん、そういう生成もループで済ませたいんじゃないかな。わかんないけど。
たしかに「多数」ってどのくらいなのか気になるw

813:デフォルトの名無しさん
08/06/04 12:11:24
>>805
一括に処理したいというのと個別に名前で指定したいという要求はバッティングするんじゃ?

本当に希望しているのは、個別に指定したいけど、コード量は減らしたいってだけじゃないの?

それなら、
private JButton getButton(String name,...){}
JButton delete = this.getButton("削除",...)
みたいなビルダーメソッドを作ればいいのでは

814:805
08/06/04 12:57:50
皆さんありがとうございます!
ですね、一括で処理したいのは生成も含めて、
パネルへの追加とかフォントの指定とかまとめて共通の処理を行う部分で、
個別に判断する所というのはActionListenerを実装したりする部分なんかです。
色んな方法を聞けて勉強になりました、列挙体に至ってはJavaであることを知らなかった…。
今日学校からやってみます、本当にありがとうございます!

ちなみにリネーマ&ファイル整理用のプログラムなのでボタンは今は
プレビュー、リネーム、ファイル検索、削除、移動、ディレクトリ表示くらいですが、
テキストフィールドの方が
ワイルドカード、正規表現、前方一致、後方一致、ユーザ定義用etcとたくさん指定出来るように作ってあって11個くらいといった感じでしたw

815:デフォルトの名無しさん
08/06/04 17:03:17
>>57-58を見て思った。

>>57のような意味不明なレスをすると自分のレス番号が該当になったとき
>>58のように「おかしい」とおもわないといけない儀式でもあるのか?

おかしいと思ってる>>58まったく理解できないのだが。
別の意味でおかしいとは思うけどさ

816:デフォルトの名無しさん
08/06/04 17:07:34
君がThreadとか理解してるなら気にしなくていいんじゃない?

817:デフォルトの名無しさん
08/06/04 17:09:58
結局ビルダーパタンで落ち着いたのね。
せいぜいそれぐらい(11個)とか思ったけど、チェックボックス(とラベル)が100個超えてるUIのパターンもあるから。
それならソースコード11行とか100行にわたり書けばいいんじゃないかと思うけど。

818:デフォルトの名無しさん
08/06/04 17:27:06
ここで聞くことかどうかわからんが。

大昔、いろんなラベルがついた箱が線でくっついて
うにゃうにゃ(バネモデルか何かで)動くデモってのを見た記憶があるんだが、
うまく見つけられなくて困り中。

誰か在処か名前をご存じでしたら教えてください。


819:デフォルトの名無しさん
08/06/04 17:39:42
スレッド番号100から、スレが経った日付を列挙してみた。
100 2007/03/31
101 2007/04/30
102 2007/05/29
103 2007/06/27
104 2007/07/27
105 2007/08/28
106 2007/09/19
107 2007/10/18
108 2007/11/07
109 2007/11/25
110 2007/12/15
111 2008/1/13
112 2008/2/8
113 2008/3/1
114 2008/4/5
115 2008/5/12
Javaスレの進行速度は月1ペースか。今から4年ほど前はスレが50くらいだったのに
急激にスレの消費速度が加速していって2007年3月末の時点で100になったときは
そのスレッドの消費速度の速さには驚いたものだ。

Java登場当初にはAppletの影響でJavaは遅いなどと言われC/C++プログラマの間でも
不評が多く、プログラム板、プログラマ板で頻繁にJava叩きが行なわれていたにも関わらず、
これほどにまでJavaの知名度の人気が上がるとは誰が予想しただろうか。M$が2000年にC#を発表した
とき、一部の者やM$の関係者は、「これからはC#が普及し、Javaは衰退する」と言っていたにもかかわ
らず、あれから8年経った今でもJavaは衰退する様子を見せず、後から登場したC#はほとんど普及し
ていないという有様。

気がつけばJava関連の求人も毎年毎年増え、Javaだけでも食うに困らない状況にまでなった。
書店のコンピュータ関連書籍コーナーにはJavaだけで占められた本棚が大きく占有していった。
今では書店ではAjaxやWeb関連書籍が多いが、WebにJavaを利用することはもはや当たり前に
なった感がある。M$のC#を揺るがした背景にはGoogleの影響が少なからずあるのではないかと思えてくる。

820:デフォルトの名無しさん
08/06/04 17:40:44
この調子で行けば、2010年にはスレは
スレは12月で122、2009年1月で123、2010年1月で135、2011年1月で147、
2012年1月で159、2013年1月で171、2014年1月で183、2015年1月で195、
2016年1月で207、2017年1月で219、2018年1月で231、2019年1月で243、
2020年1月で255にまで伸びるだろう。

その頃までに、2chがあるのか、今の2chが存在しうるかどうかはわからないが。
blogなどの外部のコミュニティに徐々に質問者が移行するときがやってくるだろうか?

Javaは何十年経っても古いプログラムを動かすことができる。
だからその頃にこのスレがなくなってもJavaは相変わらず健在だろう。

821:デフォルトの名無しさん
08/06/04 17:41:45
>>815
なんか口に出さないで指指された気分になるじゃん。
m9(^Д^)

822:デフォルトの名無しさん
08/06/04 17:43:24
懐かしいAAだな

823:デフォルトの名無しさん
08/06/04 18:25:57
4年も張り付いてるみたいだしw

824:デフォルトの名無しさん
08/06/04 18:29:03
月に50万円稼ぐ派遣の狼君が捕まっただろ。
人殺し食っちゃったんだっけな?

C++/C#好きで、宗教(GNU?)狂信者だって噂だよw
そんなやつと同じにされてもね。

825:デフォルトの名無しさん
08/06/04 18:32:36
どこかのIT記事で「天才20歳(何々賞受賞!)」とかの奴もいたけど、似たような狼君じゃないの。


826:デフォルトの名無しさん
08/06/04 18:35:07
>>818
JDKに付いてるデモなら多くないんだから順番に試していけばいいじゃないかw
たぶんアプレットのデモの中のGraphLayoutかな?

827:デフォルトの名無しさん
08/06/04 18:44:38
>>808>そういうハッシュテーブルの使い方をするくらいなら、 

そういうひねくれた方法を見つけるほうが実は凄いんだけどね。(実用でもないし、使わないけど)

>>806


828:デフォルトの名無しさん
08/06/04 18:53:39
>826

おお、まさしくコレだ。
てっきりLayoutManagerがらみかと思ってスルーしてた。スマン&&ありがとう。



829:デフォルトの名無しさん
08/06/04 19:08:37
>>827
どういう意味だ??

830:デフォルトの名無しさん
08/06/04 19:18:13
バグの元になるでしょ。

831:デフォルトの名無しさん
08/06/04 21:42:25
>>824
おいおい、マジかよ。なんでそこまで知ってるんだ。
どこかのスレで話題になってるのか?

832:デフォルトの名無しさん
08/06/04 21:44:50
>>808 >>827見て思った。

>>808のコードは
ハッシュでボタンを区別しているようだが・・・

これこそ、enumを使うべきじゃないかね


833:デフォルトの名無しさん
08/06/04 21:54:06
> するくらいなら
だから本当は>>808みたいなのもアレだけどハッシュならハッシュで別に添え字を値にしなくてもってことじゃない?
しかも整数値でなくてわざわざ文字列を値にしているし

834:デフォルトの名無しさん
08/06/04 21:56:54
>>831
板違いの話題だからマ板池

835:デフォルトの名無しさん
08/06/04 22:27:38
>>833
誰かみたいに死体の肉を食べちゃったわけじゃないし、まーいーじゃん。

836:デフォルトの名無しさん
08/06/05 02:26:21
>>823
張り付くってどういう意味か。久しぶりにJavaスレを見たんだけどな。
気がつけばスレがここまで進んで驚いているんだよ。

2chで初めてJavaスレに書き込みをしたのは
もっと前だけどな。

837:デフォルトの名無しさん
08/06/05 02:26:56
>>834
なんとなくどこのスレかはわかったが。
誘導スレを紹介してくれないか

838:デフォルトの名無しさん
08/06/05 02:48:44
ここはスルー?
助言求む!

839:デフォルトの名無しさん
08/06/05 03:41:54
>838
おまい誰だよ。煽りとかじゃなくてマジで

840:デフォルトの名無しさん
08/06/05 05:33:41
誤爆か?

841:デフォルトの名無しさん
08/06/05 10:52:56
つまんねー

842:デフォルトの名無しさん
08/06/05 12:28:45
swingプログラムの中でメニューやボタンから別のウィンドウを表示させる際に
class Window2{
Window2(String title){
JFrame frame2=new JFrame(title);
・・
frame2.setVisible(true);
}
}
こういう風にもう一つのクラスを作ってnewした場合、
setCloseOperation(JFrame.EXIT_ON_CLOSE)を設定すると
呼出し元のウィンドウも含めてプログラム全体が終わってしまいます。
WindowListenerで設定しようかと思ったのですが、
明示的に破棄するウィンドウを指定するにはどうしたら良いのでしょうか?

843:デフォルトの名無しさん
08/06/05 12:30:56
DISPOSE_ON_CLOSE のこと?

844:デフォルトの名無しさん
08/06/05 12:37:46
DISPOSE_ON_CLOSE 相当の処理を自分でやりたいってことなら、
DO_NOTHING_ON_CLOSE にして windowClosing で dispose を呼ぶ

845:デフォルトの名無しさん
08/06/05 12:38:43
>>843
あああすいません、それですね!
何かハンドル渡してウィンドウ指定して破棄みたいなやり方かと思ったらあったのかorz

846:デフォルトの名無しさん
08/06/05 12:46:56
>>833
添え字というかなぜかStringになってるところが
かなりヤバイね

847:デフォルトの名無しさん
08/06/05 14:45:25
JSONみたいにXMLのマージを行うことの出来るJavaのライブラリってある?

848:デフォルトの名無しさん
08/06/05 16:22:02
eclipseでJavaの開発を始めたばかりのひよっこです
JUnitの使用に慣れておけ、と言われました
明日一日使ってJUnitの勉強をするつもりですが、参考になるサイトがあったら教えてくださいです

849:デフォルトの名無しさん
08/06/05 16:29:20
いった奴に責任があるからそいつに聞いておくんなさいまし。

850:デフォルトの名無しさん
08/06/05 16:44:22
サンのJDKとOPENJDKってやつは同じものなの?
どっちもフリーで使える?

851:デフォルトの名無しさん
08/06/05 17:00:39
>>721
今更だけど。。もしそこで内部の配列をコピーしなかったら、
要素が増えて拡張されたときに一方の配列がとりかえられて、泣き別れになるよね。

852:デフォルトの名無しさん
08/06/05 17:02:46
ていう以前に要素数のカウンターが別管理になるか

853:デフォルトの名無しさん
08/06/05 17:17:00
JUnitとか意味ない

854:デフォルトの名無しさん
08/06/05 17:30:02
大体、単体テストツールの使い方なんて
教えてくれるもんじゃないの?

855:デフォルトの名無しさん
08/06/05 17:30:12
>>721 >>851
というかEffective Javaを読めとしか

856:デフォルトの名無しさん
08/06/05 17:30:47
>>848
@ITとJUnitでググレ

857:デフォルトの名無しさん
08/06/05 17:33:07
JUnitの使い方だけ覚えてもServletやDBやHTTPセッションのテストは
容易ではないからなあ。

JUnitだけでなくJakarta Cactus、DBUnit、HTTPUnit、MockObjectの
使い方まで覚えないといけない。

どうせならTestNGも覚えておくことをお勧めしておく。
JUnitはJUnit4が出たのでそれも覚えておくことをお勧めしておく。
ついでにAntやMavenからJUnitを起動する方法も覚えておくことをお勧めしておく。

858:デフォルトの名無しさん
08/06/05 17:41:39
JUnitとかのテストツールの使い方覚えるよりも、テストの書き方覚えたほうがいい。

859:デフォルトの名無しさん
08/06/05 17:57:11
テストの書き方はチーム内のルールがあるのでは?

「JUnitに慣れておけ」と言った当事者に質問しろ


860:デフォルトの名無しさん
08/06/05 18:45:34
つまり名目的なJUnitのパターンを研究すれば回避の道が開けるかもしれないわけか

861:デフォルトの名無しさん
08/06/05 19:50:54
Cactus や HttpUnit は、めんどくさいだけで
あまり意味がないと思うのが本音。

テストケースを通すばかりのクラスになり、画面を見れば一目瞭然の問題の
エラー、あるいは仕様的にグレーだけど明らかに改善したほうがいい問題
に気がつかないことが多い。
テストケースの作り方が悪いのだろうけど。あと見た目の問題とか。

顧客に「テストの時間一杯取ったのに、こんなのにも気づかなかったの?」と怒られる。

うちのチーム(Webアプリ)は、Unit テストは Serviceクラス、Utility クラス、DAO まで。
UI レイヤ(Struts だったら、Actionクラス、ActionForm、jsp)は、Excel でテスト仕様書起こして
手でやっている。

ケントベックの言う、「いつでも、再帰的にテストをできるようにする」はUIレイヤでは実現できてないけど、
このやり方が、かけるコストと、目的に対する効果が一番バランスが取れていると思っている。

テストクラスの実装にいつも時間がかかるのをどうにかしたいと思っていて、
slenium とか fitness という単語は知っているのだけど、まだ試してみてない。

というわけでみなさんどうしてますか?



862:デフォルトの名無しさん
08/06/05 21:44:52
ほぼ>861と同様だけど、DAOは検索系しかやらんな。
S2Daoなり使っていると特に。
逆に画面系は入力チェック系だけはHttpUnitとか使う

863:デフォルトの名無しさん
08/06/05 22:24:21
>>861
一番面倒くさいのはCactusだな。

そんでみんなしてMockObject使って
HttpServletResponseとHttpServletRequestオブジェクトを偽装して
Servletのテストしているんだよな。

864:デフォルトの名無しさん
08/06/05 22:28:04
>>861
Seleniumでググってみたら
これはなかなか使い勝手がよさそうだ

865:デフォルトの名無しさん
08/06/05 22:37:29
あんこ1
あんこ2

あんこ3
あんこ4


あんこ5
あんこ6

あんこ7

このようなテキスト構成のときに
以下のように、改行が2つ続くとき改行したいのですが
どのような制御をすればよいでしょうか

あんこ1、あんこ2、あんこ3、あんこ4
あんこ5、あんこ6、あんこ7

866:デフォルトの名無しさん
08/06/05 22:52:48
テキストはファイルからか?
readLineで空文字だったらフラグを立てる
次も殻文字だったら改行する
ってループではどうかね

867:デフォルトの名無しさん
08/06/05 23:55:37
>>865
とりあえず、マルチポストはやめとけ

868:デフォルトの名無しさん
08/06/06 00:35:42
あんこってなんだ?
うんこのオマージュか?

869:デフォルトの名無しさん
08/06/06 02:51:18
マルチ氏ね

870:デフォルトの名無しさん
08/06/06 07:14:34
はわわー

871:デフォルトの名無しさん
08/06/06 12:56:12
基礎的な質問で申し訳ないのですが
HTTPURLConnectionのtimeout,wait,retryの上手なやり方が有ったら教えていただけ無いでしょうか
TimeoutExceptionを活用すべきなのかどうかも分からない素人です
どうかお願いします

872:デフォルトの名無しさん
08/06/06 13:12:56
まずTCP/IPとHTTPを学んで来い話はそれからだ

873:デフォルトの名無しさん
08/06/06 13:48:52
あるjavaアプリがあって、一連の処理がどのようなクラスのメソッドを実行してきたかをダンプしたいと思っています。
Linuxでいうところのstrace見たいなものです。
プロファイルというものを知りましたが、使用されてメソッドのサマリの表示だけで、
呼び出し順番がわかりません。
実行した順番に呼ばれたメソッドをダンプできる方法はありますでしょうか。

874:デフォルトの名無しさん
08/06/06 13:54:14
872
分からないなら無駄な返答は不要です

875:デフォルトの名無しさん
08/06/06 13:59:24
>>872
Thread.currentThread().getStackTrace() を使う。
あとはデバッガで起動するとか。

876:875
08/06/06 13:59:52
失敗。>>873 ね。

877:871
08/06/06 14:14:13
あさっての答えが返ってきたかと思ってびっくりしたよ
気をつけてね

878:デフォルトの名無しさん
08/06/06 14:23:23
Java "execution trace"
みたいな話じゃないの。

879:デフォルトの名無しさん
08/06/06 15:41:03
JavaでWinのexplorerみたいなのを作りたいのですが、
どうしたら実装出来るでしょうか?
左の方はJTreeで頑張れば出来そうなのですが、
右の選択したディレクトリの中身が表示される部分がよく分からないです。


880:デフォルトの名無しさん
08/06/06 15:44:44
JListでいいんじゃ?

881:デフォルトの名無しさん
08/06/06 15:50:28
>>875
それは可能なのですが、ダンプをしたいまま差にそのときの、になってしまいます。
一連の処理(時間)の間に呼ばれたメソッドの履歴が取得したいです。
詳しくは解かりませんが、下記のページで実行結果からシーケンス図を作成しています。
イメージとしては、これのメソッドリストがほしい感じです。

AA.aa()
BB.aa()
AA.bb()


882:デフォルトの名無しさん
08/06/06 17:39:39
eclipse に ajdt というプラグインを入れて、
AspectJ というのを使って関数の前後でログ出力をするようにしてみたのですが、
eclipse でデバッグするのがやりづらくなりました。

ブレークポイントをはりつけても目的の処理でブレークするのが
うまく出来なくて困っています。

AspectJ を使ってもデバッグしやすい方法があったら教えてください。

883:デフォルトの名無しさん
08/06/06 20:51:32
>>881
デバッガに詳細トレースログを取る機能が無いか確認。
無いなら JPDA 使って自分でデバッガを作る。

884:デフォルトの名無しさん
08/06/07 17:16:33
OpenJDK って Sun の JDK の代わりとして充分使える?


885:デフォルトの名無しさん
08/06/07 20:16:22


886:デフォルトの名無しさん
08/06/07 20:42:09
javaのGuiにおけるレイアウトがさっぱりで全然やりたいレイアウトに出来ないので質問させてくださいorz


画面を縦三分割にしたいのですが、それぞれ等隔ではなく真ん中は広く、
またそれぞれの横幅を縮めたり伸ばしたりするレイアウトにしたいのですが
こういうのってどうしたら出来るのでしょうか?


887:デフォルトの名無しさん
08/06/07 21:10:25
真ん中は引き延ばすってこと?
それならBorderLayoutでも十分そうだけど・・・
手打ちならGridBagLayoutとかSpringLayout使えばかなりのレイアウトは実現できるよ。

888:デフォルトの名無しさん
08/06/07 21:34:42
それは、レイアウトじゃなくてコンポーネントじゃないか?

889:デフォルトの名無しさん
08/06/07 21:45:03
>>887
レスありがとうございます。
そうです、幅は1:3:1くらいで真ん中だけ大きくしたくて、
かつブラウザのサイドバーみたいに横幅を調整出来るようにしたいのです。
GridBagLayout、難しそうだけどググりながらちょっとやってみます。

>>888
すいません、正直どういう意味か分からないですorz

890:デフォルトの名無しさん
08/06/08 00:45:31
境界をつまんでサイズ調整できるやつはJSplitPaneな。


891:デフォルトの名無しさん
08/06/08 02:26:34
>>890
ありがとうございます!!
頭悪すぎてこんな時間までかかってしまいましたがなんとか出来ました!

しかしJavaはC/C++に比べて簡単にGui部品が使えるのに、
レイアウトだけは非常にやっかいですね…。


892:デフォルトの名無しさん
08/06/08 02:38:36
レイアウトの簡易さはC#にかなわないなJavaは

893:デフォルトの名無しさん
08/06/08 02:53:33
C#に限ったことではないが、固定配置+Dock/Anchor方式は
直感的に自由度の高いレイアウトが出来るからな

894:デフォルトの名無しさん
08/06/08 04:49:43
しかし一度は位置したコンポーネントを動的に動かしたりは出来ない。

895:デフォルトの名無しさん
08/06/08 06:19:46
NetBeans6のレイアウト機能はほぼ直感的にレイアウトできるようになっている

896:デフォルトの名無しさん
08/06/08 09:14:21
ま、レイアウトは言語そのものの問題じゃないから。

897:デフォルトの名無しさん
08/06/08 10:05:09
一度配置?

898:デフォルトの名無しさん
08/06/08 11:58:01
C#というか.NETも、Swingのような窓サイズに合わせた動的配置のコンポーネントが用意されたよ。Ver.2.0くらいから。
しかしあまり使われていないようだ。

899:デフォルトの名無しさん
08/06/08 22:18:36
javaじゃ動的レイアウトがあたりまえだからなぁ。


900:デフォルトの名無しさん
08/06/09 01:46:45
C#はあくまでもjavaの模造品の域を超えてないからなあ
Cの方は次に期待だよな

901:デフォルトの名無しさん
08/06/09 02:05:54
X-WindowsやTKをベースに考えるなら動的レイアウトなのは自然だよね。
WindowsFormのDockプロパティはオマケみたいなもので、
動的レイアウトはWPFで全面採用になってる。
ただ動的レイアウトはポトペタ系のツールが作りづらいのが難点。

902:デフォルトの名無しさん
08/06/09 02:47:39
それで最終的にはCUIに仕上がるんですね。わかります。

903:デフォルトの名無しさん
08/06/09 11:16:33
cは廃れるだろうね

904:デフォルトの名無しさん
08/06/09 12:23:20
X-Windowsにはつっこんでいいの?

905:デフォルトの名無しさん
08/06/09 13:00:21
sのあるなしだけだったらつまらないからほってたほうが
他にあるならどぞ

CはC++と互換の無いC99はいらない

906:デフォルトの名無しさん
08/06/09 14:24:58
あるTextFieldに入力するとタイプ毎に任意のJLabelにその文字に
規定の変換がされたものを表示されていくプログラムを作ろうと思ったのですが、
何故かタイプとラベルに表示される文字に時間差があります。

具体的にはこういうコードを書くと、

public void keyTyped(KeyEvent e) {
System.out.println("タイプされた文字:"+e.getKeyChar());
System.out.println("表示文字:"+example.getText());
exlabel.setText(example.getText());
}

出力はこうなります。

タイプされた文字:a
表示文字:
タイプされた文字:b
表示文字:a
タイプされた文字:c
表示文字:ab
タイプされた文字:d
表示文字:abc

これってどうしてなのでしょうか?

907:デフォルトの名無しさん
08/06/09 14:53:41
>>906
keyTyped()が呼ばれたときには、まだexampleへのキー入力処理が実行さ
れていないから。


908:デフォルトの名無しさん
08/06/09 15:57:20
うむ

909:デフォルトの名無しさん
08/06/09 17:07:45
>>907
なるほど、タイプ→フィールドに追加だからですね。
意識したことがなかったので気づきませんでした。
exlabel.setText(example.getText()+e.getKeyChar());
これでいけました、ありがとうございます。


910:デフォルトの名無しさん
08/06/09 17:57:49
>>909
「文字」と「文字列」を区別したほうがいいと思うけど、それはともかく
DocumentListener
というものはご存知かな

911:デフォルトの名無しさん
08/06/09 18:07:37
Javaのjava.util.regex.Patternの動作について質問です。
正規表現に文字クラス"[a-z0-9&&[3-8]c-h]"を与えたところ、
この文字クラスにマッチする文字は 'c'、'd'、'e'、'f'、'g'、'h'の6字になるんです。
これってどういう仕様なのでしょうか?
以下は、マッチする文字を表示するサンプルです。参考に他の文字クラスも表示していますが
"[a-z0-9&&[3-8]c-h]"を渡した場合の挙動だけが、なぜそうなるのか良くわからないのです。
-----
import java.util.regex.Pattern;
public class RegexTest {
public static void main(String[] args) {
printMatchingChars("[a-z0-9&&[3-8]c-h]");
printMatchingChars("[a-z0-9&&[3-8][c-h]]");
printMatchingChars("[a-z0-9&&[3-8]&&[c-h]]");
}
private static void printMatchingChars(String regex) {
Pattern p = Pattern.compile(regex);
StringBuilder buf = new StringBuilder();
for (int cp = 0; cp < Character.MAX_CODE_POINT; cp++) {
if (p.matcher(new String(Character.toChars(cp))).matches()) {
buf.append((char) cp);
}
}
System.out.println(regex + ":" + buf + ':');
}
}
-----
出力結果
[a-z0-9&&[3-8]c-h]:cdefgh:
[a-z0-9&&[3-8][c-h]]:345678cdefgh:
[a-z0-9&&[3-8]&&[c-h]]::
P.S.代理レスでの書き込みなので、返信が遅れるかもしれません。


912:デフォルトの名無しさん
08/06/09 18:54:29
URLリンク(java.sun.com)
>文字クラス
>[abc] a、b、または c (単純クラス)
>[^abc] a、b、c 以外の文字 (否定)
>[a-zA-Z] a ~ z または A ~ Z (範囲)
>[a-d[m-p]] a ~ d、または m ~ p:[a-dm-p] (結合)
>[a-z&&[def]] d、e、f (交差)
>[a-z&&[^bc]] b と c を除く a ~ z:[ad-z] (減算)
>[a-z&&[^m-p]] m ~ p を除く a ~ z:[a-lq-z] (減算)

> 文字クラス演算子は、次の順で優先順位が高くなります。
> 1 リテラルエスケープ \x
> 2 グループ化 [...]
> 3 Range a-z
> 4 論理和 [a-e][i-u]
> 5 論理積 [a-z&&[aeiou]]

これを見る限り、
[α-ω[...]]
はともかく、
[[...]α-ω]
の形がどうなるのかは書かれていない(=例外でもおかしくない?)ように見えるけど、どう?

>正規表現構文の動作の詳細については、『Mastering Regular Expressions, 2nd Edition』
> (Jeffrey E. F. Friedl 著、O'Reilly and Associates、2002 年) を参照してください。

だそーですが

913:デフォルトの名無しさん
08/06/09 19:38:14
>>911-912 BUG-BUG-SunMicro に報告、、ってどうやるの?

914:デフォルトの名無しさん
08/06/09 20:38:32
>>911
とりあえず現象だけ見ると、
[a-h0-8&&[3-9]c-z]
[a-h0-8&&[あ-ん]c-z]
[a-h0-8&&[3-9][あ-ん]c-z]
[a-h0-8&&c-z]
は、同じく
[c-h]
と等価になっちゃうっぽいね

915:デフォルトの名無しさん
08/06/09 20:57:52
>>912-914さん、返信ありがとうございます。
>>914さん、
&&の前の文字セットと、&&の後ろの定義済みあるいは[]で閉じられていない文字セットを論理積してるみたいですね。
&&の前後の文字セットの結果は無視されているような。

そして否定が付くと、(ますます良くわからないのですが)

[a-zあ-ん&&[3-8]c-h]:cdefgh:
[^a-zあ-ん&&[3-8]c-h]:: (何もマッチしない)

となります。
こんな面倒な構文使わなければいいと思われると思いますが、
正規表現からそれにマッチするランダムな文字列を生成するクラスを作っていまして
生成した文字がPatternで必ずマッチするようにしたいのです。

916:デフォルトの名無しさん
08/06/09 20:58:02
[a-h0-8&&[c-z]]
この基本形を入れとくべきか

917:デフォルトの名無しさん
08/06/09 21:08:45
>>915
「ちゃんと例外をスローしてもらわないとなあ」というのが私の感想ですがw

918:913
08/06/09 21:51:26
[^a-z&&[3-8]c-h]
[[^a-z]&&[3-8]c-h] 否定は問題ない

919:デフォルトの名無しさん
08/06/10 02:57:34
>>912
そのオライリーの本、
「正規表現 第二版」のことだよね。

ちゃんと日本語訳された本があるからそっち紹介してもいいんじゃないかと



920:デフォルトの名無しさん
08/06/10 09:48:31
[...][...]&&[...]&&[...][...]&&[...][...]&&[...]&&[...]
[...[...]]&&[...]&&[...[...]]&&[...[...]]&&[...]&&[...]
[...[...]]&&[...&&[...[...]&&[...[...]&&[...&&[...]]]]]

[...][...]&&[...]&&[...][...]&&[...][...]&&[...]&&[...]
[[...]...]&&[...]&&[[...]...]&&[[...]...]&&[...]&&[...]
[[[[[[...]...]&&...]&&[...]...]&&[...]...]&&...]&&[...]

921:デフォルトの名無しさん
08/06/10 17:20:25
>>912
正規表現 第3版 出てる。

922:デフォルトの名無しさん
08/06/10 19:59:46
そういえばそうだったあね

923:デフォルトの名無しさん
08/06/11 17:44:49
スレ違いかもしれませんが、JAVAのことで質問です。

JAVAを使える無料レンサバは何故少ない(というか無い)
んでしょうか?

924:デフォルトの名無しさん
08/06/11 17:50:27
Perlではなくて?

925:923
08/06/11 17:57:15
>>924
はい、JAVA(できればstruts)で作ったWEBアプリをレンサバ
で動かそうにも無料のがなく、有料だと高くて…。

確かにPerlもみかけませんよね。phpはどこでも使えるのに・・・ orz

926:デフォルトの名無しさん
08/06/11 18:15:47
>>925
無料では見たことがないな。


927:デフォルトの名無しさん
08/06/11 18:22:02
自分でサーバーたてちまえ

928:デフォルトの名無しさん
08/06/11 18:22:44
ただで鯖使おうって根性が間違ってる。

929:デフォルトの名無しさん
08/06/11 18:27:48
そんなに大変じゃないだろ

930:デフォルトの名無しさん
08/06/11 18:58:12
>>926-929
そうですね、やっぱり自鯖をたててみます。
レス有難う御座いました。

931:デフォルトの名無しさん
08/06/11 19:03:33
サーブレットとかってwww鯖の申請通ればあとはアパッチとかの設定だけだしな。

932:デフォルトの名無しさん
08/06/11 19:15:03
>有料だと高くて…
Tomcatでいいんだろ?月500円でも高いのか?
URLリンク(www.easytone.jp)
無料なのがないのはJavaだと自由度が高すぎてセキュリティに問題が起きる可能性が高いからだと思うけどな?
それにJavaはphpなどに比べれば難しいから需要も少ないってこともあるだろうなあ?


933:デフォルトの名無しさん
08/06/11 19:22:10
質問です

public void paint(Graphics g) {
g.drawImage();
}

上記の場合、アプレットだと public void paint(Graphics g)のgの部分はブラウザから
受け取るとあるのですが、アプリケーションの場合、オブジェクトのgはどこで作られるのでしょうか?
自分でオブジェクトgを作らなくても動くのですがどうしてでしょう?

 


934:デフォルトの名無しさん
08/06/11 19:28:23
>>932
金払ってるのに何のセキュリティが問題になるんだよwアホかおまえは

935:デフォルトの名無しさん
08/06/11 19:31:34
別に鯖缶に文句は無いけど、客を選んでるようじゃそのうち縮小していって、淘汰されるだろうよ

936:デフォルトの名無しさん
08/06/11 19:36:57
>>934
無料の場合の話だろ(wアホはおまえじゃ(w

937:デフォルトの名無しさん
08/06/11 19:37:45
>>933
ブラウザっていうか,sunの中の人がGraphicsオブジェクトを作って
それを引数に指定してpaintを呼び出すようなコードを書いてて,裏ではそれが動いてる
アプリケーションも一緒

938:デフォルトの名無しさん
08/06/11 19:40:05
>>932
あ、こんな安いレンサバあるんですね。
なるほど、ありがとうございます。

939:デフォルトの名無しさん
08/06/11 19:43:50
>>938
使ったことはないんでいいかどうかはわからないよ。
無料10日間お試しコースってのがあるから試してみたら?


940:デフォルトの名無しさん
08/06/11 19:46:26
JTreeのTreeWillExpansionListenerを使い展開時に
DefaultMutableTreeNode型のインスタンスからそのノードに至るまでの
ルートからのパスを取得したいのですが、どうやったら良いのでしょうか?

941:デフォルトの名無しさん
08/06/11 19:52:31
>>937
paintを呼び出す時に自動的に、Grapnicsオブジェクトが作られる
という事でしょうか?

942:デフォルトの名無しさん
08/06/11 19:57:15
>>936
セキュリティが問題になるとかいいのがれじゃん。無料とか言って話しをそらすなw

943:デフォルトの名無しさん
08/06/11 20:02:08
JSpinner で

普段は浮動少数(double)

~~dB(デシベル) と手打ちした時は
自動で対応する値に変換
(6dB -> 2、20dB -> 10)

というのをやりたいのですが、どんな感じで実装するのがスマートなんでしょうか?


944:デフォルトの名無しさん
08/06/11 20:07:46
>>941
違う
中の人が作って呼んでる

945:デフォルトの名無しさん
08/06/11 20:33:51
>>933
>自分でオブジェクトgを作らなくても動くのですがどうしてでしょう?

初心者的にはまあごもっともな疑問だと思う。ちょっとかみ砕いてみる。

「paintメソッドを作る」ということは、
「もし「ここに自分の姿を描いてね」と言われたらこう描く(こう対応する)、と決める」ということ。
何をどう描くかは決められるけど、何に描くべきかは外から指定される。

「paintメソッドを呼ぶ」ということは、
「「ここ(=Graphicsオブジェクト)に自分の姿を描いてね」と頼む」ということ。
どういう絵ができるかは相手次第だけど、「描く場所」はちゃんと用意してから注文する。

ふつうは、アプレットとは別に画面作りの本部(中の人)みたいなのが動いていて、
必要なときに(paint/updateを呼ぶ前に)Graphicsオブジェクトを用意する、
と考えていればいいと思う。

それ以外にも、画像に描画するGraphicsオブジェクトを生成してpaintに渡せば、
その時の表示内容を画像にできたり、というような使い方もできる。

946:デフォルトの名無しさん
08/06/11 20:36:56
>>940
JTreeの展開のどの部分のパスなのかしら?

947:945
08/06/11 20:40:48
ごめん、読んでなかったw

>アプリケーションの場合は

かw

948:デフォルトの名無しさん
08/06/11 20:57:47
>>945
文句は無いんだけど、もし君が学校か何かの講師ならイマイチ。
安物のJava教本を読んだほうがいいかな

949:デフォルトの名無しさん
08/06/11 21:05:08
ageるな厨房

950:デフォルトの名無しさん
08/06/11 21:10:47
>>946
すいません、C:\Program Files\Adobeとかいう階層があったら、
Adobeを開いた時にC:\Program Files\Adobeという絶対パスを取得してFileに渡したいという感じです。
一応ググったりしながら下のようにやってみたのですが、関数で既にそういうものが用意されていたりするでしょうか?
TreeNode paths[]=konode.get(i).getPath();
String path="";
for(int j=0;j<paths.length;j++)
path+=paths[j]+"\\";

951:945
08/06/11 21:11:07
>>948
個人的にはイマイチ講師程度ならうれしいよw

952:デフォルトの名無しさん
08/06/11 21:50:03
こういうアホ講師は得意げになっていって、後々面倒になるんだよね・・

953:デフォルトの名無しさん
08/06/11 22:13:24
>>949
怒るとすぐこんなふうになるし、こいつは短気なんだろw

954:デフォルトの名無しさん
08/06/11 22:28:56
>>950
JTreeが実際に何を象徴しているか、JVMは知らないんじゃないかしら?

955:デフォルトの名無しさん
08/06/11 22:34:36
>>939
丁寧に㌧クス。

956:デフォルトの名無しさん
08/06/11 23:03:20
>>940
TreeWillExpandListenerに渡されるTreeExpansionEventから引っ張れる、これ
URLリンク(java.sun.com)()
とは別のもの?

957:933
08/06/12 06:07:03
ありがとう

958:デフォルトの名無しさん
08/06/12 14:33:54
すいません、最近javaをはじめた者です。
buf[i+1]<<8|buf[i]&0xFF
これの"|"は何を意味しているのですか?

959:デフォルトの名無しさん
08/06/12 14:36:55
論理和

960:デフォルトの名無しさん
08/06/12 14:55:12
>>958
ビット単位のOR

961:デフォルトの名無しさん
08/06/12 15:20:06
たぶんバグw

962:デフォルトの名無しさん
08/06/12 15:39:46
jsp:invokeの意味が全然わからないんだが、
これって要するに他言語で言うeval?

jsp:doBodyとのちがいもわからん

963:デフォルトの名無しさん
08/06/12 15:58:14
>>958
他のは分かるけど、ということ?なんか不自然な気が

964:デフォルトの名無しさん
08/06/12 16:29:31
>>962
JSPはほとんど知らないけど、
URLリンク(java.sun.com) <jsp:doBody>
URLリンク(java.sun.com) <jsp:invoke>
このへんざっと見る限り、
・doBodyは、そのタグで囲まれた部分全体を(フツーのJSP文法で?)解釈して処理する
・invokeは、タグの中身に複数のfragment(attributeの一種らしい)があるような複雑な構成で、
 個々のfragmentを指名して、その内容をdoBody的に処理
みたいな感じ?とすれば「全部eval」と「一部eval」ということになるかもしれんね。

965:デフォルトの名無しさん
08/06/12 17:28:58
会社の経費精算システムがjavaアプリで作られており、Windowsマシンで動いております。
作りが悪くて各項目ごとに、出発・到着・金額はいいとして、国や日本円とかをいちいち
入れなくてはならず、毎回入れる項目はだいたい同じなのでスクリプトで自動入力させたいのですが
javaアプリのフォームにデータを入れてボタンをクリックさせるツールとか方法は
あるのでしょうか?
vbscriptとか自動入力クリックツールとかはjavaアプリは全然動かすことができません。

966:デフォルトの名無しさん
08/06/12 17:31:53
何の作りが悪いって?

967:デフォルトの名無しさん
08/06/12 18:12:26
入力した整数を自動的に因数分解するプログラムを作るにはどうすればいいのでしょうか

968:デフォルトの名無しさん
08/06/12 18:16:28
>>967 自分が手計算で因数分解するときの手順をそのままプログラムで書けば良い

969:デフォルトの名無しさん
08/06/12 18:19:53
>>967
1は任意の整数xの約数であるから、x=1・xと因数分解できる。■

Java 素因数分解
でぐぐるとか?

970:デフォルトの名無しさん
08/06/12 18:29:02
■は一体何の意味?

971:デフォルトの名無しさん
08/06/12 18:31:17
>>968
>>969
すみません。もう少し勉強しなおしてきます。

972:デフォルトの名無しさん
08/06/12 18:43:19
>>965
作った業者に改良を依頼したらいいと思うよ

973:デフォルトの名無しさん
08/06/12 18:48:38
>>970
D.Q.N.(「父さんこのイモ何のイモ?」の略)

974:デフォルトの名無しさん
08/06/12 18:49:35
int x = 9801;
java.util.Map<Integer, Integer> map = new java.util.TreeMap<Integer, Integer>();
int f = 2;
while (x >= f) if (x % f == 0) {x /= f; if (map.get(f) == null) map.put(f, 1); else map.put(f, map.get(f) + 1);} else f++;
System.out.println(map);

975:デフォルトの名無しさん
08/06/12 19:04:54
整数xの約数
とあるけど、-23*1とか0*1でもいいのかな
君のプログラムはどういう仕様になってるの?

976:デフォルトの名無しさん
08/06/12 21:54:56
>>967の問題が素因数分解であるなら、入力は正整数だから>>975は心配無用
アルゴリズムは基本的に>>974の方法で良いが、細かいことをいうと

y = ⌊√x⌋ とすると、
ループ継続条件は x > 1 かつ f ≤ y
(ループ終了時 x > 1 なら、その x が最後の素因数)

977:デフォルトの名無しさん
08/06/12 23:20:23
>>962 >>964
jspは実行前にコンパイルされるはずだからevalというには語弊があるな。funcallとかapply?

978:デフォルトの名無しさん
08/06/13 00:29:13
質問です。
JAVAで、指定したフォルダをエクスプローラで開くことは出来るでしょうか?
Windows以外で動作しなくても構いません

ひょっとしたらRuntimeやProcessで出来るかとも思ったのですが、
あれはexeやjarファイル等の起動しか出来ないようで……

979:デフォルトの名無しさん
08/06/13 00:31:08
Windowsに限るならexplorer.exe使えばいいよ。
オプションはスレ違いなので調べてちょ。

980:デフォルトの名無しさん
08/06/13 00:37:28
>>979
即答ありがとうございます
何とかなりそうです

981:デフォルトの名無しさん
08/06/13 00:37:42
>>978
JDK6以降なら java.awt.Desktop#open(java.io.File) でも開けるっぽい。

982:デフォルトの名無しさん
08/06/13 00:53:22
>>978
explorer C:\Program Files
みたいに引数つければRuntimeでいける。

983:デフォルトの名無しさん
08/06/13 01:18:47
>>981
こんなのがあったのか……
JDKのバージョンにこだわりはないので、エクスプローラの引数指定よりこっちの方がスマートですね
色々試してみます。
回答ありがとうございました

984:デフォルトの名無しさん
08/06/13 05:28:52
>>976
少し苦しいけど許してあげるよw
以後軽率な発言は控えるように


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch