5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

Java標準低速GUI 6 AWT/Swing

1 :デフォルトの名無しさん:2007/09/26(水) 20:51:18
ハードウェアの高スペック化、描画アルゴリズムの変更、JavaVMの高速化に伴い、パフォーマンスの問題は改善されています。
しかしながら、"Java"というだけで未だに敬遠されるのが現状。
そんなSwingと引き続き付き合っていくみんなのスレッドです。
Java低速GUI Swing 5 (前スレ)
http://pc11.2ch.net/test/read.cgi/tech/1161139809/
Java低速GUI Swing 4
http://pc8.2ch.net/test/read.cgi/tech/1140533866/
Java低速GUI Swing 3
http://pc8.2ch.net/test/read.cgi/tech/1121700954/
Java低速GUI Swing 2
http://pc8.2ch.net/test/read.cgi/tech/1095398949/
Java低速GUI Swing
http://pc5.2ch.net/test/read.cgi/tech/1062271447/l50

2 :デフォルトの名無しさん:2007/09/26(水) 20:57:16
関連スレッド

Java 高速GUI SWT 3
http://pc11.2ch.net/test/read.cgi/tech/1164877399/

3 :デフォルトの名無しさん:2007/09/26(水) 20:59:02
VisualStudioのようなポトペタ開発環境がほしい!!
NetBeans
http://www.netbeans.org/index_ja.html
Eclipse+VisualEditorPlugin
http://www.eclipse.org/
http://www.eclipse.org/vep/

4 :デフォルトの名無しさん:2007/09/26(水) 22:10:02
jDialogでボタン付きのダイアログを作成して、
ボタンを押すとdispose()して閉じるようにしても
またダイアログを開くと前回表示した内容が残ってしまいます。

2回目の表示のときは、ダイアログを最初から作り直したい
のですが、どのようにすべきでしょうか?

ちなみにVisualEditorを使って作成しています。

5 :デフォルトの名無しさん:2007/09/26(水) 22:30:42
disposeがやっているのはOS側のリソースの解放だから、OSリソースを
使わないSwingの子供部品はなくならないわけです。部品自体やその階層
関係はそのままのこっていて、描画が必要になったときにOSリソースが
取り直されるだけ。

地道に値を入れなおすか、子供を全部削除して入れ直(あるいはそれを
するメソッドを呼ぶ)せばいいと思うよ。


6 :デフォルトの名無しさん:2007/09/26(水) 23:27:39
JDialog を new するところからやり直せばいいと思うよ

7 :デフォルトの名無しさん:2007/09/27(木) 03:04:22
>>1
標準低速ってなんだよw
オレのお茶返せwww

Q. AWT と Swing 混ぜちゃ駄目って聞いたんですけど
  混ぜちゃ駄目なんですか・・・・?
A.
 今まででは、「駄目」というのが正解です。
 が、現在開発中(未リリース)のバージョンではSwingとAWTの混在ができるようになっています。
 正式リリースがされるまで、情報の錯綜があって混乱すると思いますが
 普通の人にとっては「まだ駄目」という状況だと思ってください。

8 :デフォルトの名無しさん:2007/09/27(木) 07:20:02
>>1
一乙。
>>7
期待してたテンプレthx.

9 :デフォルトの名無しさん:2007/09/27(木) 09:44:34
SwingとATWを混ぜて使えると良い点は多少軽量化できることがあるとか?
できないよりはできたほうがいいとはおもうけど、Swingのコンポーネント
増やしてくれたほうがうれしい。

10 :デフォルトの名無しさん:2007/09/27(木) 10:26:06
プルダウンメニュー付のボタンなんか欲しいな〜

11 :デフォルトの名無しさん:2007/09/27(木) 11:36:39
エクセル的なJTableの拡張が欲しいな〜

12 :デフォルトの名無しさん:2007/09/27(木) 12:19:58
「標準」でも検索にかかる上に、低速のふりをする良いスレタイだ。

>パフォーマンスの問題は改善されています。
現在完了形キタコレ。

>>9
軽量化よりも環境ネイティブな L&F なのが嬉しそう。
Swing のエミュレーションは見た目は実用レベルで近づいたけど
挙動の微妙な差異にイラっとさせられる時がある。
ファイル選択ダイアログでファイル名をクリックしたら
名前変更モードになっちゃうとか、
ちっこいアイコン叩かないとファイル選択にならないとか、
そういう部分。

13 :デフォルトの名無しさん:2007/09/27(木) 14:14:13
正直ダイアログ関係はSystemの使ってほしいよね
AWTだと使えるけど、機能が少ないし

AWTとの連携で一番期待したいのはGLCanvasが使えること、かな?

GLJPanelが遅すぎて使い物にならないとか統合チップセット以外なら
Windowモードでも垂直同期が取れているというのが一番大きいかもしれない

14 :デフォルトの名無しさん:2007/09/27(木) 18:53:18
Eclipse用のGUIエディタプラグインが紹介されてる。
http://journal.mycom.co.jp/column/ide/015/index.html
こんなんあったんだな。VisualEditorは重すぎだし使ってみようかな。

15 :デフォルトの名無しさん:2007/09/27(木) 20:28:23
>>14
どれも古いプラグインじゃないか。まだ残ってたんだ。

16 :デフォルトの名無しさん:2007/09/27(木) 20:42:36
>>14

有償なやつはいらないな

17 :デフォルトの名無しさん:2007/09/28(金) 09:31:11
昔Jiglooってプラグイン使ってたんだけど、まだある?

18 :デフォルトの名無しさん:2007/09/28(金) 10:27:25
公式扱いということでVisual Editor使ってるんだけど、Jigloo結構いい感じだなあ。
3.3対応のVEはいつでることやら。

>>17
>>14

19 :デフォルトの名無しさん:2007/09/28(金) 10:30:30
Jiglooは商用製品なんだからフリーよりよくないとこまるだろ

20 :デフォルトの名無しさん:2007/09/28(金) 12:52:22
Delphi使ってたので、Jiglooのパレットの
並び方はなかなか懐かしくてよいなあ。

21 :9:2007/09/28(金) 14:20:24
>>12
ああなるほど、そういうのがあったのか。

余談だけど、>>9のATWはAWTですた orz

22 :デフォルトの名無しさん:2007/09/28(金) 14:41:34
少し凝ったアプリを作ろうとすると、GUIの操作体系考えるの難しいよね。
最初から読み切って作れればいいんだけどそうもいかない。


GUIの部分って書くの時間かかるじゃん。
メニューを動的に変化させたり、いろんな機能と複雑に絡み合っていたり。
人間側で使いやすい操作法と、コーディングのしやすさは相容れない事が多いし。
使ってみて使いにくいから別のやり方に変更とか、やり直しが頻発するときびしい。
デバッグもいろんなパターンをためしていかなきゃいけないし。

23 :デフォルトの名無しさん:2007/09/28(金) 15:02:16
>>22
イベントの発行順序がかわったりして苦労するとか
ほんと昔からあるとおりデバッグ等は大変だよ

GUIのアニメとか見た目のコントロールはそのフォームべったりになりやすいし
せいぜいビジネスロジックを完全に分離してフロントエンドに何が来てもいいように
するくらいしかない

NetBeansだったら2行以上のロジックはイベントのメソッドに書かないとかIDEごとの常識が存在するし

24 :デフォルトの名無しさん:2007/09/28(金) 17:11:04
すれ違いだけど、なんかそこら辺を解決するためにWindows Presentation Foundationとか機能があったんじゃなかったっけ?
どこかの記事で読んだだけなんだが、同じようなのJavaで付けてくれないかなあ。

25 :デフォルトの名無しさん:2007/09/28(金) 17:24:04
それが JavaFX なんじゃない?
詳しいことは知らないけどさ。

26 :デフォルトの名無しさん:2007/09/28(金) 22:39:31
そのとおりだよ
でもさー、最近のリッチクライアント事情っていったらMSのSilverlightとAdobeのAIRの2人勝負で、JavaFXが蚊帳の外になってるよね

27 :デフォルトの名無しさん:2007/09/28(金) 23:02:46
>>26
ランタイムはなにさ?

28 :デフォルトの名無しさん:2007/09/29(土) 14:02:24
SilverlightやAIRと戦えるかどうかはJava Kernelしだい。

29 :デフォルトの名無しさん:2007/09/29(土) 14:14:31
TransferHandlerでD&Dは出来たのですが、
貼り付けがよく分からないんですけど、
どうやってメニューアイテムとかボタンとかイベントで貼り付けを起動したらいいか分かりません。
あまりググっても出てこないんですけど、日本語の解説サイトとかないですかね?

30 :デフォルトの名無しさん:2007/09/29(土) 15:15:27
何をどこに貼り付けるの?

31 :デフォルトの名無しさん:2007/09/29(土) 15:39:55
>>29
それはDnDの範疇ではなく、普通にクリップボードを介してオブジェクトを渡せばいいんじゃないか?
DragSourceから引き出してDropTargetへ落とすまでは一連の操作だから、
ドラッグの開始で得られたTransferableをメニューやボタンなんかの他の操作でどうにかしたりはできない。
Transferableをクリップボードへ→クリップボードから貼り付け対象へ
という二段階のそれぞれを処理するイベントハンドラをメニューやボタンにaddすればいいんじゃないか?

32 :デフォルトの名無しさん:2007/09/29(土) 15:42:02
>>30
tableにwindows上でファイルを右クリック→コピーでクリップボードに入れたファイル(?)
を解析してそのファイルの情報
D&Dできるようにはした。
http://up2.viploader.net/bg/src/vlbg013628.jpg

public boolean importData(TransferSupport support) {
if (!canImport(support)) {
return false;
}

try {
Object obj = support.getTransferable()
.getTransferData(DataFlavor.javaFileListFlavor);
List<File> files = (List<File>)obj;

for (File file: files) {
//if (filter.accept(file)) {
frame.addRowFile(file); ←このメソッドでtableにファイル情報が追加される
//}
}

return true;
} catch (UnsupportedFlavorException ex) {
// 失敗したら false を返すだけ
} catch (IOException ex) {
// 失敗したら false を返すだけ
}
return false;
}
D&Dなら投げ込むだけimportDataがたぶん起動してる。
貼り付けの時のどうやってimportDataを動かすか分からない…

33 :デフォルトの名無しさん:2007/09/29(土) 16:07:51
その貼り付けメニューはどうやって作ってるのよ。
そのメニューに getPasteAction を設定してる?

34 :デフォルトの名無しさん:2007/09/29(土) 20:53:44
>>33
すいません、ちょっと出かけてました…
その辺がよく分からなくて、
pastejMenuItem.setActionCommand((String)TransferHandler.getPasteAction().getValue(Action.NAME));
と書いてみました。何かでも間違ってるっぽい



35 :デフォルトの名無しさん:2007/09/29(土) 22:03:23
最近eclipse+VEを使いはじめました。

Timerで1秒間隔でJFrameを描画しなおす為にactionListenerを定義しようと
したんですが、VEで作成したパネル上で
[右クリック]→[Events]→[actionPerformed]
しようとしたんですが・・・・
actionPerformedがメニューに出てきません。
eclipseから全てインストールしなおしても変わりません。
何が原因なんでしょうか?

環境は
eclipse 3.2 + JRE1.6.0_02
GEF 3.2
EMF 2.2.0
VE 1.2

Windows XP Pro SP2


です。


36 :デフォルトの名無しさん:2007/09/29(土) 22:09:57
>>34
actionPerformedで

Transferable transferable = Toolkit.getDefaultToolkit().getSystemClipboard().getContents(this);
Object obj = transferable.getData(DataFlavor.javaFileListFlavor);
List<File> files = (List<File>)obj;
以下略

ってやった方が簡単な気がする

37 :デフォルトの名無しさん:2007/09/29(土) 22:14:26
>>35
VEでは、javax.swing.TimerはGUIコンポーネント扱いされないので、
ポップアップメニューからaddActionListenerはできない。
手書きしよう。そんなに面倒じゃない。

38 :デフォルトの名無しさん:2007/09/29(土) 23:50:52
実際のところ
javax.swing.Timerはあんまりつかわんよな
1.3以上は

39 :デフォルトの名無しさん:2007/09/30(日) 01:39:56
>>38
そう?
手書きで精度をあまり問わないちょっとしたもので定期的実行が必要な時によく使うんだが。

40 :デフォルトの名無しさん:2007/09/30(日) 12:29:43
使うならGUIと直交した java.util.Timer じゃね?
ということかもしれない。


41 :デフォルトの名無しさん:2007/09/30(日) 13:01:29
1.3から実装されたのはjava.util.Timer
より複雑な並列動作に使うことは多いね

42 :デフォルトの名無しさん:2007/09/30(日) 17:11:14
java.util.Timer はコールバックが EDT じゃないじゃん

43 :デフォルトの名無しさん:2007/09/30(日) 17:26:50
単純な定期イベントってのが実際そんなに多くないから
java.util.Timerってことだろ?

44 :デフォルトの名無しさん:2007/09/30(日) 17:28:44
いまどきは ScheduledThreadPoolExecutor

45 :デフォルトの名無しさん:2007/09/30(日) 17:57:55
>>44
1.5以上ならjava.util.concurrentはよくつかうね

SwingWorkerはpublishとのタイミングがわからんから使われないことが多いかも
つーか、面倒だよな、あれ

46 :デフォルトの名無しさん:2007/09/30(日) 18:40:34
java.util.concurrentを学習してない俺が行き当たりばったりで実験コード書いたときは簡単に並列処理できて
文書ソフトのファイルの読み書きと文書内検索にはちょうど良いと思った。
使い捨てのコストもそれならあまり気にならないし。

47 :デフォルトの名無しさん:2007/10/01(月) 08:27:28
>37

つまりimportしているライブラリによって選べると言う事でしょうか?

Timerは置いておいてパネルだけ作って追加しようとしてもメニューに表れません。手書きしてしまうのも良いのですが、今の状況がVEの正しい挙動なのか気になるところです。

そもそも、eclipseのGUI作成プラグインとしてVEを選んだのが正解だったかも疑問です。eclipse使ってる方々はGUI作成はどうしてるのか教えていただきたいです。

48 :デフォルトの名無しさん:2007/10/01(月) 09:44:17
>>47
「パネルだけ作って追加」の意味が分からないが、
addActionListenerはJPanelにはない。

javax.swing.TimerはGUIコンポーネント扱いされないが、
Java Beansとして置く分には可能なので、それで追加して
addActionListenerを手書きするといい。
上で挙げられているような
java.util.Timerとどちらを使うかはお好きに。
どちらにしてもGUIコンポーネント扱いはされない。

ちなみに俺はVE使ってるが、半分意地みたいなところがある。
これがベストの選択肢という自覚はない。
昔Jigloo使ったことがあるけど、
com.cloudgarden.*なクラスが勝手に作られたり
自動生成されたコードが見づらかったりと
(1メソッドに全てのコンポーネント設定コードが詰め込まれるタイプ)
不満だったので止めた。今は良くなってるのかもしれないけど。

NetBeansという選択肢もあるが、わざわざ使い分けるのが面倒くさい。

49 :デフォルトの名無しさん:2007/10/01(月) 12:34:02
フォームにタイマーをおいて・・・というのは感覚的にVBだなぁあとおもた
まぁNetBeansだとできるけど、Eclipseだと商用製品に手をつけるのがオススメ

50 :デフォルトの名無しさん:2007/10/01(月) 12:47:55
ってかVEって使い物になるレベルだっけか?
最近は改善されてるのかな…

51 :デフォルトの名無しさん:2007/10/01(月) 12:50:36
いや、放置されてる

52 :デフォルトの名無しさん:2007/10/01(月) 14:05:18
上の方ではJiglooがいいねって話してた。試してみたら?

53 :デフォルトの名無しさん:2007/10/02(火) 13:12:58
Java.comから、JREについてフィードバック送れるね。
開発環境じゃないけど、
http://bugreport.sun.com/bugreport/contact.jsp?language=ja
JREが改良され、使われる様になったら、ここにいる人にもメリットあると思うので、
なんかあればfeedbackしておくと良いと思う。

54 :デフォルトの名無しさん:2007/10/03(水) 22:32:49
JTableのセルへ数字以外入力できないようにしたいんだけど、どうやるのが一番キレイかな?
やり方はいろいろありそうだけど、ソースがきれいになりそうなやり方あれば教えてちょ。

55 :デフォルトの名無しさん:2007/10/03(水) 22:44:23
JFormattedTextFieldとかTableCellEditorとか使うんじゃないかね。


56 :デフォルトの名無しさん:2007/10/03(水) 23:40:31
KeyListener#keyTyped(KeyEvent e)を実装して、そこで
char c = e.getChar();
if(c >='0' && c <=9)
return;
else
e.consume();

とかしても結構すっきりして好きだなー

57 :デフォルトの名無しさん:2007/10/03(水) 23:41:20
あ、JTextFieldかなんかを拡張してTableCellEditorを実装した上でってことねー

58 :デフォルトの名無しさん:2007/10/04(木) 00:48:54
JTableに限らず書式つけるならテキスト部分はJFormattedTextFieldだろ・・・

59 :デフォルトの名無しさん:2007/10/04(木) 01:16:02
JTableのセルをクリックして入力モードになるとCellEditorでの入力を行ってるっぽいけど、
セルを入力モードにせずに適当なキーを押して入力した場合はCellEditorを使ってないの?
CellEditorをかならず使うようにしたいのだが、どうすればよいかな。。。

60 :デフォルトの名無しさん:2007/10/04(木) 01:27:14
>>59
もう少しわかるように

61 :デフォルトの名無しさん:2007/10/04(木) 02:17:15
>>56
Character.isDigit使う方がよくね?
と思ったが、漢数字や全角数字にもtrueを返すんだよな。


62 :デフォルトの名無しさん:2007/10/04(木) 16:26:51
JTableネタが出てるのでちょっと聞きたいのですが、
ヘッダ行の文字数が多すぎると、項目によっては
...で項目名が省略されちゃいますよね。

セルの横余白を調節することってできませんか?

63 :デフォルトの名無しさん:2007/10/04(木) 16:51:11
JTable#setIntercellSpacing(Dimension) かなんかで出来なかったっけ?

64 :デフォルトの名無しさん:2007/10/04(木) 18:11:06
>>62
列の幅変えたいなら

TableColumn column = table.getColumn(col);
column.setMinWidth(min);
column.setMaxWidth(max);
column.setPreferredWidth(width);

65 :デフォルトの名無しさん:2007/10/04(木) 23:46:59
>>63,64

ありがとうございます。でもすみません,ヘッダ行についてだけなんです。
これだと,普通のセルの余白が変更されちゃうんじゃ・・・



66 :デフォルトの名無しさん:2007/10/04(木) 23:59:03
ヘッダのサイズだけ変えたいと

そう申すのか?

67 :デフォルトの名無しさん:2007/10/05(金) 00:05:20
>66

そのとおりです。たとえば,ヘッダ行が

|  果物名  |  産地 |  価格  |

のようにあったときに,


| 果物名 | 産地 | 価格 |

としたいのです。列のサイズ自体を変更することはできますが,ある程度
小さくすると項目行が「果...」とかになってしまって見にくくなって,
でも余白はきっちりとられているものですから,なんとかならないかなーと。


68 :デフォルトの名無しさん:2007/10/05(金) 00:09:34
TableColumn#setHeaderRenderer 使えば済む話?

69 :デフォルトの名無しさん:2007/10/05(金) 10:24:07
>68
ありがとうございます。

とりあえず,new DefaultTableCellHeaderRenderer()したものをそれぞれの列に
セットすることができるようになりました。
ただ,そのヘッダ行だけ周りのL&Fから浮いてしまっているだけでなく,クリックや
マウスホバーにも反応しないのが大変痛いです。

TableColumn#getHeaderRendererで中身を取って,それを操作してやるのが一番
よいのではないかと思ったのですが,うまくいかず・・・

(DefaultTableCellHeaderRenderer)JTable.getColumnModel().getColumn(0).getHeaderRenderer();
とかだとnullが返ってきてしまいます。



70 :デフォルトの名無しさん:2007/10/05(金) 11:11:43
MVCパターンの仕組みから勉強した方がよさそうだな。

71 :デフォルトの名無しさん:2007/10/05(金) 17:07:29
まえから気になってるんだけど、
マウスイベントで、シングルクリックとダブルクリックを識別するには、
MouseEvent#getClickCount()でボタンを押した回数が分りそうに思えるけど、
ダブルクリックをするとイベントが二回発生して、
一回目はClickCount=1のイベント、
二回目にClickCount=2のイベントというように発生するよね。

たとえば画面に丸印を用意して、その丸をシングルクリックのときは四角に、
ダブルクリックのときは、三角に変化させる。
別のボタンを押すとまた丸にもどる。というプログラムを作りたいとする。

ところがダブルクリックのときは、まず1回目のクリックでmouseClicked()が呼び出され、
二回目のクリックで再び同メソッドが呼び出される事になる。

だから次のようなコードを書いたとすると・・・

public void mouseClicked(MouseEvent evt) {
 int count = evt.getClickCount();
 if(count == 1) {
  //四角を描画
 } else if(count ==2) {
  //三角を描画
 }
}

ダブクリのとき、1度目のクリックで四角が描画され、
二度目のクリックで三角が描画されることになってしまう。
ダブクリとシングルクリックを識別することがmouseClicked()では
実のところできないような気がするのだけど、みんなどんなやり方してますか?


72 :デフォルトの名無しさん:2007/10/05(金) 17:39:10
べつにいいんじゃない。
結果としてワンクリック目の四角形は消えて最終的に三角形だけが残るんなら。

73 :デフォルトの名無しさん:2007/10/05(金) 17:49:35
>>72
じゃあシングルならダイアログAが開き、ダブクリならダイアログBが開くような場合は?

74 :デフォルトの名無しさん:2007/10/05(金) 18:11:45
>>73
そんないかれた仕様にするならどちらかをモディファイアキー有りにするかポップアップメニューにしてくれ…
# シングルクリック時にタイマーを設定してダブルクリック時にタイマーをキャンセルとかすればできなくはないか…

75 :デフォルトの名無しさん:2007/10/05(金) 18:14:16
>>73
ダブルクリック1回のつもりが失敗してシングルクリック2回になってしまうことはよくある。
その逆もよくある。
そういうゲームならともかく、ミスったら終わりみたいなユーザインタフェイスはやめた方がいいと思う。

76 :デフォルトの名無しさん:2007/10/05(金) 18:33:36
UI設計論の話してんじゃないから、文意をくみ取ってちょ。

>>74
まあタイマー使うことになるよね。

>>75
ワンクリでアイテム選択、ダブクリでアイテムプロパティ設定とか、よくあるでしょ。
MSのパワポとか。

77 :デフォルトの名無しさん:2007/10/05(金) 18:34:12
>>71
こんなのは? シングルクリックの動作が遅れるのは
原理的にダブルクリックとの判別にそれだけ時間をかけないといけないからなので仕方がない
四角の描画は別スレッドなのでシングルスレッドルールに反してはいけないときはEDTに描画を投げるようにして
まあ基本的にこういうふうにクリック回数で処理を分けるUIはよくないと思うが
private final int mci = ((Integer)Toolkit.getDefaultToolkit().getDesktopProperty("awt.multiClickInterval")).intValue();
private boolean flag;
public void mouseClicked(MouseEvent evt) {
int count = evt.getClickCount();
if(count == 1) {
new Thread(new Runnable() {
public void run() {
flag = true;
try { Thread.sleep(mci); } catch (InterruptedException e) {}
if (flag) {
//四角を描画
}
}
}).start();
} else if(count == 2) {
flag = false;
//三角を描画
}
}

78 :デフォルトの名無しさん:2007/10/05(金) 18:50:12
前々から思ってたんだけど

AWTは知らないけど、少なくともSwingのコンポーネントの多くはそのコンストラクタで
オーバライド可能なメソッドを呼び出したり、
そのインナークラスをイベントリスナーとして登録してるんだけど、
どう考えればいいのかな。

コンストラクタが終了する前に this を漏洩することは、
オブジェクトが整合性を整える前にメソッドが呼び出される可能性がある。
とりあえず、基本EDT限定なので、まあ、別スレッドから呼び出される心配はないかもしれないが、
それを差し引いても、例えばリスナー登録の瞬間にコールバックされたりなど
シングルスレッドでも、コンストラクタ完了前に呼び出される危険がある。

とりあえず、今考えているのは、Swingを使う場合は
自前コンポーネントでthisを漏洩しないよう(ファクトリメソッドを作るとか)複雑にしても、
既に親クラスが漏洩しているので、複雑にした分だけ損。それなら、毒を食らわば皿までということで、

1.コンストラクタでイベントハンドラの登録やオーバライド可能なメソッドの呼び出しはOKとする
2.イベントの仕組みを作る場合は、イベントを登録した瞬間にコールバックしない
  (標準で用意されているSwingのコンポーネントはそうなってるのかなあ?)
3.オーバライドを前提としているメソッド(paintComponent()など)以外は、絶対オーバライドしない

というルールでカバーできるのかなと思っているのだけど、どなんでしょうか

79 :デフォルトの名無しさん:2007/10/05(金) 18:51:47
>>76
エクスプローラとかパワポとかテキストエディタは、実際にワンクリ目の動作 (項目選択とかカーソル移動とか) を実行してる。
その後にダブクリの動作を実行するけど、そういう流れで問題ないユーザインタフェイスになってるからな。

80 :デフォルトの名無しさん:2007/10/05(金) 18:51:58
>>77
おー、シンプルでいいね!
漏れが考えたのはもう少し冗長だった。
勉強になりますた!

81 :デフォルトの名無しさん:2007/10/05(金) 18:59:28
>>79
言われてみればそうだね。
クリック回数で処理を分けるのは、よほどの理由がないかぎり
やらないほうが良いのかもしれない。

82 :78:2007/10/05(金) 21:27:33
メソッドの呼び出しがイベントを発生する可能性があるから、

4.リスナーの登録はコンストラクタの最後にする。

が必要か。リスナーの登録メソッド自身がイベントを発生したら木阿弥だけど。
いいのかこんなので

83 :デフォルトの名無しさん:2007/10/05(金) 22:59:32
this参照の漏洩を防止するためにはコンストラクタからイベントリスナを決して登録すべきではない

84 :デフォルトの名無しさん:2007/10/05(金) 23:41:33
イベントリスナが this を(直接的にも間接的にも)参照してなければ
コンストラクタで登録しても問題ない

85 :デフォルトの名無しさん:2007/10/06(土) 00:15:19
Swingのイベントの話してるのか

・SwingコンポーネントのイベントはAWTスレッドでしか発行しない

これだけでおけでは?

ところでDesktopがWindowsXPで動かないわけだが、これはいったいどういうコードになってるんだ?

86 :デフォルトの名無しさん:2007/10/06(土) 00:33:40
solarisチェックが入っている

87 :デフォルトの名無しさん:2007/10/06(土) 00:50:29
>>85
ttp://www-06.ibm.com/jp/developerworks/java/050826/j_j-jtp07265.shtml
ttp://www-06.ibm.com/jp/developerworks/java/020823/j_j-jtp0618.html

88 :デフォルトの名無しさん:2007/10/06(土) 01:03:45
>>86
同じXPでも動くマシンと動かないマシンがあるのだ
すべてJREは同一という不思議

>>87
俺が言いたいのはコンストラクタをAWTスレッドでしか生成しないと問題は少ないという意味なんだが
生成中にthis公開するのが変というのは常識だろ

>>78の前提がおかしいのは当たり前で
それをふまえてそのままのコードでいかに問題なく動かせるかの話じゃないの?

そして現在の実装において問題が発生することはないはず(5.0までは)

結局AWT/Swingなんてソース見ればわかるとおりほとんどVM依存コードの塊なんだけど、
SunのVMで実行しているかぎり問題は表面化していないというのが正しいか

89 :デフォルトの名無しさん:2007/10/06(土) 01:54:54
ぬるぽが発生しなさそうで、発生しそうなコード

final AtomicReference<String> lastSetText = new ...

@Override
public void setText(Strint text) {
super.setText(text);
lastSetText.set(text);
}


90 :デフォルトの名無しさん:2007/10/06(土) 16:17:20
暇なので書き込み

public class NPO extends JTextField {
public NPO(String text) { super(text); }
>>89 のコード
}

として、nullでない文字列を使ってクラスNPOのインスタンスを生成すると、
その時点で、ぬるぽになる。
オーバライド可能なメソッドをコンストラクタで使うことは、
生成中にサブクラスに this を漏洩しているのと同じでやってはいけない。

このような常識を Swing は平然と破っている。したがって、Swing を使うには、
「このメソッドは、(心の目でみると) final が付いているからオーバライドしてはいけないんだ!」
などという脳内変換ルールが必要なのは明らか。

91 :デフォルトの名無しさん:2007/10/06(土) 16:24:07
NPOって何かと思ったらNPEのことか

92 :デフォルトの名無しさん:2007/10/06(土) 17:09:08
nuru-poとnull pointer exceptionか?

93 :デフォルトの名無しさん:2007/10/06(土) 17:54:36
あんまりぬるぽぬるぽいうから間違えちゃったのね。

94 :デフォルトの名無しさん:2007/10/08(月) 13:48:57
NullPointerObject

95 :デフォルトの名無しさん:2007/10/10(水) 06:22:58
JFrame#pack()はsetVisible(true)の前に実行することが推奨されていますか?

ふと以前何処かでそういう文章を読んだことを思い出し、とりあえず盲目的にそれを追記してみた所、
バキュームベッドから空気を掃除機で全部吸い取った様に空間の余裕が消え、ピッチピチに圧縮されました。
setBounds()でウィンドウサイズを設定していたのにたまったもんじゃないです。
しかしまぁそれで大体どういう動きをするメソッドか分かりました。

ただピチピチにパックするだけでは無いだろうと思い調べてみたのですが、
それ以上の情報は見つからず、必ずパックしろといった記事も見つかりません。
今までパックしていなかったにも関わらず何事も無く動いていたので、何かの勘違いだったんでしょうか。
それとも偶々運良く動いていただけなんでしょうか。

96 :デフォルトの名無しさん:2007/10/10(水) 08:58:37
>>95
余白が欲しければちゃんとBorderなりをセットしてからpackしろ
setBounds()で固定サイズとかダメすぎ

97 :デフォルトの名無しさん:2007/10/10(水) 11:19:45
>>95
大体とか言わず、正確に理解しといた方がいいと思うよ

http://java.sun.com/javase/ja/6/docs/ja/api/java/awt/Window.html#pack()
>サブコンポーネントの推奨サイズおよびレイアウトに合わせて、この Window をサイズ変更します

余裕が欲しいコンポーネントには推奨サイズを設定 (setPreferredSize) しておけば、そのサイズに合わせてくれる

98 :デフォルトの名無しさん:2007/10/10(水) 14:27:26
>>97
合わせてくれるかどうかはレイアウトマネージャ次第。
推奨サイズなんだから無視されても文句は言えない。
>>96のようにBorderでマージンとるのを推奨。

99 :デフォルトの名無しさん:2007/10/10(水) 20:26:34
スレタイ存続の危機?
次期Java 6、Direct3Dの概要が明らかに - WindowsでのSwing 2D描画を高速化
ttp://journal.mycom.co.jp/news/2007/10/09/021/index.html

100 :デフォルトの名無しさん:2007/10/10(水) 20:34:26
いやいや、まだまだ低速のタイトルは外せません><

# いや、そういうコトなら結構昔に変わってるはずで・・・

101 :95:2007/10/10(水) 20:44:20
EmptyBorderをセットしてpack、と実装したところうまく行きました。
今までモヤモヤしていた部分が引き締まったようで、とってもすがすがしいです。
>>96さん、>>97さん、どうもレスありがとうございました。

102 :デフォルトの名無しさん:2007/10/11(木) 00:12:05
>>99
デフォルトでオンはいいよね。MacではOpenGLがオンになるんだろうか・・・。

103 :デフォルトの名無しさん:2007/10/11(木) 00:29:46
Mac では Java2D は Quartz で描いてたはずかと

104 :デフォルトの名無しさん:2007/10/11(木) 00:38:44
レンダリング品質はどうなるのだろうか・・・
現状だとDirect3Dモードにすると品質がかわるので使い物にならない

105 :デフォルトの名無しさん:2007/10/11(木) 01:08:52
>>103
それがさ、Java SE 6からSunのレンダラがデフォルトになる予定なのよ。

106 :デフォルトの名無しさん:2007/10/11(木) 04:10:28
今までのwin版sun JVMなら-Dsun.java2d.ddraw=trueがデフォルトだったな。
-Dsun.java2d.d3dは支援がまともに得られないから無効だった(パフォーマンス落ちる)
当然-Dsun.java2d.openglはバグ回避で無効。
しかし、D3D9ベースになるのかPS2.0も使うみたいだしVGAとドライバ依存がでかくなるな。

それよりNimbusはマルチバイト文字通るようになるの?w

107 :デフォルトの名無しさん:2007/10/11(木) 13:03:09
>>105
去年でたDeveloperPreviewでは、PSフォントのレンダリングがガタガタだったんだけど
それ以来、DeveloperPreview無しのまま。
ttp://pc11.2ch.net/test/read.cgi/mac/1138543708/172
>>106
JDK6u5では、日本語通ってるよ。
org.jdesktop パッケージのは古いよ。
http://download.java.net/jdk6/
では、パッケージ自体が変わってる。
sun.swing.plaf.nimbus.NimbusLookAndFeel
ね。
org.jdesktop.swingx.plaf.nimbus.NimbusLookAndFeel
のヤツは化ける。

108 :デフォルトの名無しさん:2007/10/11(木) 20:02:53
そうなのかスナップショット版だと直ってるのか。>Nimbus

けど、-Dsun.java2d.d3d=trueがデフォになるってことはJOGLでプログラマブルシェーダー使うときは明示的にfalseにしないとOpenGLのシェーダーが効かなくなるな。
(win版JVMはd3dとddrawがtureだと効かない、他はDirectXがないので関係ない)
けど、バックエンドがD3D9とPS2.0に変更になっただけで
描画アルゴリズムは今まで通り、OpenGL版と同じだからパフォーマンスは対して変わらんだろうなぁ。
むしろ、OpenGLパイプラインの一部がJOGLと共通化されてOpenGL使った方がJOGLやSwingにはメリットあるんだよな。

けど、個人向けVGAのOpenGLドライバはNVIDIAもATIもバグが回避出来んしなぁ。

もういっそ、J/Directをry・・・w

それよりjdk6に密かに入ってるJava Smart Card IO APIのjavax移動はマダー!?
jdk6はいろんなモン隠しすぎw

109 :デフォルトの名無しさん:2007/10/11(木) 20:21:44
>>108
JDesktop側のweeklyビルドの方が古い様子。
どうも、JDK6u5が一番始めに組み込まれてるんじゃないかと。
JDK7にもまだ入ってないし。

110 :デフォルトの名無しさん:2007/10/11(木) 23:58:07
OpenGLでもDirect3Dでもいいが、そろそろJava2Dでαブレンディングまともに実装してほしい

111 :デフォルトの名無しさん:2007/10/15(月) 22:49:48
スレ違いなんだが、Mistralって画像ライブラリ?でアニメーションGIFを動かすにはどうすりゃいいんだろうか

読み込んで表示まではいけたんだが、最初の1フレームだけ表示してる感じ

アニメーションGIFだけMistralを使わないとか、もう全部Mistral使わないでやったほうがいいんだろうか

112 :デフォルトの名無しさん:2007/10/16(火) 01:09:07
マルチイメージのフレーム取得なんて標準で出来るじゃん。

113 :デフォルトの名無しさん:2007/10/16(火) 01:40:30
>>112


114 :デフォルトの名無しさん:2007/10/16(火) 03:08:55
image I/Oだっけか
確かpngはできないけどgifできたような気がする

115 :デフォルトの名無しさん:2007/10/16(火) 03:15:32
アニメーションGIF表示するだけなら、ToolkitでloadImageしてdrawImageの最後の引数に表示先コンポーネント指定してやれば勝手にアニメーションする

116 :デフォルトの名無しさん:2007/10/16(火) 03:15:34
気がする!!!!!!

117 :デフォルトの名無しさん:2007/10/16(火) 03:55:17
MIDPはするけど、SEやCDCはしなかった気が・・・

>>114
pngのアニメーション仕様なんて画像ビューアーにすら忘れ去られてる存在だから気にしないw
対応してるのは次期Fxくらい。

118 :デフォルトの名無しさん:2007/10/16(火) 04:03:18
Mozillaの出したAPNGは対応入るのかな?

119 :デフォルトの名無しさん:2007/10/16(火) 19:04:35
mozillaは標準規格の普及に力入れてるな・・・。
jpeg2000は使われることなく次世代策定中かorz
実際、jpeg2000の拡張仕様まで実装したらPNGどころじゃない超万能規格なんだが。

ウェーブレットいいよ、ウェーブレット!

120 :デフォルトの名無しさん:2007/10/16(火) 22:07:55
jpeg2000はjpegよりブロックノイズとかの面で優れてるけど
良い面を全部帳消しにするぐらい現在のCPUでも結構重いってのがな……

121 :デフォルトの名無しさん:2007/10/16(火) 22:17:58
確かにデコード重いな。PNGより重いからな。

122 :デフォルトの名無しさん:2007/10/16(火) 23:24:27
そろそろJAIのメモリリークは直った?

123 :デフォルトの名無しさん:2007/10/16(火) 23:33:46
標準APIであるDesktopが動かないバグが放置なのに
JAIがまともになるはずないだろ・・・

124 :デフォルトの名無しさん:2007/10/17(水) 02:22:17
1.3あたりから無視されてるバグもあるしなぁ

125 :デフォルトの名無しさん:2007/10/17(水) 14:13:04
それは、Bug Paradeには乗ってるの?

126 :デフォルトの名無しさん:2007/10/18(木) 08:49:07
さて流れを読まず俺がしょぼい質問する…
JFileChooserのcancelボタンに表示する文字を変えるにはどうすればいい?
ApproveButtonは変えれるのに、キャンセルはなぜ変えれない?

127 :デフォルトの名無しさん:2007/10/18(木) 11:12:57
自分でダイアログを作って、その中に JFileChooser を放り込んで、JFileChooser のボタンは非表示にして自分でボタンを置くってのでどうだ

128 :デフォルトの名無しさん:2007/10/18(木) 16:42:55
GUIの部品に日本語使いたくなるの俺だけ?(w

JTextFields 名前 = new JTextField();
JRadioButton 女 = new JRadioButton("女");
JRadioButton 男 = new JRadioButton("男");
JButtonGroup buttonGroup.add(女);
JButtonGroup buttonGroup.add(男);

Javaの変数名はダブルバイト可だし、自然言語風に書くのがスタイルなんだし。

129 :デフォルトの名無しさん:2007/10/18(木) 16:45:33
下2行まちがえた。
ButtonGroup buttonGroup = new ButtonGroup();
buttonGroup.add(女);
buttonGroup.add(男);

130 :デフォルトの名無しさん:2007/10/18(木) 16:52:32
>>128
ファイルシステムに依存しやすいクラス名と違ってフィールド名やローカル変数は問題は出ないよ

DBでも日本語名のカラムを使うかどうかという話と同じく宗教だから気にすんな
クラス名でつかうのはさすがにとめる

131 :デフォルトの名無しさん:2007/10/18(木) 17:23:17
文字コードの問題は、機種やOSに依存するからな。
マルチプラットホームのJavaではまさに致命的だし、うかつに手を出せん。

132 :デフォルトの名無しさん:2007/10/18(木) 17:41:37
変数名で機種依存の問題になるのか?

133 :デフォルトの名無しさん:2007/10/18(木) 18:21:43
理論上unicodeで表せれば問題ないがフォント側しだいだな。

134 :デフォルトの名無しさん:2007/10/18(木) 18:24:02
>>132
まあ、無駄に怖がってるのかも試練がな。
だが、linuxなんかで文字コードに苦しんだ俺としては、
少しでもリスクを減らしたい。

135 :デフォルトの名無しさん:2007/10/18(木) 18:33:24
つーか

変数名に日本語使えるのか!しらんかった!

136 :デフォルトの名無しさん:2007/10/18(木) 20:23:17
具体的には、
Character.isJavaIdentifierStart(char)
Character.isJavaIdentifierPart(char)
で調べられる。
識別子の頭に使えるかと頭以外で使えるかがチェックできるよ。

137 :デフォルトの名無しさん:2007/10/19(金) 00:17:38
漢字の変数名はコンパイル通ればOKじゃね?
クラス名はクラスファイルで問題出る可能性があるけど

String 半角カナ = StringConverter.get半角カナ( 全角ひらがな );
氏名フィールド.setText("ほげほげ");
JMenu ファイルメニュー = new JMenu("ファイル(F)");
JMenuItem 開くアイテム = new JMenuItem("開く");
ファイルメニュー.add(開くアイテム);

みたいな使い方もできるから、大胆に使ってみたいんだが、
やっぱりなんか気がひける。w
Java言語のスタイルとしては、ある意味、正しいように思うけど。

138 :デフォルトの名無しさん:2007/10/19(金) 00:19:14
>>137
入力がうざそうだなぁw

俺カナタイパーだから、IMEオンのままコード打つの難しいし

139 :デフォルトの名無しさん:2007/10/19(金) 00:20:47
うへぇいちいち入力切替なんてやってられんわ

140 :デフォルトの名無しさん:2007/10/19(金) 00:33:55
俺もカナタイパーなんだけど、鍛えたんで打つのは苦にならんのよ。w
DOS/VキーでATOKの話だけど、タッチタイプで親指で[変換]キーを叩いて、
全角/半角の切替をマスターしたらけっこう楽に入力できるよ。

チームの中で一人だけ漢字でメソッド名つけたりする人いるのはまずそうだが。w

141 :デフォルトの名無しさん:2007/10/19(金) 00:39:53
JMenuItemのやJTextFieldの数が増えてきたとき、日本語で書いておくと
けっこういい感じなんだけどね。わかりやすい。
本番で採用したことはないけど。
英語圏の人には災難。

142 :デフォルトの名無しさん:2007/10/19(金) 00:41:07
>>139
ローマ打ちの人に「面倒じゃない?」ってよく言われる

ローマ打ちの方が遅いから、「平気、っーかよくわかんない」

143 :デフォルトの名無しさん:2007/10/19(金) 00:41:14
>>137
スマン!気が引ける事もなく最近じゃ普通に使ってる。
プロジェクトとして利用を推進してる。
ホント分かりやすいよ。
>>138-140
補完されるから日本語を全部打つ事はあまりない
>>140 ではないが、Macの流儀に合わせて変換キーで全角モードに入るようにしている

144 :デフォルトの名無しさん:2007/10/19(金) 00:42:46
>>143
まーじーかー

どうせリファクタリングでゴリっと直せるんだし、挑戦してみようかな

145 :デフォルトの名無しさん:2007/10/19(金) 00:51:14
>>143
おーっ、勇気あるなーww

Javaはもともとダブルバイトを変数名やメソッド名に許しているんだからして、
そういう作法もありだとSunも暗黙に認めてるってことじゃないかと。
将来には見たこともないフォントで書かれたソースコードが
出てくるような気がするんだよね。

146 :デフォルトの名無しさん:2007/10/19(金) 00:57:15
>>137のようなコードをあんまり見たこと無いからだろう。
個人的に使う分にはまったく問題ないし。

147 :デフォルトの名無しさん:2007/10/19(金) 00:58:28
もしIDEでちゃんんと補完が効くのなら入力もそれほど苦じゃないかもね

148 :デフォルトの名無しさん:2007/10/19(金) 01:20:31
>>145
ちょっと気になったので・・・・フォントと文字自体は、別のものですよ。
見た目と意味、くらいの違いがあります・・・・
老婆心ながら、ちょっと調べておいた方がよいかと・・・

149 :デフォルトの名無しさん:2007/10/19(金) 01:21:39
メソッド名にはあまり日本語を使いたくないな、気分的にw
Javaを全て日本語で書くとかいう研究がどっかであったけど、
ソースがあまりにもカッコ悪くて、プログラミング言語のほとんどが英語で良かったと思っている

150 :デフォルトの名無しさん:2007/10/19(金) 01:31:10
アニメーションGIFをImageIconとして読み込んで、JLabelにアイコンとして設定したらちゃんとアニメーションしてくれたのね
で、JLabelを継承して、paint(Graphics g)をオーバーライドしたら、拡大縮小回転を楽しめたんですよ。

ここで質問です。
paint(Graphics g)が呼ばれたときに、
アニメーションGIFの何フレーム目を表示しようとしてるか検出できますかね?

拡大縮小回転のさせたBufferedImageを保存して再利用したいんだけど、
今何フレーム目とかわからないと、再利用できない気がするんだぜ

151 :デフォルトの名無しさん:2007/10/19(金) 01:50:12
>>149
気分とかカッコいいとかそういった主観に基づい行うもんじゃないだろ。
便利なのか必要なのかどうかで違ってくる。
それも言語仕様でサポートされてるから安心して使えるし。

152 :デフォルトの名無しさん:2007/10/19(金) 03:48:14
日本語ってなかなかにグルー言語よね

153 :デフォルトの名無しさん:2007/10/19(金) 07:37:14
>>151
同意!

154 :デフォルトの名無しさん:2007/10/19(金) 07:46:07
>>148
文意を理解してよw
ギリシア語やタイ語の文字のグリフで変数名が書かれているかもしれないってこと。

155 :デフォルトの名無しさん:2007/10/19(金) 08:45:12
日本語とハングルを同時表示するには両方に対応しているフォントが必要じゃね?

156 :デフォルトの名無しさん:2007/10/19(金) 09:44:44
SDCだったかでハングルでコメント入ったソースコードは見たことある。
日本語環境のIDE上で表示できるかどうかはしらんけど。

157 :デフォルトの名無しさん:2007/10/19(金) 12:18:44
>>140
エキサイト翻訳ででてきた意味不明な英語がはいるよりは漢字のほうがましだと思う
そのアプリは日本国外での開発で、海外で売る気があるのかい?と

数年後メンテをやらなくてはならない場合に
ドキュメントが残ってない場合把握しやすいというメリットもある

DBで日本語の項目名いれてNetBeansなりでJPAを生成でもすれば
日本語名のプロパティが見事に生成されるわけだが、わりとみやすいし
いざとなればリファクタリング一発だから問題はねぇな

158 :デフォルトの名無しさん:2007/10/19(金) 12:19:33
>>150
とりあえず軽量コンポーネントでpaintそのものをオーバーライドするのやめれ

159 :デフォルトの名無しさん:2007/10/19(金) 14:17:33
>>157
NetBeansだとGUIまわりのリファクタリングはひっかかるケースが多いけど。

160 :デフォルトの名無しさん:2007/10/19(金) 14:44:40
Javaのバイトコードって変数名なんかも保存してるんじゃなかったっけ?
変数名に日本語使えばバイトコードにも残るの?

161 :デフォルトの名無しさん:2007/10/19(金) 15:14:30
UFT8に変換されて残るからソースのエンコーディングがなんであれ問題なし。

162 :デフォルトの名無しさん:2007/10/19(金) 16:18:19
ローカル変数も残るんだっけか?

163 :デフォルトの名無しさん:2007/10/19(金) 16:24:36
テストケースのメソッドは日本語がたいへんよろしい。

164 :デフォルトの名無しさん:2007/10/19(金) 16:26:36
デバッグ情報として残すことも残さないこともできる

165 :デフォルトの名無しさん:2007/10/19(金) 21:02:52
ローカル変数やGenericsの型指定は残らないと思った。
C#だとGenerics型は残るらしいね。
Javaのはキャストしてるだけってのが理由だろうけど。

166 :デフォルトの名無しさん:2007/10/19(金) 21:22:05
ローカル変数はフレームごとに領域(とlongとかあるので型のサイズ)だけ
確保されてたはず。


167 :デフォルトの名無しさん:2007/10/19(金) 21:42:43
どっちにせよ日本語変数は問題なさそうだな

168 :デフォルトの名無しさん:2007/10/19(金) 22:25:36
>>159
NetBeansのGUIコンポーネントの話はしてないよ
リファクタリングはJPAのほう
GUIのコンポーネントのリファクタリング問題は4.1あたりで直すとか言ってたのだが
絶賛放置中

>>167
なさそうではなくて問題ない
問題が出るとしたらマッピングがおかしい場合だけ

169 :デフォルトの名無しさん:2007/10/20(土) 00:50:24
>>159
Netbeansは、リファクタリング無しでも日本語が使えないGUIエディタまわりがあるな。
Javaで作って、何でそうなるのか問い詰めてやりたい。

170 :デフォルトの名無しさん:2007/10/20(土) 04:02:05
そりゃ日本語使ってないやつが作ってんだからそうなるだろ。
使わないものがどうなっていようとそれは仕様です。

171 :デフォルトの名無しさん:2007/10/20(土) 04:45:28
aho

172 :デフォルトの名無しさん:2007/10/20(土) 06:30:17
>>170
確かに国際化は意識して対応しないとまともに動かないけど
それってsunは他言語のことなんて知りません、手抜きですって告白してるようなものなんだが

173 :デフォルトの名無しさん:2007/10/20(土) 06:52:51
Sunは、NetBeansを支援しているだけ。建前上は。

174 :デフォルトの名無しさん:2007/10/20(土) 21:09:54
国際化で一番ひっかかるとこってどこだろうね。
やっぱフォントまわりかな。
文字列はダブルバイトでも1文字でカウントしてくれるし、
ファイルにはUnicodeで書き出するようにすればてっとり早い。

でもアプリの性質にもよるか。
エディタのように文字を扱うのは問題おきやすいかもね。

175 :デフォルトの名無しさん:2007/10/20(土) 23:01:36
最近は見なくなってきたけど昔は Reader,Writer を使わずに
InputStream, OutputStreamで処理してる糞アプリや糞ライブラリ
をよく見かけたな…

176 :デフォルトの名無しさん:2007/10/21(日) 00:04:32
NetBeansの日本語問題は直すつもりがないらしーぜ

177 :デフォルトの名無しさん:2007/10/21(日) 00:59:58
使ってないから別にいいよ

178 :デフォルトの名無しさん:2007/10/21(日) 03:01:53
どういうところが糞な

179 :デフォルトの名無しさん:2007/10/21(日) 03:46:16
http://videointroplayer.web.fc2.com/v.htm?ii9YN1kO-TK36%+8mdKsm-z3pn32%+WhqyiIrhz0F110%+iwCjWdz0Gid150%+Kjtps4byn7a119%+@1@_%E4%BC%9A%E9%95%B7%E7%89%A9%E8%AA%9E

180 :デフォルトの名無しさん:2007/10/21(日) 06:58:55
>>175
よく見かけるほどJavaアプリがあったのか

181 :デフォルトの名無しさん:2007/10/21(日) 08:31:45
確に、GUI関係は何とかした方がよい。
Appletもいらない。


182 :デフォルトの名無しさん:2007/10/21(日) 10:23:38
↑Appletはとても役に立っているから株やってみろ。まったく見識がないところは見逃してやるがなw

183 :デフォルトの名無しさん:2007/10/21(日) 13:00:16
Appletはこれからだよ〜。

184 :デフォルトの名無しさん:2007/10/21(日) 13:07:28
AppletよりJava Web Startの方がいいように思うんだが、なんか使ってるとこないねぇ……。

185 :デフォルトの名無しさん:2007/10/21(日) 13:21:20
比べるものじゃなくて、どっちも必要だと思うよ〜。

186 :デフォルトの名無しさん:2007/10/21(日) 14:02:14
Web Startってどういう場合に使うものなの?
アプリ配布じゃ駄目なのか?

187 :デフォルトの名無しさん:2007/10/21(日) 14:08:52
>>186
バージョンが上がってもユーザーは自分の意志でダウンロードしなくていい。

望めばデスクトップのアイコンやスタートメニューのエントリも作ってくれる(後からでも)。
あたりまえだがアンインストールにも対応してる。


188 :デフォルトの名無しさん:2007/10/21(日) 14:47:22
つまりバグを大量に仕込んだまま出荷しても、ほとんどのエンドユーザに気づかれずにアップデート可能ということか。

189 :デフォルトの名無しさん:2007/10/21(日) 15:02:20
組み込み型DBつかってたりプラグインのあるアプリには使えないんじゃないの。

190 :デフォルトの名無しさん:2007/10/21(日) 15:07:53
>>188
エロゲメーカーにもってこいの機能だな。

191 :デフォルトの名無しさん:2007/10/21(日) 15:30:05
>>189
普通にローカルファイルだって使えるし、組み込みDBやプラグインだっていける。
Eclipse RCPをJava Web Startで配布することも可能だよ。
ttp://help.eclipse.org/help31/index.jsp?topic=/org.eclipse.platform.doc.isv/guide/java_web_start.htm

192 :デフォルトの名無しさん:2007/10/21(日) 16:59:03
Java Web Startか
思い出せるのはV2CとTopCoderぐらい
他にももっと見てきたはずなんだが

193 :デフォルトの名無しさん:2007/10/21(日) 16:59:35
Looking Glassもそうだったか?

194 :デフォルトの名無しさん:2007/10/21(日) 17:49:40
>>184
WebStartは配布技術だからWebStartアプレットというのもある
まぁ、WebStartアプリケーションのほうがはるかに使いやすいけど

今のJavaだとWebStartはデスクトップなどへのショートカット、
アプリケーションの追加と削除でアンインストールが出来るなど大幅によくなってるが
スタンドアロンアプリでもショートカットやアンインストールやってほしいのにねぇ

リッチクライアントは不特定多数を相手にしたものではなくて特定のユーザー向けだから
業務アプリとかやってないとあまり見る機会はないかもしれない

195 :デフォルトの名無しさん:2007/10/21(日) 18:02:05
WebStart普通に便利だしJavaアプリケーションの配布では結構使われてはいるんだけど
そもそもJavaアプリケーションで有名なものが少ないからWebStartの知名度も…

196 :デフォルトの名無しさん:2007/10/21(日) 18:27:12
今まで俺が使ったJavaのアプリケーションっていったら、
JDiskReportとJudeぐらいかなあ。

197 :デフォルトの名無しさん:2007/10/21(日) 18:43:27
NetBeansとかEclipseとかIDEAとかJDevはなしか

198 :デフォルトの名無しさん:2007/10/22(月) 00:17:16
V2Cを忘れて何でここを見てるんだか。

Appletは、JavaQuickStarter使えば劇速になるので
これからまだ延びるかもしれないと思った。
JQSについては、
ttp://download.java.net/jdk6/binaries/
ttps://jdk6.dev.java.net/6uNfaq.html
参照。
要は、prefetchです。

199 :デフォルトの名無しさん:2007/10/22(月) 01:15:18
とりあえずJavaSE6は起動速度、動作速度に関して
進歩のほとんどなかった5.0から大幅によくなってるので
だいぶ未来は明るいと信じたい

200 :デフォルトの名無しさん:2007/10/27(土) 18:27:01
以下、微妙にスレ違い&手前味噌だけど…晒してみる。

コード署名が必要なJavaWebStartアプリの開発をするときには、
maven2のwebstart-jnlp-pluginを使うと、幸せになれる。
http://sqs.cmr.sfc.keio.ac.jp/tdiary/20070709.html

コード署名証明書の値段が高すぎで買えない!という場合には、
http://sqs.cmr.sfc.keio.ac.jp/tdiary/20051003.html
こちらを。

以下、まだ作りかけ・証明書期限切れですが:

http://sqs.cmr.sfc.keio.ac.jp/app/SourceEditor.jnlp
http://sqs.cmr.sfc.keio.ac.jp/app/MarkReader.jnlp

前者のほうは、クライアントローカルかつ環境非依存に、
フォント埋め込みPDFファイルを作れるようにするために、
JavaWebStartでIPAフォントを配布して利用している。

後者のほうは、LAN内のマシン複数台を使って分散並列処理が
できるように、JavaWebStartで起動した分散プロセス群が
Pure P2P的に通信して、グリッドを作れるようにしてある。


201 :デフォルトの名無しさん:2007/10/27(土) 19:46:02
WebStartの場合、おもにB2Bや社内アプリのように相手が特定できる用途がほとんどで
あらかじめ信頼できるように登録しておくという手が普通に使われるんで
あんま問題になってない感じ

202 :デフォルトの名無しさん:2007/10/27(土) 21:06:36
それは AWT/Swing ネタなのか?
っとか思ったけどム板のJava関連のスレで適切なのってないのな…

203 :200:2007/10/27(土) 22:29:24
…それじゃ、「Swingでがんばりました」的ネタを投下します。

たとえば、Preferencesを設定するGUIを作るときには、
左画面にJTree、右画面にその選択範囲のエディタを配置する形で、
2ペイン構成のGUIとする場合が多いと思います。
http://www.sociomedia.co.jp/160

でも、この手のGUIで作業をすると、左画面と右画面をマウスで
行ったり来たりするのが、ちょっとわずらわしい。
また、左画面と右画面の関係が直感的に分かりにくい。

そこで、左のJTree画面上で任意の範囲をドラッグして選択できるようにし、
その選択部分のフォーカスが右エディタ画面の該当個所に投影される
ような仕組みを作ってみました。

http://sqs-xml.sourceforge.jp/sqs-core/doc/screenshot/SourceEditor.png
こんな感じ。
高機能GUIコンポーネントとしての再利用性の追求は、
まだ全然やっていないけれど、需要あるでしょうか?
こういう部分を含む全体を、Apache Licenseで開発しています。


204 :デフォルトの名無しさん:2007/10/27(土) 23:10:27
Preferencesを設定するGUIって普通作らない部類だからなぁ
多いとは思えない

アプリでいくらでも上書きできるから、ちょっとした保存くらいにしか使い道がないと思うんだけど
そういうアプリとなると通常Windowsがメイン環境になるし、設定箇所なんてWindowの位置保存程度だろう
ならばレジストリ直接開いたほうが速い

意味のある値ならばxmlなり別ファイルにするはず
ただし、選んだ部分を一気に出してほしいというインターフェースはわりとある
その場合、右側のペインにもちゃんとスクロールバーつけといてね
特に難しいことではないので高機能ってのがわからんのだが、ここが便利!という売り文句がないと難しいぞ

205 :デフォルトの名無しさん:2007/10/27(土) 23:13:18
「需要あるでしょうか?」ってのが良く分からんのだけど、
そういうのって自分が必要だと思うから作るんじゃないの?

206 :デフォルトの名無しさん:2007/10/27(土) 23:25:24
>>204
200じゃないけど
>アプリでいくらでも上書きできるから、ちょっとした保存くらいにしか使い道がない
ってどういう意味?
JavaアプリなのにわざわざWindows依存にしてレジストリが出てくるのも
よくわからないんだけどどういう状況を想定してるのかしら…?

207 :200:2007/10/28(日) 00:22:19
> 意味のある値ならばxmlなり別ファイルにするはず

っていうか、XMLエディタを作っているのですよ。

> そういうのって自分が必要だと思うから作るんじゃないの?

説明が難しいのだけれど、

階層的な構造をまたいで、
離れた枝と枝を見比べながら編集をするときに、
ちまちまと必要のない枝を閉じて、必要な枝だけを開いて、
画面内に収まるようにしてから作業をするのは、かったるい。

また、階層的な構造をまたいで、
離れた枝から枝へドラッグするときに、
マウスドラッグで画面をオートスクロールさせて
画面の外にある別の枝を探しながら作業をするというのは、
スクロール量の制御がやりにくいし、
うっかり途中でドラッグを放してしまいそうで、危なっかしくてイヤ。

こんなふうに感じるのって、俺だけなのかな?と。


208 :デフォルトの名無しさん:2007/10/28(日) 00:32:29
>>206
Preferencesの実装としてWindowsであればレジストリを使っている

>>207
>っていうか、XMLエディタを作っているのですよ。
XMLエディタです、とあなたは一言も言ってないのにそんなの他人がわかるかい

209 :200:2007/10/28(日) 00:49:03
先に、

> たとえば、Preferencesを設定するGUIを作るときには、
> でも、この手のGUIで作業をすると、

と、断っているように、Preferencesを設定することが目的ではありません。
Preferencesについて言及したのは、「この手のGUI」について
問題提起するための、「たとえば」の話です。

また、

> http://sqs.cmr.sfc.keio.ac.jp/app/SourceEditor.jnlp

として、ここで提案しているGUIの動作内容が、
JavaWebStartで実際に動くようなURLを示しており、
これを起動してみれば、Preferenceエディタではなく、
XMLエディタであることは、すぐに分かるのではないかと思います。

で、

> Preferencesの実装としてWindowsであればレジストリを使っている

っていうのは、regeditのこと? あれ、使いやすいですか?


210 :デフォルトの名無しさん:2007/10/28(日) 01:10:19
D&Dが難しい場合(スクロールが必要とか)は、コピペを使うなぁ。
コピペできるように作っておいてくれないと無理だけど。

> http://sqs.cmr.sfc.keio.ac.jp/app/SourceEditor.jnlp
今作ってるのはツリー表示のとこはD&Dもコピペもできないみたいね
その代わり、ポップアップメニューに便利そうなものがあるけど。

211 :デフォルトの名無しさん:2007/10/28(日) 01:11:44
なんとかく理解した。
アプリケーションに組込む設定機能を作るコンポーネントの話をしているのに
Preferencesを設定するツールの話をしていると勘違いしているのだな?
それでWindows環境ならPrefenrecesの実装がレジストリだから
レジストリエディタで直接弄ればいいんじゃね?って話がでてきたと…

212 :200:2007/10/28(日) 01:26:32
Preferencesといえば、Java Preferences APIの、
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6396599
このバグに悩まされております…。

WindowsではPreferencesの保存先にレジストリを用いているので、
このバグは出ないのだけど。


213 :デフォルトの名無しさん:2007/10/28(日) 01:35:21
>>203のスクリーンショット一枚でXMLエディタだとわかる人はそうそういまい。

んでみてると汎用XMLエディタにはみえんね。
だとしたら設定項目用ということならツリー構造を見せる必要もないと思うんだけど。

214 :デフォルトの名無しさん:2007/10/28(日) 01:38:02
>>212
スレタイ嫁。
それにバグパレードに載ってるんだからバグだろうさ。
お前が悩んでいることをここに報告してどうするつもりなんだ?
それは困ったね、よしよし、と慰めてもらいたいのか?
スレタイに関係のない質問をしたいなら質問スレへ、
何かの課題をやってもらいたいなら宿題スレへいけ。

215 :200:2007/10/28(日) 01:41:21
>>210

やっぱりコピペだよね。

ところで、階層構造のノードをペースト先とするときには、
「そのノード自身(置き換え)」
「兄ノードとして挿入」
「弟ノードとして挿入」
「子供ノードとして挿入」といったように、
何通りかがあるのだけれど、Ctrl-Vで張り付けるとしたら、
どれをデフォルトにするのが感覚的に正しいのだろう?

ちなみにFreeMindでは、
「ノードのアイコンの微妙に上のほうを指しているときは兄として挿入」
「ノードのアイコンの微妙に下のほうを指しているときは弟として挿入」
「ノードのアイコンの右端のほうを指しているときは子供として挿入」
的なGUIを実現しているけれど、

JTreeでは、getClosestPathForLocationとかだと、
指定したx,yがどのノードに一番近いか、ということしかわからないので、
むずかしい。


216 :デフォルトの名無しさん:2007/10/28(日) 01:41:41
Preferencesって言葉を初めて知ったw

217 :デフォルトの名無しさん:2007/10/28(日) 01:48:07
>>215
感覚的には弟として挿入かな
CTRL+SHIFT+Vだったら子供として挿入とかもありかもしらん

218 :200:2007/10/28(日) 02:33:52
>>214
Preferences APIでの保存先の実装は、
Windowsではレジストリ、LinuxなどではXML形式のファイルとして保存される。
ここでの話題にもビミョーに関連すると思ったので、話のついでに書いてみた。
bug_idを示せば、ほかのひともvoteしてくれるかもしれないし。
でもまぁ、ここはGUIのスレなので、スレ違いですね。ごめん。


これから「汎用のもの」を目指して、
XMLエディタの開発を進めていこうと思っています。

個人的にはSwingというかJTreeというか特にTreeCellRendererの
あたりが好き:-)なので、階層構造を編集するためのGUIコンポーネントを、
ユーザ側・開発者側の両面から、もうちょっとだけ使いやすくする
工夫についても、取り組んでみるつもり。

コメントくれた人、ありがとう。名無しに戻ります。


219 :デフォルトの名無しさん:2007/10/28(日) 13:08:22
>>215,217
一瞬、VIPスレだっけと思ってしまった俺は病んでいる。

リッチなSwing部品、という点で言うとSwinglabで作ってたりするけど
画面ごとの仕組みを含んだライブラリって決定版がないね。
>>203の仕組みも、そんなに便利かなぁと思う。
左で選んだのが右にタブでどんどん、というのでもいいし
左で選ぶの面倒だから、eclipseなんかみたいに項目フィルタあった方が便利だし。
設定パネルなら、一度に見せる必然性ってあんまないのよねぇ・・・

220 :デフォルトの名無しさん:2007/10/28(日) 15:02:26
よくあるやりかたとしては、
ウィンドウをSplitPaneで分割したり、複数のウィンドウを開いたりして、
それぞれの画面で、同じ文書の、別の場所を表示できるようにする、
というものがある。

MVCできちんと作ってあって、
同じModelに対して複数のViewを表示できるのなら、わりと簡単に実現できる。

Eclipseとかでは、タブを画面内でドラッグすると、
左右ないし上下での好みのスタイルで画面分割できる。
また、タブを画面外までドラッグすると、
新しいウィンドウを開くことができる。
こうした機能は、操作性もわりといいと思う。




221 :デフォルトの名無しさん:2007/10/28(日) 15:04:56
Swingでも、JTabbedPaneのタブへのドラッグ動作についての作り込みと、
JToolBarのfloatable機能を組み合わせれば、似たようなことができると
思うのだけど、面倒くさいよな


222 :_:2007/11/01(木) 18:01:56
//ラベル作成
Border wborder = new LineBorder(Color.white, 1);
JLabel Ac1 = new JLabel("");
Ac1.setBorder(wborder);
Ac1.setHorizontalAlignment(JLabel.CENTER);
Ac1.setBounds(400,100,80,30);
add(Ac1);
// ボタン作成
btnEnter =new Button("追加");
btnEnter.addActionListener(this);
add(btnEnter);
btnEnter.setBounds(150,250,80,80);
//ボタンイベント
public void actionPerformed(ActionEvent e){
Button bt = (Button)e.getSource();
if(bt==btnEnter){
Border wborder = new LineBorder(Color.black, 1);
Ac1.setBorder(wborder);
Ac1.setText("Push");
}
}

ボタンを押したら指定の場所にラベルが表示されるようにしたいのですが
この方法ではなぜか出来ないのですがどうしてでしょうか
どなたか教えてください

223 :デフォルトの名無しさん:2007/11/01(木) 18:28:27
>JLabel Ac1 = new JLabel("");

Ac1 がローカル変数だからじゃね
たぶん actionPerformed の中から見てる Ac1 と別物

224 :_:2007/11/01(木) 18:39:11
どうすればよいのでしょうか?

public void actionPerformed(ActionEvent e){
Button bt = (Button)e.getSource();
if(bt==btnEnter){
JLabel Ac1 = new JLabel();
Ac1.setBounds(400,100,80,30);
Ac1.setText("Push");
}

このように書いてみたんですがまったく表示されません.

225 :デフォルトの名無しさん:2007/11/01(木) 18:55:26
>>224
add(Ac1);

226 :デフォルトの名無しさん:2007/11/01(木) 22:16:24
>>225
addも書き加えましたが出来ませんでした。

本当に困ってます。
誰か助けてください。

227 :デフォルトの名無しさん:2007/11/01(木) 22:17:03
全ソースうpれ

228 :デフォルトの名無しさん:2007/11/01(木) 22:34:06
これなんですがまったく出来ません。
public class Practice extends JFrame implements ActionListener{
Button btnEnter;
public static void main(String[] args){
Practice frame = new Practice();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(50, 50, 900, 700);
frame.setTitle("研究のGUI");
frame.setVisible(true);
}
Practice(){
JPanel p = new JPanel();
btnEnter = new Button("追加");
btnEnter.addActionListener(this);
add(btnEnter);
btnEnter.setBounds(250,120,80,80);
getContentPane().add(p, BorderLayout.CENTER);
appRun();
}
public void appRun(){
}
public void actionPerformed(ActionEvent e){
Button bt = (Button)e.getSource();
if(bt==btnEnter){
JLabel Ac1 = new JLabel();
Ac1.setBounds(400,100,80,30);
Ac1.setText("Push");
add(Ac1);
}
}
}

229 :デフォルトの名無しさん:2007/11/01(木) 23:28:35
なんつーかgetContentPaneつかっていたりつかわなかったりばらばらだな
コンストラクタで設定したり、mainの中だったりここも不統一だし

レイアウトマネージャもしらんっぽいね
そこから勉強したらどうかな

230 :デフォルトの名無しさん:2007/11/01(木) 23:29:40
add(Ac1);
のあとに、画面の再描画させたらええんちゃうかな?

コマンドは忘れた

231 :デフォルトの名無しさん:2007/11/01(木) 23:30:39
>>229
それや、add(Ac1);の前にgetContentPaneがいるんや

232 :デフォルトの名無しさん:2007/11/01(木) 23:35:58
たぶん、BorderLayout.CENTER の JPanel に全面覆い隠されてるんじゃないか
JPanel なくしてみ

getContentPane は最近は要らない

233 :デフォルトの名無しさん:2007/11/01(木) 23:47:16
JPanelをなくすとなぜか画面が全てボタンになってしまいます

add(Ac1);の前にgetContentPaneを書いても変わりませんでした。

どなたかお手数ですがやってみてもらえないでしょうか?




234 :デフォルトの名無しさん:2007/11/01(木) 23:51:02
じゃあレイアウトマネージャをなくす。

setLayout(null);

235 :デフォルトの名無しさん:2007/11/01(木) 23:51:29
>>233
だからレイアウトマネージャが基本なんだから勉強してよ
コンテントペインはボーダーレイアウトがデフォで、
パネルはフローレイアウトがデフォってことでしょ?

推奨サイズとかも覚えてください

236 :デフォルトの名無しさん:2007/11/01(木) 23:53:20
>>234
何も考えずにそれをすると一番難しいんだけどね

JPanelに推奨サイズを指定してpack、
JPanelはnullレイアウトというのならまだわかるけど

setBoundsというのが真っ先に出てきたあたりで何を参考に作ったのかが気になる

237 :デフォルトの名無しさん:2007/11/01(木) 23:54:50
ButtonをJButtonに変えろよ
こんな形でAWTとSwingを混在させるなw

238 :デフォルトの名無しさん:2007/11/01(木) 23:56:57
偉そうなわりに、ズバリの回答書く奴いないのがなんとも

239 :デフォルトの名無しさん:2007/11/02(金) 00:04:29
偉そうな>>238がズバリの回答を待つとしよう
重要なヒントや答えまででてるのにこれ以上何を言うのか楽しみだ

240 :デフォルトの名無しさん:2007/11/02(金) 00:19:49
ボタンはJButtonにしたら普通の大きさになったんですが
肝心のラベルがボタンを押しても出てきません

ただそれがやりたいだけなのに何故なんでしょうか?
正直どなたか全文を書いていただけないでしょうか?


241 :デフォルトの名無しさん:2007/11/02(金) 01:33:33
ヒント200%だしてるのにそれを無視して全部おしえるなんてこの板ではあんまりありえん

答えだけがほしければ宿題スレへどうぞ

242 :デフォルトの名無しさん:2007/11/02(金) 01:52:16
>正直どなたか全文を書いていただけないでしょうか?

つ 練炭

243 :デフォルトの名無しさん:2007/11/02(金) 01:59:48
>>240
勘違いすんな。ここはくだすれでもないし初心者スレでもない。

244 :デフォルトの名無しさん:2007/11/02(金) 03:04:48
public class Practice extends JFrame {
 JPanel labelsPanel;
 public Practice (){
  JButton appendLabelButton = new JButton ("ラベルを追加");
  appendLabelButton.addActionListener (new ActionListener(){
   public void actionPerformed(ActionEvent event){appendLabel();}});
  JPanel buttonPanel = new JPanel();
  buttonPanel.setLayout(new FlowLayout());
  buttonPanel.add(appendLabelButton);
  labelsPanel = new JPanel();
  labelsPanel.setLayout(new FlowLayout());
  labelsPanel.setPreferredSize(new Dimension(400, 400));
  add(buttonPanel, BorderLayout.NORTH);
  add(labelsPanel, BorderLayout.CENTER);
 }
 void appendLabel(){
  JLabel helloLabel = new JLabel ("Hello");
  helloLabel.setBorder(BorderFactory.createLineBorder(Color.white, 1));
  helloLabel.setHorizontalAlignment(JLabel.CENTER);
  helloLabel.setPreferredSize(new Dimension(80,30));
  labelsPanel.add(helloLabel);
  labelsPanel.revalidate();
 }
 public static void main (String[]args){
  SwingUtilities.invokeLater(new Runnable(){
   public void run(){
    Practice frame = new Practice ();
    frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
    frame.pack();frame.setVisible(true);
   }
  });
 }}

245 :244:2007/11/02(金) 03:06:18
>>228
こんな感じでいいのか?
今度から宿題は宿題スレいってくれな?

246 :デフォルトの名無しさん:2007/11/02(金) 04:17:09
>>24
超マジレスに笑ったw
でもこれがさらっと書けない職業プログラマが多いんだよな・・・

247 :デフォルトの名無しさん:2007/11/02(金) 07:21:14
自演乙

248 :デフォルトの名無しさん:2007/11/02(金) 07:37:07
口だけの奴が多い中 >>244 はまともだな

249 :デフォルトの名無しさん:2007/11/02(金) 07:53:50
というか研究のGUIってなんだw
何を研究したらあんなソースになるのか知りたいw

250 :デフォルトの名無しさん:2007/11/02(金) 10:19:13
>>228
実行して出てきたGUIにワロタ。センターに足す動けばいい的例。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Test extends JFrame {
public Test() {
JButton button = new JButton("Add Label");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
add(new JLabel("Hello, world!"));
getContentPane().validate();
}
});
add(button, BorderLayout.SOUTH);
setSize(100, 100);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new Test();
}
});
}
}


251 :デフォルトの名無しさん:2007/11/02(金) 11:34:19
>>246
インナークラスとかAWTイベントディスパッチスレッドとかしらないで
GUI扱おうとしてぼろぼろになる例はよくみるね
特にスレッド周りがぼろぼろくさい

基本を勉強せずOJTという名の下に無理やり投入される場合そうなりやすい
デバッグ時には動いていてもたまに動かないとか厄介なバグいれこむのがうまい連中がね

252 :デフォルトの名無しさん:2007/11/03(土) 12:38:14
>>200
証明書の有効期限切れてるよ

253 :デフォルトの名無しさん:2007/11/03(土) 13:58:53
>>252
200で言及済

次回以降、安定版のリリースのときには署名タイムスタンプを使うことにするよ。


254 :デフォルトの名無しさん:2007/11/04(日) 13:41:02
windowsのJFileChooserとかJOptionPaneでキャンセルが"取消し"って表記されるのがウザい…
windows標準みたいに"キャンセル"って書くにはどうすればいいだろ…

255 :デフォルトの名無しさん:2007/11/04(日) 13:44:43
よくそんなん気づいたな

256 :デフォルトの名無しさん:2007/11/04(日) 14:20:13
UIManager.put("FileChooser.cancelButtonText", "キャンセル");
UIManager.put("OptionPane.cancelButtonText", "キャンセル");

257 :デフォルトの名無しさん:2007/11/04(日) 14:25:19
すごい・・・
いつも思うのですが、そのようなフィールドやプロパティの名前はどうやって調べているのでしょう。
ソースを見るしかないのでしょうか?

258 :デフォルトの名無しさん:2007/11/04(日) 14:38:37
このへんとか
ttp://homepage1.nifty.com/algafield/UIDF.html

259 :デフォルトの名無しさん:2007/11/04(日) 14:59:07
こういうの探してました!
ありがとうございます。

260 :254:2007/11/04(日) 15:35:25
>>256
ありがとう。
これで見た目ほとんどwindowsっぽくなった。
FileChooserの複数選択をwindowsみたいにドラッグでびやーって範囲広げてその中全選択とかやってみたいけど、
さすがにこれはキツいな。


261 :デフォルトの名無しさん:2007/11/04(日) 16:10:38
単純なファイル選択ダイアログならAWTのほうつかうといいよ
機能がほとんどないけど、それで足りるのならね

262 :デフォルトの名無しさん:2007/11/04(日) 16:26:51
ファイルダイアログだけど、WindowsのAWTはなんか見た目がしょぼくない?
MacはAWTは普通だけど、Swingの方がしょぼ過ぎる。

Desktop Java Technology Today TS-3160
ttp://developers.sun.com/learning/javaoneonline/j1sessn.jsp?sessn=TS-3160&yr=2007&track=2

ここを見ると、Future Platform FeaturesにNative FileChooserってあるから、そのうち改善されると思うけど。

263 :デフォルトの名無しさん:2007/11/04(日) 22:26:28
1.
URL url = Hoge.class.getResource("../resources/book.gif");
2.
URL url = ClassLoader.getSystemClassLoader().getResource("../resources/book.gif");

このような2つのコードでリソースを取得しています。
1をHogeクラスで使用するとちゃんとURLが返ってきますが、Hogeのインスタンスであるインナークラスから呼び出すとnullが返ってきます。
しかし2のようにシステムクラスローダから呼び出すと、Hogeからの場合もHoge中のインナークラスからも呼び出すことができます。

そこで質問なのですが、
Q1.インナークラスからの相対パスは、そのインナークラスの属するクラスからの相対パスとは異なるのか(上でいうHogeのインスタンスのインナークラスとHogeクラスの関係)
Q2.上の実行を、eclipseで行うと結果が逆になる(2がうまくいかず、1がうまくいく)のですがその理由。

答えづらい質問ですみません。もしよろしければ教えてください。

264 :デフォルトの名無しさん:2007/11/04(日) 23:44:44
相対やめたほうがいいでよ
どうせリソースは決まった場所におくでそ

265 :デフォルトの名無しさん:2007/11/04(日) 23:51:10
確かにそうですよね。
なんだかそこらへん結構複雑そうですし・・
分りました。以後リソース読み込みは絶対指定にします。

ありがとうございました!!

266 :デフォルトの名無しさん:2007/11/08(木) 01:13:35
今更だがV2Cすげー

267 :デフォルトの名無しさん:2007/11/09(金) 12:10:05
JOptionPaneに、「次からこのメッセージを表示しない」とかチェックボックス付けたいんですけど、
何かいい方法ないですかねぇ

268 :デフォルトの名無しさん:2007/11/09(金) 12:14:15
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.add(new JLabel("本文"));
panel.add(new JCheckBox("次からこのメッセージを表示しない"), BorderLayout.SOUTH);
JOptionPane.showMessageDialog(parent, panel);

269 :デフォルトの名無しさん:2007/11/09(金) 12:35:18
>>268
おー、早いレスありがと〜。

270 :デフォルトの名無しさん:2007/11/09(金) 23:36:58

いまからSwingアプリケーションつくるからなんかお題くれ
条件はネット接続しないこと
 
開発環境はJDK6u3、NetBeans6.0
 

271 :デフォルトの名無しさん:2007/11/09(金) 23:44:52
>>270
Jazzの自動作曲。高品質の楽譜の表示と印刷。

272 :270:2007/11/09(金) 23:45:27
>>271
勘弁してくれ

273 :デフォルトの名無しさん:2007/11/09(金) 23:50:42
swing jazzじゃなくてもいいんだが…

swingはあくまでもguiのフレームワークに過ぎないから、
swingでアプリケーションを作るって言っても範囲が広すぎるんじゃないかな?
guiでアプリ作るけど何か無いかなって言うようなものだから、もう少し幅を狭めないと。

274 :デフォルトの名無しさん:2007/11/09(金) 23:51:07
>>270
ドロー系お絵書きソフト、SVGでの読み書き可能なものを、OSSで。


275 :デフォルトの名無しさん:2007/11/09(金) 23:51:49
>>271
少しジャンルは違うがヤマハの「初音みく」とか言うの良さそうじゃないか?

276 :デフォルトの名無しさん:2007/11/09(金) 23:51:56
じゃあ懐かしのブラウザ HotJava を今の技術で作って

277 :270:2007/11/09(金) 23:54:59
SVGとか仕様しらねー
HotJavaとか初めて聞いたし

Java暦1年半ですがなにか?

278 :デフォルトの名無しさん:2007/11/10(土) 00:00:39
クリップボードアプリケーションとか。
・・・Swing関係ないかw

279 :デフォルトの名無しさん:2007/11/10(土) 00:01:59
>>276
JEditorPaneで原型はすぐに作れるね。

>>277
ttp://java.sun.com/products/archive/hotjava/index.html

>>275
もちろん既にみくみくしてるぜ。
付属のVSTiプラグインをJavaから使おうとかもしているけど中々時間が取れない。

280 :デフォルトの名無しさん:2007/11/10(土) 00:02:19
>>274
Javaじゃないが、それの本命はinkspaceだろうな。

281 :デフォルトの名無しさん:2007/11/10(土) 00:04:38
swingの勉強がてらに作るならお絵描きアプリくらいが適当なのかも

282 :デフォルトの名無しさん:2007/11/10(土) 00:09:38
ローカルファイル閲覧専用とかはアレだし、ブラウザはネット接続って点で270の要求を満たしてないかも。
何かオンリーワンな機能をつけたドローイングかペインティングアプリケーションとかいいんじゃないか?

283 :デフォルトの名無しさん:2007/11/10(土) 00:16:53
linerみたいな画像ビューア

俺が作ってるのもそれだけどw

284 :デフォルトの名無しさん:2007/11/10(土) 01:37:42
作りたいの作ればとしか・・・

285 :デフォルトの名無しさん:2007/11/10(土) 01:38:47
PDFの背景を初音ミクにかえるアプリつくるわ

286 :デフォルトの名無しさん:2007/11/10(土) 02:27:50
>>285
Swingと関係なくないか?

あとPDFオープンするのに環境依存コード書くはめになるのもちょっと嫌かな

287 :デフォルトの名無しさん:2007/11/10(土) 02:31:13
まあ、きもちいいネタだ。

288 :デフォルトの名無しさん:2007/11/10(土) 03:03:23
はやくu4こねーかなぁ
JFileChooserおそくてかなわんわ

289 :デフォルトの名無しさん:2007/11/10(土) 03:56:17
>>288
だな。死ぬほど遅い。いくつかlazyになるように書き直した。

290 :デフォルトの名無しさん:2007/11/10(土) 10:20:21
u4 で直ることになってるの?

291 :デフォルトの名無しさん:2007/11/10(土) 12:52:45
まだin progressの状態。

292 :デフォルトの名無しさん:2007/11/10(土) 13:47:36
今まで、エディタとプロンプトでしこしこがんばってきたんだけど
金もできたので聞きたいとおもう。GUIつくるだけなら、JBuilderっていい?
無料版はつかったことあるけど、有料版は良いの?

293 :デフォルトの名無しさん:2007/11/10(土) 13:59:21
今のJBuilderは昔とぜんぜん違うぞ
SwingベースからEclipseベースになった

少なくとも昔のJBuilderはこつをつかまないと
しらないうちにボーランドのコンポーネント使って汚染されて
他の環境で手軽にコンパイルできなくなるのが欠点だった

あとJBuilderはGUI作成においてNetBeansぬいたことはないよ

GUI使う、使わない以前に開発効率考えるとIDE使わないのは論外だと思う

294 :デフォルトの名無しさん:2007/11/10(土) 14:00:46
>>292
NetBeansでいいんじゃね?

295 :デフォルトの名無しさん:2007/11/10(土) 14:12:00
>>293-294 thx
NetBeansの方が上なんだ。じゃあそうするよ。

IDE使わないと論外か。。じゃあ、買ってみるよ。

ありがとう。

296 :デフォルトの名無しさん:2007/11/10(土) 14:37:01
NetBeansは無料のIDEだぞ

297 :デフォルトの名無しさん:2007/11/10(土) 15:19:43
最近はOSしか買わなくなったなぁ。

298 :デフォルトの名無しさん:2007/11/10(土) 17:06:09
>>297
まだUbuntu使ってないの?

299 :デフォルトの名無しさん:2007/11/10(土) 17:27:59
まだUbuntu使ってるの?

300 :デフォルトの名無しさん:2007/11/10(土) 17:35:40
もうエディタと make でシコシコするのは時代遅れですかそうですか
でも V2C はIDE使ってないらしいね

301 :デフォルトの名無しさん:2007/11/10(土) 18:02:48
時代遅れも何もそんな時代はあった事がない

302 :デフォルトの名無しさん:2007/11/10(土) 18:21:57
ツール=IDEでポトペタできて楽ちん
ソフトウェア=IDEがGUI部を隠蔽しててわずらわしい
規模によりけりじゃないかなぁ。

303 :デフォルトの名無しさん:2007/11/10(土) 18:32:02
IDEはぽとぺたというよりコーディングが楽になるほうがおおきいかと
まぁ、groupLayoutは自前でコードかくきにはならないけど

304 :デフォルトの名無しさん:2007/11/10(土) 19:39:51
いきなりですまないのだが、JLabelやJButtonを縦書きにする方法ってある?
横長じゃなくて縦長のボタンやラベルを使いたいのだけど。

305 :デフォルトの名無しさん:2007/11/10(土) 20:43:28
new JLabel("<html>縦<br>書<br>き<br>ラ<br>ベ<br>ル");
new JButton("<html>縦<br>書<br>き<br>ボ<br>タ<br>ン");

306 :デフォルトの名無しさん:2007/11/10(土) 20:51:00
>>303
そうだよね。補完とかリファクタリングとか使用状況検索とか便利だよね。
GroupLayoutは最初は便利だと思ったけど、弄ってるといきなり位置が
すっ飛んだりして、いまいち使いづらい。よく出来てるとは思うんだけど。
エディタをもっと分かりやすくすれば良さそうだけど、どうすればいいのやら。
最近は、従来のものを組み合わせた方が思ったようにできていいなと思ってる。

>>304
その発想はなかったw

307 :デフォルトの名無しさん:2007/11/10(土) 20:52:04
>>305
その発想もなかったw

308 :デフォルトの名無しさん:2007/11/12(月) 14:58:06
90度回転させて縦にできるといいんだけどな

309 :デフォルトの名無しさん:2007/11/12(月) 17:34:14
SwingのL&Fでかっこいいのないかなぁ。
国外のL&Fを今日一つためしてみたんだが、ダブルバイトが全滅。
ttp://regis.risp.pl/
まあ、外観に変化つけるときってフォントいじるから当然かな。

L&Fを自分でこさえるのは手間かかりすぎてそこまで時間とれないし、
MetalのOceanで負けとくのが今のとこ勝ちなのか。orz

310 :デフォルトの名無しさん:2007/11/12(月) 17:46:49
ニンバスニンニン

311 :デフォルトの名無しさん:2007/11/12(月) 21:05:59
>>310
おおっ!
なんかすごそうだけど、まださっぱりわからん。
Java SE 6 Update N Early Access Programてのを落としてくればいいのかな。
これそのうちJDKに正式採用されるのかしら?

312 :デフォルトの名無しさん:2007/11/12(月) 21:11:42
Synthって流行ってないのかね?

313 :デフォルトの名無しさん:2007/11/12(月) 21:18:14
あれは結局全部自分で定義しなきゃいかんからLFそのものを作りたい人向けとちがうの?

314 :デフォルトの名無しさん:2007/11/12(月) 21:23:09
そうだけど、ホームページの壁紙やボタン、仕切り線みたいな感じで素材化されてないのかなと。
Javaアプリケーションが普及してないってことか。

315 :デフォルトの名無しさん:2007/11/12(月) 21:39:08
画像ファイルはりつけたボタンになってしまってもいいの?
アイコンはともかくボタン全体が画像で作られているのはどうも。
融通効かないし。

ボタンが数個しかないアプリとか、ゲームとかならそういうのも良いかと思うけど。

316 :デフォルトの名無しさん:2007/11/12(月) 22:45:12
>>308
作ってみた

public class VerticalJButton extends JComponent{
private JButton button=new JButton(){
public void repaint(long tm,int x,int y,int width,int height){
VerticalJButton.this.repaint(tm,y,1-x,height,width);}};
public VerticalJButton(String text){
add(button);button.setText(text);
enableEvents(AWTEvent.MOUSE_EVENT_MASK|AWTEvent.MOUSE_MOTION_EVENT_MASK);}
public Dimension getPreferredSize(){
Dimension d=button.getPreferredSize();
return new Dimension(d.height,d.width);}
public void doLayout(){
button.setBounds(0,1-getWidth(),getHeight(),getWidth());}
protected void paintChildren(Graphics g){
Graphics2D g2=(Graphics2D) g.create();
g2.rotate(Math.PI/2);g2.translate(button.getX(),button.getY());
button.paint(g2);g2.dispose();}
protected void processMouseEvent(MouseEvent e){
e=new MouseEvent(button,e.getID(),e.getWhen(),e.getModifiers(),e.getY()-button.getX(),-e.getX()-button.getY(),e.getClickCount(),e.isPopupTrigger(),e.getButton());
button.dispatchEvent(e);}
protected void processMouseMotionEvent(MouseEvent e){
e=new MouseEvent(button,e.getID(),e.getWhen(),e.getModifiers(),e.getY()-button.getX(),-e.getX()-button.getY(),e.getClickCount(),e.isPopupTrigger(),e.getButton());
button.dispatchEvent(e);}}

317 :デフォルトの名無しさん:2007/11/12(月) 23:11:37

NetBeans5.5.1使ってるんですが、GUIビルダーで質問です

JFrameフォームでフレームをつくり、
別途JPanelフォームでパネルを複数つくります。

アプリケーション起動後に、パネルを好きなタイミングで、フレームにadd()したいのですが、
SwingLayoutの影響でうまくいきません。

なにか特別なやり方があるのでしょうか?
それともGUIビルダーでは不可能なのでしょうか。
 

318 :デフォルトの名無しさん:2007/11/12(月) 23:46:28
>>316
g2.dispose();

なんだけど、これはpaintComponent()をオーバーライドしたときとか、
Graphicsオブジェクトを使ったあとはかならず実行したほうが良いの?
今までそうしてこなかったのだけど、APIリファレンスみると、
したほうが良いような感じなんだけど、いまいちわかりにくい日本語。

319 :デフォルトの名無しさん:2007/11/12(月) 23:54:29
少なくともpaintComponentでは不要じゃないかい?
OverrideしなくてもpaintComponentは呼ばれるだろうし

320 :デフォルトの名無しさん:2007/11/12(月) 23:56:01
>>318
Graphics#disposeでグラフィックコンテクストを開放しないといけないのは自分でそれを確保したとき。
他人が確保したものを許可無く勝手に開放するのは行儀が悪い行い。
paintComponent()をオーバーライドしたときに開放するとかはどこに書いてあったの?

321 :デフォルトの名無しさん:2007/11/13(火) 00:08:10
>>320
dispose
public abstract void dispose()このグラフィックスコンテキストを破棄して、使用中のシステムリソースがあればそれを解放します。
Graphics オブジェクトを dispose の呼び出し後に使用することはできません。
Java プログラムが実行されていると、短時間フレーム内で多数の Graphics オブジェクトを作成できます。
ガベージコレクタのファイナライズプロセスも同じシステムリソースを破棄しますが、関連するリソースを手動で解放することが推奨されます。
つまり、長期間に渡って完了まで実行されない可能性があるファイナライズプロセスに依存するよりも、
このメソッドを呼び出してリソースを手動で解放してください。

コンポーネントの paint メソッドと update メソッドに引数として提供される Graphics オブジェクトは、
こうしたメソッドが復帰したときにシステムによって自動的に解放されます。
効率性を確保するには、Graphics オブジェクトがコンポーネントまたはほかの Graphics オブジェクトから直接作成された場合だけ、
そのオブジェクトを使って終了したときに dispose を呼び出すようにプログラミングしなければなりません。
-----------------------------------

ということらしいんだが、dispose()不要のような必要なような、ケースバイケースのような
説明に読めたのよ。スマソ。

322 :316:2007/11/13(火) 00:12:45
>>318
その g2 は g の単なるキャストじゃなくて、 g.create() で生成したものだから。
放っておいても害はないけど、解放するべきなんじゃない?

323 :デフォルトの名無しさん:2007/11/13(火) 00:15:10
>コンポーネントの paint メソッドと update メソッドに引数として提供される Graphics オブジェクトは、
>こうしたメソッドが復帰したときにシステムによって自動的に解放されます。

Graphics g = createGraphics();
//--->呼び出し
paintComponent(g);
//<---復帰
g.dispose();

こういうことでしょ。きっちり書いてるじゃん。

324 :デフォルトの名無しさん:2007/11/13(火) 00:17:35
>>322
いやだからさ、おかしいなんていってないよ。
g.dispose()と書かれたソースを今までみなかったのだけど、
開放しといたほうがいいのかななどと思ったの。

325 :デフォルトの名無しさん:2007/11/13(火) 00:18:32
これってどういう意味?

> Java プログラムが実行されていると、短時間フレーム内で多数の Graphics オブジェクトを作成できます。

326 :デフォルトの名無しさん:2007/11/13(火) 00:22:01
>>323
paintComponentについては暗黙の了解?
説明としては抜けてる。ソース嫁といわれりゃあっそう。

327 :デフォルトの名無しさん:2007/11/13(火) 00:34:39
>>326
paintComponentについてはJComponentのドキュメントを読めば理解できるかと。

328 :デフォルトの名無しさん:2007/11/13(火) 00:36:15
>>321
それ勘違いしてるぞ
ファイナライザとか関係ない

329 :デフォルトの名無しさん:2007/11/13(火) 00:42:26
何でよ

330 :デフォルトの名無しさん:2007/11/13(火) 00:43:16
なんでφならいざが?

331 :デフォルトの名無しさん:2007/11/13(火) 01:08:35
>>310-311
Nimbusはイメージを使わずに、すべてJava2Dで書かれてるから、解像度に依存しないのがいいよね。

332 :デフォルトの名無しさん:2007/11/13(火) 01:13:28
>>316
動作確認してみた。いいね!
やり方もエレガントだと思う。
アイコンもついてたら完璧かも。

333 :デフォルトの名無しさん:2007/11/13(火) 01:25:17
>>331
うん。

作ってるアプリが終盤で、外観の体裁ととのえてるとこなんだけど、
今無理してL&Fいじくるより、Nimbusが標準になるまで待ったほうがトクだろうなぁ。
L&Fを自分で作ったりカスタマイズしてももすぐに時代遅れになるしね。
Metalも出てきた当時はけっこうクールに見えたし。
L&Fは服きせかえるみたいに使い捨てていきたい。

334 :デフォルトの名無しさん:2007/11/13(火) 01:46:39
disposeは後始末
自前でgraphicsを生成した場合必須

ファイナライズの話はFileのIOをcloseしないというのと同じ話

そしてかってに呼び出し側でcloseしたらあかんだろというのと同じ

335 :デフォルトの名無しさん:2007/11/13(火) 20:01:22
>>325
> Java プログラムが実行されていると、短時間フレーム内で多数の Graphics オブジェクトを作成できます。

いっぱい作成できると、なんとなく、うれしいジャン?
とりあえず、「多数の Graphics オブジェクトを作成する可能性があります」の誤訳に一票

336 :デフォルトの名無しさん:2007/11/13(火) 20:14:10
久しぶりに覗いたぜ。

invokeLaterはinvokeLater間違えてAWTのSystem Queueに送ったことあるorz
MIDPのGraphicsにdisposeがなくてどうやってメモリ空けようか悩んだことがあるorz

Nimbusのマルチバイト化けは直ったらしいがあれ重くないか?スケーラブルなLaF目指してるんだろうけど・・・。
ただでさえ、未だにjavaは重いという迷信が信じられてるからなぁ。

337 :デフォルトの名無しさん:2007/11/13(火) 20:18:53
迷信というかJFileChooserは今でもひどくない?
ファイル多いとファイルリストの取得とは別の何かで重くなってる印象が・・

338 :デフォルトの名無しさん:2007/11/13(火) 22:27:10
>>337
JavaSE6u2からすごいことになった
どうすればあそこまで悪化できるのかと

339 :デフォルトの名無しさん:2007/11/13(火) 22:52:07
>>338
今はソース見れるんだから自分で調べられるよ

340 :デフォルトの名無しさん:2007/11/13(火) 23:51:12
今OpenJDKで公開されてるソースと今公式ビルドに使われてるJDKのソースは違うぞ。
jdk6がOpenJDKベースになるのはまだ先。

341 :デフォルトの名無しさん:2007/11/14(水) 00:16:14
>>339
そういう意味じゃないだろ

342 :デフォルトの名無しさん:2007/11/14(水) 03:38:43
>>337
今までひどすぎるとまでは感じなかったんだが、そんなにたくさんのファイルリストを
出すという局面に遭遇してないだけだったりする。
100個くらいリストが出ててもなんともないと思うんだが、いくつくらいだとひどいことになるの?

343 :デフォルトの名無しさん:2007/11/14(水) 07:17:29
なんでファイル列挙系はバグが入りやすいんだろうな。
なんか共通したミスでもあるんだろうか?

344 :デフォルトの名無しさん:2007/11/14(水) 07:27:12
ネットで調べると、でかい圧縮ファイルがあるとおかしくなるらしいね

345 :デフォルトの名無しさん:2007/11/14(水) 09:30:48
>>336
7年後サクサク動くニンバスみて、軽いけどもう古いよなこのLaFとかいってるような気がすれ

346 :デフォルトの名無しさん:2007/11/14(水) 09:32:31
ニンバスかっけぇんだけどさ、どうもスクロールバーが馴染めない…

347 :デフォルトの名無しさん:2007/11/14(水) 09:47:09
文字はみんな□になってるけどSwingSet2のデモみるかぎり、遅いとは感じないな。Nimbus。
そんでこれいつからリリースされるのかな。

348 :デフォルトの名無しさん:2007/11/14(水) 12:36:16
>>342
u2以降は1個の表示でもすごい遅い
u1まではさくさく

まぁ遅いといわれたり直ったりエンバグ繰り返してるのがJFileChooserだから・・・

349 :デフォルトの名無しさん:2007/11/14(水) 16:43:44
JFileChooserはネイティブ頼りなんだっけ?エンバグの発生率は仕方ないと思う。

350 :デフォルトの名無しさん:2007/11/14(水) 17:18:38
デスクトップのzipをどけると改善するみたい。開発で頻繁にテストする人はzipを
一時的にどけておくといいかも。

351 :デフォルトの名無しさん:2007/11/14(水) 19:29:57
つーことは、JFileChooserはファイルの中身を調べるようなことまでやってるのかな。

352 :デフォルトの名無しさん:2007/11/14(水) 19:34:34
Windowsのエクスプローラとか、Javaのクラスパス解決処理みたいな
どっかのAPIを流用したことによる副作用とかいうオチだったらちょっと笑える

353 :デフォルトの名無しさん:2007/11/14(水) 19:45:28
DirectXでIMEの例があるから笑うに笑えない・・・。

354 :デフォルトの名無しさん:2007/11/15(木) 16:57:27
>>351
実行形式の場合、そのファイルのリソースとしてアイコンが格納されているんだから、
API経由か直接かは知らんけど、当然ファイルの中身は見てるはず。
で、PEとかELFとか、実行形式のフォーマットを決め打ちできない分、
アイコン読み取りが複雑になってるんじゃなかろうか。

355 :デフォルトの名無しさん:2007/11/15(木) 17:06:04
JFileChooserのアイコンってFileSystemView#getSystemIconでしょ
これが遅いってことか?

356 :デフォルトの名無しさん:2007/11/15(木) 21:18:41
>>354
つまり世の中のGUIは全てファイル選択ダイアログは遅くて使い物にならない、と
それにu1まではそんなに遅くなかった
1.4.2はいくつかのバージョンが遅いけど

357 :デフォルトの名無しさん:2007/11/15(木) 22:11:41

http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=29872

質問です
イベントでコンポーネントを追加したいんですが、追加と同時に表示させるにはどうすればいいんでしょうか?
repaint()ではダメみたいです
 

358 :デフォルトの名無しさん:2007/11/15(木) 22:19:39
>>357
jPanel1.revalidate()

359 :デフォルトの名無しさん:2007/11/16(金) 00:00:48
ああ、Swingか・・・。

360 :デフォルトの名無しさん:2007/11/16(金) 00:51:25
>>357
HelloボタンをaddしたあとでMyFrame#pack()を呼ぶ

361 :デフォルトの名無しさん:2007/11/16(金) 01:08:45
追加はされてるけど、flowレイアウトで1つしか表示できないサイズだから消えてるようにみえるだけ
>>358で正しいよ

362 :デフォルトの名無しさん:2007/11/16(金) 01:24:19
revalidateだけでは>>357のソースでは「追加と同時に表示させる」ことにはならないから>>360で正しいよ。

363 :デフォルトの名無しさん:2007/11/16(金) 01:27:07
>>362
おまえはバカか
それはレイアウトマネージャの問題であってrevalidate()で十分尽くされているんだから358が正しいんだよ

364 :357:2007/11/16(金) 01:31:12
レス感謝です

>>361
revalidate()って意味ありますか?
revalidate()せずに、pack()だけで思い通りに表示されました

365 :デフォルトの名無しさん:2007/11/16(金) 01:39:53
>>364
いろいろ作っているうちに分かるよ。pack()でレイアウト変更後の再描画なんてよっぽど
異常なUIでもない限りやらないよ。pack()の方でフレームを広げてボタン押してみ。

366 :357:2007/11/16(金) 02:01:39
たとえば、ウインドウを最大化してるにも関わらずpack()でウインドウが小さくなるのはおかしいということでしょうか?

367 :デフォルトの名無しさん:2007/11/16(金) 02:33:01
それでいいならいいけどさ。

368 :デフォルトの名無しさん:2007/11/16(金) 03:04:30
JFileChooser パフォーマンス問題
http://blogs.sun.com/katakai/entry/jfilechooser_performance_issue

369 :デフォルトの名無しさん:2007/11/16(金) 05:59:08
jdk6uN b07では直ってるらしいよJFileChooser問題
ttp://download.java.net/jdk6/6u10/promoted/b07/changes/jdk6uN-b07.html

370 :デフォルトの名無しさん:2007/11/16(金) 06:06:06
>>369
Bug ID: 6578753
Votes 65
Synopsis JFileChooser in 6u2 slow on Windows
Category java:classes_swing
Reported Against
Release Fixed
State In progress, bug
Related Bugs 6491795 , 5050516
Submit Date 10-JUL-2007

371 :デフォルトの名無しさん:2007/11/16(金) 09:37:29
アプリの二重起動についてなんだが、二重起動を確認したらそこでシャットダウン
するのはよくある方法だと思うんだけど、たとえばNetBeansはもっと賢いやり方
をしている。

NetBeansが動いている状態で、それが最小化した状態でタスクバーにあるとする。
その状態でNetBeansのアイコンをクリックするなりして二重に起動しようとすると、
二重起動にはならずに、タスクバーにあるものが画面に現れる。
これってどうやったらできるのかな・・・。

372 :デフォルトの名無しさん:2007/11/16(金) 10:52:18
>>371
Javaにはミューテックスなかったっけ?

373 :デフォルトの名無しさん:2007/11/16(金) 11:34:11
排他制御用のオブジェクトは同一VM上の同期に使うやつで
プロセス間は別の仕組み考えないとダメ。

374 :デフォルトの名無しさん:2007/11/16(金) 11:36:21
>>371
起動用のアプリを別に分ける。
というか、そのためにexeを用意しているようなもん。

375 :デフォルトの名無しさん:2007/11/16(金) 11:55:44
んじゃあ手動でミューテックス作っちゃうとか。
テキストファイルで現在起動中のプログラム・インスタンス数を数えておいて、
起動時に中身が1なら起動しない。
もし>>371のいうような挙動をしたいなら、プログラムでミューテックスファイルを監視しておいて、
ファイルの中身が2になった瞬間タスクバーからプログラムを出せばいい。

ここまで書いて思ったんだが、Swingでタスクバーから出すとかそういうそうさって出来たっけ?

376 :デフォルトの名無しさん:2007/11/16(金) 12:02:05
自プロセスのウィンドウを最小化解除するだけなら Frame#setState でできる

でもそのファイルを監視ってのはどうするんだ
タイマで1秒ごとにタイムスタンプを確認するとかか

377 :デフォルトの名無しさん:2007/11/16(金) 12:09:54
>>376
ファイルやフォルダで変更があったときにイベント起こすような機能なかった?

378 :デフォルトの名無しさん:2007/11/16(金) 12:13:16
>>377
NIO2で追加予定。
標準APIでなくてもいいなら、JConfigとかには付いてたと思うし
>>376のやり方で自力で実装してる人も多いんじゃないかと。

379 :371:2007/11/16(金) 19:25:50
一眠りして考えたんだが、
アプリが独自にポート開いて監視しておく。
別プロセスでアプリが起動したら、そのポートを叩く。
応答が返ってきたら、そのプロセスはシャットダウン。
応答した側のプロセスはFrame#setState
でいけそうな気がするんだが、けっこうめんどくさいね。
もっと簡単にできないもんだろか。

380 :デフォルトの名無しさん:2007/11/16(金) 19:36:00
Windowsファイアウォールとかにブロックされそうだが

381 :デフォルトの名無しさん:2007/11/16(金) 19:48:42
ファイルサーバとかでもたまに思うんだけど、
OSはロックサーバが標準で付いててほしいんだよな
CVSのロックサービスだってそのためについてるんでしょ。

AbstractFactoryパターンでインタフェース書いて、Winだけ実装作ろうかな

382 :デフォルトの名無しさん:2007/11/16(金) 20:36:05
Preferencesを使うってのはどうかな。

383 :デフォルトの名無しさん:2007/11/16(金) 20:42:19
http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/guide/lang/preferences.html

# 複数の VM による同時アクセスを、この API でより強力にサポートしないのはなぜですか。
同様に、複数の設定の更新を結合して単一トランザクションに組み込み、
すべて更新するかまったく更新しないセマンティクスを適用しないのはなぜですか。

この API は、持続性のある基本的なデータ記憶域として使用し、データベースの代わりとしては使用しません。
この API は、標準の設定/構成リポジトリ上に実装できるようにすることが重要です。
これらのリポジトリのほとんどでは、データベースのような機能は提供していません。
これらのリポジトリは、この API の設計目的を満たしています。

384 :デフォルトの名無しさん:2007/11/16(金) 22:05:37
>>380
ファイアウォールの設定はユーザの責任じゃないかい。

385 :デフォルトの名無しさん:2007/11/16(金) 22:08:21
なんにせよファイルにフラグを記録するやり方だと、アプリが異常終了して、
フラグの書き換えができなかった場合、次に起動しようとすると困ったことに
なりやすい。

386 :デフォルトの名無しさん:2007/11/16(金) 22:10:30
プラットフォームネイティブのMutexやセマフォを使うか、
オンメモリデータベースを使うってのがいいのかも。

387 :デフォルトの名無しさん:2007/11/17(土) 01:29:41

ファイルチューザ同等の機能を持つファイルチューザを独自に作る場合、
こうやらねーとすっげー遅くなるぜ?っていうTips教えてくれ
 

388 :デフォルトの名無しさん:2007/11/17(土) 02:04:22
>>387
普通に作れば遅くならんだろ…
JFileChooserはネイティヴLaFに近づけるために
いろいろ細工してるのが裏目に出てるだけだと思うぞ

389 :デフォルトの名無しさん:2007/11/17(土) 02:25:54

http://touch.moe.hm/touchup_pict/download/1195233390.jpg
こんな上下2ペイン構成のGUIアプリケーションを作りたいと思ってます

上ペインのJButtonをクリックすれば、下ペインのJPanelが切り替わるように作ればいいと思うんですが
普通どのようにやりますか?

■作ったサンプルではこのようにしてます
 初期化で空のpanel1をつくり、その上にpanel2をadd()する
 別のボタンが押されたら、panel1に載っているpanel2をremove()、panel3をadd()、validate()


ちょっとわかりづらいかもしれませんが、もっといいやり方ありそうでしょうか

390 :デフォルトの名無しさん:2007/11/17(土) 02:29:27
っ CardLayout

391 :デフォルトの名無しさん:2007/11/17(土) 02:39:43
TabbedPaneで、タブにアイコン貼付ければいいような気がした。

392 :デフォルトの名無しさん:2007/11/17(土) 04:22:23
>>390
使ったことないけどカードレイアウトに同意

393 :デフォルトの名無しさん:2007/11/17(土) 05:09:46
>>388
Fileが遅くなってるから、普通に作ったら遅くなるよ。
しったか乙。

394 :デフォルトの名無しさん:2007/11/17(土) 05:12:23
JFileChooserの速いバージョンを作りたければ、FastFileを使うといいよ

395 :371:2007/11/17(土) 10:35:15
>>379のやり方実装してみたけど、うまくいくみたい。

396 :デフォルトの名無しさん:2007/11/17(土) 10:40:08
>>395
やってみた事ないけど、
途中でトラぶってコネクションクローズの前に死んだ場合は二重起動しちゃうの?

397 :デフォルトの名無しさん:2007/11/17(土) 10:44:33
>>396
ローカルホストの接続でとらぶるって、どんなときにとらぶるかな。
そこらへんの想定外のことがあるかどうかは気にはなってんだけど。

398 :デフォルトの名無しさん:2007/11/17(土) 10:54:59
>>397
他のアプリがそのポートを使っていて重複する場合

ファイアーウォールが入っていてはじかれる場合

今どきめずらしいけどLANがついてないマシンだとどうなるっけ?

399 :デフォルトの名無しさん:2007/11/17(土) 15:21:39
> 今どきめずらしいけどLANがついてないマシンだとどうなるっけ?

頭大丈夫か?

400 :デフォルトの名無しさん:2007/11/17(土) 17:21:11
スタンドアロンのPCがあるからネットワークサービス止めて試してみようか?
たぶん、接続段階で例外投げられたはずだけど。
jarでクレw

クローズ処理をfinalyでやってるなら途中でシャットダウン入るとfinalyブロック中断されるからそれでもアウトだね。

401 :デフォルトの名無しさん:2007/11/17(土) 17:46:33
イーサネットがあってもなくてもlocalhost(127.0.0.1)にアクセスできるだろ…
# TCP/IPを外してあればできないのか?

402 :デフォルトの名無しさん:2007/11/17(土) 17:49:59
ネットワーク完全にとめるとループバックももちろん完全にだめ
Win95以前はまずループバックアダプタいれての開発がデフォだったな

403 :デフォルトの名無しさん:2007/11/17(土) 17:56:04
そういうアダプタ用MACアドレスもあるのかな?別に無くても困らないけど。

404 :デフォルトの名無しさん:2007/11/17(土) 18:15:28
>>402
そもそも Win95 ってデフォルトのインストール
だと TCP/IP が組込まれてないようなOSだろ…

405 :デフォルトの名無しさん:2007/11/17(土) 18:27:56
独自のネットワークサポートするから良いんです。

ゲイツ「インターネットなんて一般人にはやんねーよw」

時代の産物だからな。時代の流れか。

406 :デフォルトの名無しさん:2007/11/17(土) 20:13:33
JDK1.5がそもそもWin95だともう動かんのじゃね?
とくにGUIまわり。

407 :デフォルトの名無しさん:2007/11/17(土) 20:40:37
http://java.sun.com/j2se/1.5.0/system-configurations.html
Win95はサポート外だね

408 :デフォルトの名無しさん:2007/11/17(土) 20:43:39
サポートの話なんて誰もしてないだろと

409 :デフォルトの名無しさん:2007/11/17(土) 21:24:54
設定でTCP/IP無効にしたらダメなんじゃねぇの?

410 :デフォルトの名無しさん:2007/11/17(土) 21:57:44
アプリの性質にもよるわな。
DBやネットに接続するようなアプリなら、イーサカードが使えない環境に
インストールされることなんて無いしさ。

411 :デフォルトの名無しさん:2007/11/17(土) 22:11:04
「カードがない環境ではlocalhostもアクセスできない」
というのが当然みたいにいってるが、だれか試したことがあるのか?
その理屈だとNICがない環境ではローカルでのサービスは動かんのだが。

412 :デフォルトの名無しさん:2007/11/17(土) 22:53:06
>>411
NICないと実際IPサービスはうごかんよ
ループバックいれてれば動くが

という常識的な流れだろ

413 :デフォルトの名無しさん:2007/11/17(土) 22:57:37
>>407
あんまり関係ないけど・・・、SunはMacのJVMはやってないんだね。
Macはどこがやってるんだろ。Macユーザじゃないからうといんだわ。

Winが80%をしめてるといわれるわりに、周囲にはMac使いが多くて、
じゃあその人たちにも使えるようにとJavaで作り始めたんだが、
肝心のSunはサポートしてないんだね。

414 :デフォルトの名無しさん:2007/11/17(土) 22:59:52
まあいいじゃん。今時カード入ってないマシン使ってる人なんて
ごくごく少数。クレームついても仕様ですで押し通せば。

415 :デフォルトの名無しさん:2007/11/17(土) 23:02:33
>>413
Macはアップルがやってる
6がまだ出てこない…

416 :デフォルトの名無しさん:2007/11/17(土) 23:11:12
>>415
そうなんだ。ありがーと。
6をはやくだしてほしいわ。5で動くようにと思ってたんだけど、
6を知るとついつい6の機能を使ってしまったような・・・

417 :デフォルトの名無しさん:2007/11/17(土) 23:43:28
NetBeans6 + JavaSE6 + glassfish2の組み合わせの軽さは異常

418 :デフォルトの名無しさん:2007/11/18(日) 00:40:44
>>416
ついこの前にそれではまった…
JFileChooser で FileNameExtensionFilter 使ってて
Mac OS X で動かねーって言われるまで気が付かなかった

# Apple は 6 を出す気があるんだろうか…?

419 :デフォルトの名無しさん:2007/11/18(日) 00:44:26
Mac なんて捨てていいよ

420 :デフォルトの名無しさん:2007/11/18(日) 01:03:20
Macの6はDPのままだにぃ。
Cocoa-Javaバインディングも放置になったし、やる気なさそう。


421 :デフォルトの名無しさん:2007/11/18(日) 01:19:05
OpenSource版ががんばってくれるんじゃね?

422 :デフォルトの名無しさん:2007/11/18(日) 01:42:24
多少のタイムラグはあってもMacでも6は出るだろうし、
7でも8でも出てくると思うけどね。
Javaはいつも明日の言語なんだよな。w
明日はごちそう、でも今日は無い。w

423 :デフォルトの名無しさん:2007/11/18(日) 01:44:33
AppleはJavaに対してなかなか気合いが入ってると思うけどなぁ。
ただ、やろうとしていることに作業が追い付いてないだけで・・・。

424 :デフォルトの名無しさん:2007/11/18(日) 02:05:50
前は気合い入ってたんだけど、新しめの機能のフレームワークに対応する
Javaバインディングを出すのはもうやめてる。

LeopardではBridgeSupportでなんとかできるのかもしれないけど。


425 :デフォルトの名無しさん:2007/11/18(日) 02:09:41
てかMacOS Xてunix互換なんだろ?CPUもIntel系にしたのに既存のコード使えないのか?

426 :デフォルトの名無しさん:2007/11/18(日) 02:18:14
>>423
時間が経つごとに気合がなくなっていってるっぽいよなぁ

>>425
CPUがインテルでもベースがUNIXでも肝心なGUIライブラリは別物なので結局移植作業は必要

427 :デフォルトの名無しさん:2007/11/18(日) 02:20:29
プロセスとかファイルシステムとかあたりはunix互換でも、
グラフィックとかサウンドとかあたりは全然別物だし・・・

428 :デフォルトの名無しさん:2007/11/18(日) 02:38:18
追加機能が増えたりバージョンあがるごとに仕様かわったりで
追従していくの大変すぎるんじゃないのかなぁ。
JVMさえ開発すればどのマシンでも動きますなんてただの宣伝文句で、
それ作ろうとしたらすげー大変だと思うよ。

429 :デフォルトの名無しさん:2007/11/18(日) 13:28:02
技術者の量・質を考えたらAppleがJavaを管理するのは無理そうだな
できあいの既存のものを改造していくのには慣れていても、
継続的にある規格に互換させていく作業ってのはやってこなかっただろうし。

430 :デフォルトの名無しさん:2007/11/18(日) 14:37:15
>>428
それが基本ソフトとよばれるものなんだけどな
互換性をいかに維持するか

新しいOSごとにアプリ全部作り直しなんてやってられん

このスレ的にはApple捨ててよで結論でてるだろ
5.0のときの対応も遅かった

431 :デフォルトの名無しさん:2007/11/18(日) 14:41:36
マック使う人はアポー謹製ソフトさえありゃ満足なんだから放置しとけばいい

432 :デフォルトの名無しさん:2007/11/18(日) 16:17:40
デザイナはAdobe製ソフトも入ってないと困るよ

433 :デフォルトの名無しさん:2007/11/18(日) 20:54:18
mac osxはカーネルより上のレイヤーはXですら自前だからなぁ。
GUIが自前とか言う次元超えてるよ。

434 :デフォルトの名無しさん:2007/11/19(月) 00:29:34
>>431
V2Cが無ければとても困ると思うの

435 :デフォルトの名無しさん:2007/11/19(月) 03:17:02
なんとかとハサミは使いようというじゃない。w

436 :デフォルトの名無しさん:2007/11/19(月) 10:31:31
せっかちな人にはJavaは向かないね

437 :デフォルトの名無しさん:2007/11/19(月) 13:22:30
マック信者をJavaで逆洗脳してみたいwww

438 :デフォルトの名無しさん:2007/11/19(月) 13:46:40
Mac信者かつJava信者ですが何か?

でもCocoa-Javaはいらないと思ってる。
そういうのはRubyとかでいいんじゃないかな。
Javaはクロスプラットホームが基本です。

クロスプラットホームだけど、Macでは見た目を良くする。
ttp://developer.apple.com/technotes/tn2007/tn2196.html

その他のプラットホームでは、Nimbusに期待してる。
ttps://nimbus.dev.java.net/spec/index.html

どっちも解像度に依存しないし、スモールサイズなんかは共通して使える。

439 :デフォルトの名無しさん:2007/11/19(月) 14:33:56
6での大幅な改善点がデスクトップアプリの強化(大量にバグもちだが)と
大幅な高速化(1.3.1から1.4.0より大きな変化)だから
もうすぐ1年たつというのにMacに6がきてないのは苦しい

440 :デフォルトの名無しさん:2007/11/19(月) 15:16:27
アップルの独自実装だからmac版が早くなるか分からないんじゃない?
糞実装を何とかしてくれればそれで良いと思うが。

441 :デフォルトの名無しさん:2007/11/19(月) 19:21:46
まあぶっちゃけV2Cが1.4.2で動く事からも
Macが6をサポートしなくても当分困らないんだよな
5.0が動くだけでも十分じゃね

442 :デフォルトの名無しさん:2007/11/19(月) 20:59:51
そんな後ろ向きな姿勢じゃいかんよ

443 :デフォルトの名無しさん:2007/11/21(水) 21:07:37

JTreeで幹や葉をクリックしたり、矢印キーで移動させたときに
選択している幹や葉のファイルを別のJListに表示したい。

この場合、イベントはvalueChangedでいいんでしょうか?
それとなにか注意点とかありますでしょうか
 


444 :デフォルトの名無しさん:2007/11/22(木) 00:03:52
データ転送じゃね?

445 :デフォルトの名無しさん:2007/11/22(木) 12:44:57
>>443
マニュアル読んで判断したならいいでしょ
あとvalueChangedってメソッド名だけ出しても普通の人はわからんと思うよ

446 :デフォルトの名無しさん:2007/11/22(木) 15:08:37
下手にJTreeのvalueChangedいじったらパフォーマンス落ちね?

447 :デフォルトの名無しさん:2007/11/22(木) 15:31:17
上手にいじれば良い

448 :デフォルトの名無しさん:2007/11/22(木) 19:38:15
それが出来るならこんなところで確認してないと思うが?
まあ、ドキュメント読めば分かることだが。

449 :デフォルトの名無しさん:2007/11/22(木) 23:58:16
JFrameの下部にStatusBarを取り付けようとしています。
単純にBorderLayout.SOUTHで問題はないのですが、BorderLayout.SOUTHに当たる領域は後々別に使用するかもしれないので、完全に別領域として下部に取り付けたいのです。
イメージ的にはsetJMenuBar()と同じような感じです。
どのような実装がよいでしょうか?

450 :デフォルトの名無しさん:2007/11/23(金) 00:10:09
JPanel に BorderLayout をセットして JFrame の CENTER に置く
JFrame の SOUTH をステータスバーのために使って、
JPanel の SOUTH を後々別に使用するときのために取っておく

451 :デフォルトの名無しさん:2007/11/23(金) 00:13:45
そのようにした場合、ステータスバーをセットするJFrameのCENTERにコンポーネントを加えたいときにわざわざそのJPanelを取得後貼り付けないといけないので避けたいです。
他にはないでしょうか?

452 :デフォルトの名無しさん:2007/11/23(金) 00:25:57
>JFrameのCENTERにコンポーネントを加えたいときにわざわざそのJPanelを取得

いや、最初から、JFrame じゃなくて JPanel の CENTER に入れればいいじゃん。
わざわざ取得っていうか、JPanel 作ったときにそれをフィールドに持っとけばいいだけでそ?

本当にどうしても JMenuBar のように振舞わせたくて他に方法がないというなら、出来ることは出来るけどちょっと面倒い。
JRootPane の中の layeredPane と glassPane と、layeredPane の中の contentPane と JMenuBar (と自分の statusBar) をレイアウトするレイアウトマネージャを書いて、JRootPane のレイアウトマネージャをそれで置き換える。

453 :デフォルトの名無しさん:2007/11/23(金) 00:27:53
Windowsに限定しちゃうかも知れないけど、
%USERPROFILE%\Local Settings\Application Data
↑のディレクトリの中に変なGUID名のディレクトリが作られてて
中を見るとJ2SDK5.0のインストーラみたいなのが入ってる。

うちの環境にはJDK6も入ってるけど、5系だけゴミ?があるので気になります。
これって削除しちゃっていいのかな?

454 :デフォルトの名無しさん:2007/11/23(金) 00:34:12
>>452
そうなのですが、どうしてもメニューバーのように扱いたかったので・・
やはりかなり面倒なことになるようですね。

丁寧に教えていただきありがとうございました。

455 :デフォルトの名無しさん:2007/11/23(金) 00:40:36
ボーダーレイアウトでいいだろ
面倒ではないだろと

456 :453:2007/11/23(金) 00:44:03
質問・相談スレに書くつもりが誤爆してました。
こちらはクローズします。ごめんよぅ。

457 :デフォルトの名無しさん:2007/11/25(日) 00:15:06
質問相談スレで聞いたところ、こちらで聞いたほうが良いと教えていただい
たので質問させていただきます。
現在、携帯電話でいうフレーム撮影機能をPC上でJAVAを用い、作りたいと考え
ております。USBカメラから動画キャプチャを行い撮影ボタンを押すとその時の
静止画がJPEGで保存するところまでは作ったのですが、写真フレーム(gif)を
動画上に表示する方法がわかりません。API集の方も探してみたのですが、見つ
けることができませんでした。誰か方法について教えてもらえませんでしょう
か??よろしくお願いします

初心者でして簡単なソースなどつけていただけると助かります。

458 :デフォルトの名無しさん:2007/11/25(日) 00:18:56
一番簡単なのは
・ImageのロードにはImageIOを使う
・JLabelを貼り付けてそれにImageをセットする

ネットで初心者かどうかってのは意味ない文章だからやめたほうがいい
知っているか知らないかだけだから

459 :デフォルトの名無しさん:2007/11/25(日) 00:23:38
JMF使ってる?

460 :デフォルトの名無しさん:2007/11/25(日) 00:23:49
動画を描画するコンポーネントのpaintComonent(...)をオーバーライドして
super呼んだ後に、drawImage(...)でOKじゃね?

461 :デフォルトの名無しさん:2007/11/25(日) 00:35:49
いや
>USBカメラから動画キャプチャを行い撮影ボタンを押すとその時の
>静止画がJPEGで保存するところまでは作った
ここにJMF使ってるならJMF流儀の動画の描画の仕方があるから動画のキャプチャをどうやってるかでやり方が決まる。

462 :デフォルトの名無しさん:2007/11/25(日) 01:30:58
JMFをつかっています。
キャプチャ部分となりますと
new Timer(100, new ActionListener(){

try {
player = Manager.createRealizedPlayer(new MediaLocator("vfw://0"));
} catch(Exception e){
System.out.println(e);
System.exit(1);
}

player.start();
ここになりますでしょうか。
ご教授よろしくお願いします

463 :デフォルトの名無しさん:2007/11/25(日) 02:44:57
>写真フレーム(gif)を動画上に表示する
これがやりたいんだよね?

ならEffect実装してProcessorからTrackControl取り出してTrackControl#setCodecChain(Codec[])で実装したEffectセットしてやれば良い。
んでProcessor#getVisualComponent()で取得したビジュアルコンポーネントを適当に張り付ければ良い。

あとはJMFのページのチュートリアルとかサンプルコード読んで。


464 :デフォルトの名無しさん:2007/11/27(火) 20:21:48
日本語を入力時、「確定はされていない文字列入力状態中」(Windowsでは文字の下に破線が引いてある状態)を調べる方法はありますか?

465 :デフォルトの名無しさん:2007/11/27(火) 20:22:47
ImmGetCompositionString

466 :デフォルトの名無しさん:2007/11/27(火) 20:23:19
ごめん、ここJavaだったorz

467 :デフォルトの名無しさん:2007/11/27(火) 20:34:01
Component に addInputMethodListener を仕掛けておけば取れるみたい?

468 :464:2007/11/27(火) 20:44:22
>>467
InputMethodEvent#getCommittedCharacterCount()
で判別できそうですね。
ありがとうございました!

469 :デフォルトの名無しさん:2007/11/29(木) 15:28:42
Java Web Startのアプリで、jnlpファイルの中で

<security>
<all-permissions/>
</security>

を設定していて、jarにはオレオレ証明書でサインしている。
確かにファイルアクセスなど自由にできるから、
この設定は有効化されているはずなんだが、
Point p = MouseInfo.getPointerInfo().getLocation();

Exception in thread "AWT-EventQueue-0"
java.security.AccessControlException: access denied (java.awt.AWTPermission watchMousePointer)

が出るのって、これはどういうことなんだろ。
JWSで動かさなければこのエラーは出ないんだが。

470 :デフォルトの名無しさん:2007/11/30(金) 14:03:31
>>469
JWSのバグでね?
そのクラス1.5からのやつだからもしかしたら・・・

471 :デフォルトの名無しさん:2007/12/01(土) 00:09:26
frameにタブだけ貼り付けたの作ると、
初めに、タブのタイトル部分に選択状態みたいなのが行くんだけど、
それをタブに貼ってある、jCheckBoxに初めから行くようにしたいんだけど、
windowsのアプリはそうなるようなんで。
どうやったら出来ますか?

472 :デフォルトの名無しさん:2007/12/01(土) 00:49:32
フォーカスのトラバーサルいじるAPI群なかったけ?

473 :デフォルトの名無しさん:2007/12/01(土) 00:54:40
初期状態ってことならオープン時にフォーカスセットしてあげれば?

474 :471:2007/12/01(土) 01:19:46
jCheckBox.requestFocusInWindow();

よく分からないけど、setVisible(true)した後しかフォーカスがいかないな…

475 :デフォルトの名無しさん:2007/12/01(土) 01:19:51
>>471
つrequestFocusInWindow()

俺はタブはいつもsetFocusable(false)するなぁ。

476 :デフォルトの名無しさん:2007/12/01(土) 01:26:01
>>474
つaddAncestorListener()

ancestorAddedでrequestFocusInWindow呼んでみそ

477 :デフォルトの名無しさん:2007/12/01(土) 01:27:34
ふつーにオープン時でいいとおも

478 :デフォルトの名無しさん:2007/12/01(土) 01:28:59
>>477
それだとタブで切り替えたときにフォーカスが移らないってことだとおも

479 :471:2007/12/01(土) 01:59:35
>>476
おーサンクスサンクス。
これで完璧だわ。AncestorAdapterは何故かないんだな

480 :デフォルトの名無しさん:2007/12/01(土) 02:59:55
アダプタクラスは実装するメソッド数が少ないか
そのインターフェースの多くが実装される可能性が高いリスナーは
利便性が低いからアダプタクラス用意しないって方針だよ。

481 :デフォルトの名無しさん:2007/12/01(土) 10:36:16
JPopupMenuの使い方なのですが、ポップアップメニューの対象によってメニュー内容を変えたい場合、一般的にどのような方法を取るのがよろしいでしょうか?
単純に対象を毎回チェックしてその対象に必要なメニューを構成する、というのはどうも気持ちが悪くて・・

482 :デフォルトの名無しさん:2007/12/01(土) 12:02:52
リスナーのフィールドにして遅延生成すればいいだけじゃない?

483 :デフォルトの名無しさん:2007/12/01(土) 12:35:03
対象の種類ごとにJPopupMenuを予め作っておく・・・・のはムダが多いか

484 :481:2007/12/01(土) 12:48:32
>>482
遅延生成とはどういうことを指すのでしょう
やはり表示毎に必要なメニューを生成という意味でしょうか?

>>483
例えば対象の種類にあらゆる属性があり、その属性ごとに必要なメニューがある場合、その組み合わせをあらかじめ作っておくのは好ましくないかと・・

485 :デフォルトの名無しさん:2007/12/01(土) 12:55:47
じゃあ、すべての項目を含めたJPopupMenuを1個用意しておいて、各JMenuItemのsetVisibleを切り替えるとか

486 :デフォルトの名無しさん:2007/12/01(土) 14:24:05
>>478
そういう意味だったのか
あの日本語からはそこまで理解できなかったよ

487 :デフォルトの名無しさん:2007/12/01(土) 14:28:15
>>481
表示される項目が全て画面に収まるのならすべていれる。
そして選択可能不可能で調整したほうがいいんじゃない?

コンポーネントによってメニューがかわるより、メニューは同じで選択可能か不可能かのほうが
ユーザーに優しいとおもわれる。
この選択肢は下のほうにあるとか上のほうにあるとかコンポーネントごとにかわっていたら厄介だ。

488 :デフォルトの名無しさん:2007/12/01(土) 15:01:14

JFrameの上には、とりえあえずJPanel置くべきですか?
 

489 :デフォルトの名無しさん:2007/12/01(土) 15:04:11
packの仕組みをしっているのならおいたほうがいい
そうでなくともパネルに機能単位でのせていったほうが楽になるかな

グループレイアウトを使うのなら場合によってはなくてもいいかも

490 :481:2007/12/01(土) 15:52:06
>>485
>>487
とりあえず全部登録しておくのが楽なようですね。
場合によってsetVisible、setEnabledで使い分けようと思います。

ご意見ありがとうございました。

491 :デフォルトの名無しさん:2007/12/01(土) 18:02:09
>>480
そうなんだ〜。まぁ、よく使うなら自分でAdapter作ればいいしね〜。

492 :デフォルトの名無しさん:2007/12/02(日) 18:44:49
LinuxのSwing上でトラックポイントのセンターボタンでスクロールしたときに
コンテキストメニューが開いちゃうんだけど、心当たりがある人いる?
JavaはSunの1.6.0_03

493 :デフォルトの名無しさん:2007/12/02(日) 19:12:28
これかな?
http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/guide/awt/1.3/designspec/popupmenu.html
>・Windows では、マウスボタン 2 マウス UP でメニューがポップアップする 
>・Motif では、マウスボタン 3 マウス DOWN でメニューがポップアップする

494 :デフォルトの名無しさん:2007/12/02(日) 21:54:41
以下の挙動で、困っています。

JNLPでデスクトップにショートカットアイコンを作成し、
そのアイコンに何らかのファイル(何でもいい)をドラッグアンドドロップすると、
「このアプリケーションは起動できません」「詳細」「了解」というダイアログが表示される。

ここで「詳細」ボタンを押すと、次のような情報が表示される。
※C:\Users\hoge\Desktop\新しいテキスト ドキュメント.txt をドラッグアンドドロップした場合。
InvalidArgumentException[ 無効な引数が指定されました: {C:\Users\hoge\Desktop\新しいテキスト ドキュメント.txt, C:\Users\hoge\AppData\Local\Temp\javaws12 }]
at com.sun.javaws.Main.launchApp(Unknown Source)
at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
at com.sun.javaws.Main$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

で、問題なのは、ここで、ドラッグアンドドロップしたファイルが、
何の断りもなく、いきなり 削除 されてしまう、ということなのです。

この不具合は、あらゆる全てのJNLPアプリで、全てのOSで再現しました。

こうした挙動を防ぐような、何らかの対策をすることは可能でしょうか?


495 :デフォルトの名無しさん:2007/12/03(月) 00:20:49
>>494
MacOSX Leopardでやろうとしましたが再現しませんでした。
何よりファイルにDnDができない。

http://bugreport.sun.com/bugreport/
で報告してください。
報告時は具体的な再現方法と再現環境を書いておくのが吉です。
ありとあらゆる、というのはちょっと曖昧すぎます。

496 :デフォルトの名無しさん:2007/12/03(月) 01:24:26
ごめん、たしかに、MacOSでは試していない。
あと、64bit用のJREやSolarisでも試せていない。

こちらで試したのは、Windows Vista, Windows XP SP2, UbuntuLinux(7.04)の上で、
1.4.2_16,1.6.0_03,1.6.0_10-ea(いずれも32bit用)。

ここまでやって、いずれの環境でも再現した。
いま、Java7でも試そうとしているところ。

Javaキャッシュビューアで、インストール済みのJNLPアプリについて
「選択されたメニューのショートカットを作成」または、
右クリックメニューで「ショートカットの作成」で、
ショートカットがデスクトップにすることができる。

そうして作られたショートカットに、
ユーザが何かのファイルを放り込むと、
そのファイルが勝手に削除されてしまう、ということ。

ユーザがデスクトップ上のメモ帳のショートカットにファイルをDnDして
開こうとして、まちがって隣のJNLPアプリのショートカットにドロップしたところ、
そのファイルが勝手に削除されてしまう、という感じ。

> 何よりファイルにDnDができない。

たぶん、そういう挙動が正常なのだと思う。

497 :デフォルトの名無しさん:2007/12/04(火) 11:36:46
質問です。JButtonがアイコンであるGIFファイルの縦横サイズより結構大きくなってしまうのですが、コンパクトにする方法は無いでしょうか?

498 :デフォルトの名無しさん:2007/12/04(火) 12:06:32
>>497
JButtonのjavadocを隅から隅まで読んで
しかるのちにボーダーのマージンを設定したらいいよ

499 :デフォルトの名無しさん:2007/12/05(水) 14:21:41
>>498
497です。できました。ありがとうございます。

500 :デフォルトの名無しさん:2007/12/06(木) 02:03:22

JFrameでgetContentPane()をしなくてもよくなったは、いつからですか?
自動的に転送されるようになったってのを読んだのですが。
 

501 :デフォルトの名無しさん:2007/12/06(木) 02:06:17
5.0

502 :デフォルトの名無しさん:2007/12/06(木) 02:10:45
即レスthx

503 :デフォルトの名無しさん:2007/12/07(金) 22:41:46
シューティングを作りたいと思ってます
メイン画面とスコア画面があって、
それぞれJPanelを継承したクラスを作ってMainPanel,SubPanelと作ろうと思ってるんですが、
この方法は値の受け渡しが面倒くさくなったり、重くなったりしますか?
普通はひとつのゲームは大体1パネルですかね?

504 :デフォルトの名無しさん:2007/12/07(金) 22:43:16
普通はゲームにSwingなんて使わなくないか?
ましてシューティングで・・・

505 :デフォルトの名無しさん:2007/12/07(金) 22:45:12
Javaの勉強もかねて作ってます
最近はSwingもだいぶ早くなったと聞いたんですが...

506 :デフォルトの名無しさん:2007/12/07(金) 22:51:48
ゲームなら、Frameに直接描けばいいと思う。
BufferStrategyを使うのも良し。

507 :デフォルトの名無しさん:2007/12/07(金) 22:52:23
400x300で24fpsくらいで試してみるといいよ。
Swingはシングルスレッドだから、パッシブ連打でも問題ないはず

508 :デフォルトの名無しさん:2007/12/07(金) 23:00:08
パッシブ連打とは?

509 :503:2007/12/07(金) 23:01:39
Frameに直接書くってことはpaintComponentメソッド内に
メイン画面用とスコア画面用の描画処理が混在してるってことですよね?
そうすると片方の画面の背景だけ変更するなどの処理とかがややこしくはならないですか?
パネルで分けるとコードがすっきりする気がするんですが

510 :デフォルトの名無しさん:2007/12/07(金) 23:05:41
パッシブ・レンダリング=描画イベントによる受動的なレンダリング(repaint())
アクティブ・レンダリング=自発的に描画を実行するレンダリング(Toolkit.sync(), BufferedStrategy)

511 :デフォルトの名無しさん:2007/12/08(土) 00:30:40
>>503
つまりWindowシステム普及前のゲームプログラミングが難しかったと思ってる?
んなことないよ

練習がてらというのならSwingつかってもいいけどメリットはあんまないとおもうよ
JLabelのアイコン指定でキャラ表示とかSwingというフレームワークで
描画や再移動とかそういうことでしょ?

途中でもっといいものを、もっと本格的なものを、となって挫折しそう

あとpaintComponentではゲームのレンダリングの処理はいれないことね

512 :デフォルトの名無しさん:2007/12/08(土) 00:31:36
さらに付け加えるとパッシブレンダリングはいわゆるトリプルバッファを使わないといけないから注意ね
ダブルバッファじゃダメ

513 :503:2007/12/08(土) 00:51:35
全体的な流れとしては、レンダリング(描画?)は各オブジェクト(敵、弾)のクラスのdrawメソッド(メソッド名は自由?)などで行い、
paintComponentはそれを呼び出すだけ。で、必要に応じてrepaint()を行うとpaintComponentが再描画されるという感じでしょうか?

514 :デフォルトの名無しさん:2007/12/08(土) 00:59:58
paintのタイミングは自前のrepaintだけじゃないからそれはやっちゃだめ
ウインドウの重なり具合とかOSが画面をいきなりリフレッシュしたりとかあるから

各オブジェクトにdrawのインターフェースを実装させるという考え方はあってる

レンダリングは自前でAというバッファへしてるとすると、
その間描画はBというバッファからイベントでフロントへ描画させる
Aのレンダリングが終わったらAとBをいれかえて、次のフレームの描画はBへ行う

バックバッファへのレンダリングとフロントへのレンダリングが重なる場合もあるという考え方ね

515 :503:2007/12/08(土) 01:09:30
ダブルバッファがいまいち理解できてないのでもうちょっと勉強してみます。
答えてくださった方どうもありがとうございました

516 :デフォルトの名無しさん:2007/12/08(土) 01:16:16
本当はJavaでゲーム作成というスレがあったんだけど最近おちちゃったんだよな
ゲーム製作板とかいろいろと斜め読みしてみるといいかも

517 :デフォルトの名無しさん:2007/12/08(土) 03:09:19
Javaでゲームってのはなかなか前衛的でおもしろいと思うんだが、
如何せんパフォーマンスが悪いのが致命的なんだよな。
いくら努力しても、一定以上FPSが上がらんとなるとどうしても敬遠したくなる。

518 :デフォルトの名無しさん:2007/12/08(土) 06:27:05
勉強として作るプログラムも題材の選び方はかなり重要だよ。
努力するほど深まって発展していく題材と、
底の浅いところですぐに打ち止めになるのがある。

519 :デフォルトの名無しさん:2007/12/08(土) 08:27:04
勉強の段階なら、何を作っても勉強になる。

520 :デフォルトの名無しさん:2007/12/08(土) 08:28:32
Javaでエロゲぐらいなら作れそうじゃね?

521 :デフォルトの名無しさん:2007/12/08(土) 09:47:04
アクションだろうがパズルだろうがなんでもできるんじゃないの。
ブロック崩しやテトリスくらいなら楽勝。
ゲーム専用機であるようなハデなアクションゲームを作りたいならお門違い。

522 :デフォルトの名無しさん:2007/12/08(土) 09:49:46
あと速く動かしたいなら画面小さくすればいいんだよ。256 * 192とか。w
昔のアーケードゲームの解像度はせいぜいその程度だったしさ。

523 :デフォルトの名無しさん:2007/12/08(土) 11:36:49
シューティングやアクションはともかくとして
リアルタイムシミュレーションとか向いてると思うけどな>java
スレッド周りとか楽々作れるし

524 :デフォルトの名無しさん:2007/12/08(土) 12:55:52
ゲ制作板で話せ

525 :デフォルトの名無しさん:2007/12/08(土) 14:32:05
>>517
まじていってるの?

526 :デフォルトの名無しさん:2007/12/08(土) 14:33:14
リアルタイムのアクションものも余裕で出来るよ
IntelCore2/2GHzでJavaで動かすとCネイティブだと1.6GHzくらいの速度になるけど
それが問題になることはまずあるまい

527 :デフォルトの名無しさん:2007/12/10(月) 01:17:57
[MainFrame.java]
public class MainFrame extends JFrame {
 public MainFrame() {
  MainPanel mp = new MainPanel();
  Container contentPane = getContentPane();
  contentPane.add(mp);
}
public void main(String[] args) {
  MainFrame frame = new MainFrame();
  frame.setVisible(true);
 }
}

[MainPanel.java]
public class MainPanel extends JPanel implements ActionListener{
 public MainPanel() {
  SubPanel sp = new SubPanel();
 }
 public void actionPerformed(ActionEvent e) {
  setBackground(Color.BLACK);
 }
}
[SubPanel.java]
public class SubPanel extends JPanel {
 public SubPanel() {
  JButton b = new JButton("メインパネルの色変更");
  b.addActionListener();
 }


528 :デフォルトの名無しさん:2007/12/10(月) 01:23:46
↑の様な構成で作りたいんですけど、うまくいきません。
ようするにSubPanelのインスタンスからMainPanelのインスタンスへ
アクセスするにはどうすればよいのでしょうか?
MainFrameでMainPanelのインスタンスをpublicでstaticにしたりいろいろやったのですが、
うまくいかないのでどなたか教えてください。

529 :デフォルトの名無しさん:2007/12/10(月) 01:47:12
>>528
SubPanelにボタンのaddActionListenerを委譲して
MainFrameからやりたいことを教えてあげればいいんじゃないの?

530 :528:2007/12/10(月) 03:21:26
>>529
すいません 委譲がいまいちわからないんですが、SubPanelとMainFrameにaddActionListener()メソッドを作り、MainFrameにactionPerformedメソッドがあるような感じですか?
今までは↓のような形で出来るかなとやっていたんですが、うまくインスタンスにアクセスできていないみたいなんです。
もし↓で出来たとしてもなにか強引過ぎる気がします。もともと構成がありえないんですかね?
[MainFrame.java]
public class MainFrame extends JFrame {
 public static MainFrame frame;
 public static MainPanel mp;
 public MainFrame() {
  mp = new MainPanel();
  Container getContentPane.add(mp);
}
public void main(String[] args) {
  frame = new MainFrame();
 }
}
[MainPanel.java]
public class MainPanel extends JPanel implements ActionListener {
 public MainPanel() {
  sp = new SubPanel();
  this.add(sp);
 }
 public void actionPerformed(ActionEvent e) {
  setBackground(Color.BLACK);}}
[SubPanel.java]
public class SubPanel extends JPanel {
 public SubPanel() {
  JButton b = new JButton("メインパネルの色変更");
  b.addActionListener(frame.mp);}}

531 :デフォルトの名無しさん:2007/12/10(月) 10:02:09
MainPanelはPaintComponentをオーバーライドしないといけない気がする…

532 :531:2007/12/10(月) 10:06:52
やっぱ要らないか

533 :デフォルトの名無しさん:2007/12/10(月) 10:45:47
>>530
設計方針とか変更不可のクラス等の制約条件とかが分からないけど
手っ取り早くやるならMainPanelとSubPanelの親子関係がそのままなのを前提に
b.addActionListener((MainPanel)getParent());

534 :デフォルトの名無しさん:2007/12/10(月) 11:19:28
俺なら
SubPanel#addColorChangeActionListener(listener){b.addActionListener(listener);}
を作る方を選ぶかな。

535 :デフォルトの名無しさん:2007/12/10(月) 12:32:25
これってSwingの話ですらなくて言語の基本の話だろ?
なんでstaticがでてきたりするんだ?
まずは言語の勉強からやりなおしたほうがいいんじゃないかい?

536 :デフォルトの名無しさん:2007/12/10(月) 12:51:30
たぶんMainFrameやMainPanelのインスタンスをSubPanelで参照する方法が分からなくて、
b.addActionListener(frame.mp);}}ってやってもコンパイルできなくて、
b.addActionListener(MainFrame.mp);みたいにできるようにクラス変数にしちゃったんだと推測。
プログラムの設計と実装の仕方を良い参考書や良いソースを見ながら勉強した方がいいと思う。

537 :530:2007/12/11(火) 00:36:38
>>536
正にその通りです
>>533
getParent()なんてのがあったんですね 

どうもありがとうございました

538 :デフォルトの名無しさん:2007/12/11(火) 13:58:13
>>530のコードを見る限り
getParent()は使わないほうがいいな
独立性が失われるのにListenner使ったりとかありえん

まず言語の基本の勉強からしたほうがいい
近道しようとしても無駄だと思う
ここ本当に基本中の基本だから

539 :503:2007/12/11(火) 17:52:44
>>538
すいませんご指摘ありがとうございます
SubPanelのコンストラクタでgetParent()しても、その時点ではMainPanelの子にはなってないということですよね
>独立性が失われるのにListenner使ったりとかありえん
これはimplements ActionListenerのことですかね アダプタクラスというのを使ったほうがいいということでしょうか

一応基礎はやったつもりでいたんですが、今回GUI使うことでぜんぜん理解できていないことに気づいてそれだけでもよかったです
もう来ません ありがとうございました。

540 :デフォルトの名無しさん:2007/12/11(火) 18:53:25
もうきませんって捨て台詞・・・はもうきこえてないか

インスタンスの参照を渡せばいいだけでしょ?
それができないってことはJavaの勉強1週間程度しかしてないということかな?

541 :530:2007/12/12(水) 00:36:46
ながながとスレ違いすいません
勉強はJavaの入門書を一通り読んだんですが(スレッドくらいまで。デザインパターンは全く)、ちゃんとは理解できてなかったようです。
参照を渡すといいましても>>530のコードだと難しくないですか?
コンストラクタでいろいろやってるのも悪いんですかね
本当にこれで最後にしますんで、
MainPanelとSubPanelが連動していて(Subのボタンを押すとMainの内容を変更したりする)場合、
どんなコードになりますか?親切な方おねがいします

542 :デフォルトの名無しさん:2007/12/12(水) 02:37:50
いや、普通に継承してるんだから
MianPanelはSubPanelを生成してあげたあとにセットしてあげるでもいいんじゃない?

SubPanelに
private MainPanel mainPanel;
public setMainPanel(MainPanel panel){
this.mainPanel = panel;
}

と追加しておいて

sp = new SubPanel();
sp.setMainPanel( this ) ;
this.add(sp);

とするといい。
subからMainを触りたければ上で定義したprivateなmainPanelに対してアクセスをする。

MainPanelでSubPanel作って乗せてるだけだからこれでいいと思われ。

MainPanelが先に消えたりする可能性があるとかだとリスナーいじってどうのこうのが必要になるけど
たぶんあなたがやりたいのはこれで十分かと。

543 :デフォルトの名無しさん:2007/12/12(水) 02:44:04
そもそも設計の段階で間違えてるんじゃないか?

544 :デフォルトの名無しさん:2007/12/12(水) 08:34:31
>>542
それだと SubPanel が汎用性の低いクズパーツになるだろ。
SubPanel がボタンを持つパネルならそのボタンのアクションリスナーを
>>534のように SubPanel に委譲してやったほうがいい。

public class SubPanel extends JPanel {
 private JButton button;
 public SubPanel(String buttonText) {
  button = new JButton(buttonText);
  this.add(button);
 }
 public void addButtonActionListener(ActionListener listener) {
  button.addActionListener(listener);
 }
}

public class MainPanel extends JPanel implements ActionListener {
 public MainPanel() {
  SubPanel panel = new SubPanel("メインパネルの色を変更");
  panel.addButtonActionListener(this);
  this.add(panel);
 }
 public void actionPerformed(ActionEvent e) {
  this.setBackground(Color.BLACK);
 }
}


545 :デフォルトの名無しさん:2007/12/12(水) 13:06:00
>>544
アクションイベントだけならそうだろうけど
GUIってそれ以外のプロパティの変更とかふつうはやるものだし

546 :デフォルトの名無しさん:2007/12/12(水) 13:35:41
main panelをある構造に従って作るようにして、sub panelでその構造を変化させたらいいんじゃないの?

547 :デフォルトの名無しさん:2007/12/12(水) 13:44:05
そこまでの設計が出来ていればこんな質問はせんだろうと。
ActionListennerをMainPanelで実装している時点で複数のイベント対応がおわっとるわけで。

548 :デフォルトの名無しさん:2007/12/12(水) 15:31:50
>312でも書かれてるけど、Synthって流行らないのかなー。
スキンがXMLファイルと画像で済むならたくさん配布されてそうなのに、
どうして一個も見つからないんだろう・・・

549 :デフォルトの名無しさん:2007/12/12(水) 15:37:42
まず最初の一個を>>548が作って布教

550 :デフォルトの名無しさん:2007/12/12(水) 15:41:15
つ Nimbus

551 :デフォルトの名無しさん:2007/12/12(水) 15:48:27
よーし作っちゃうぞー

Synth Studioにちょっと期待。
http://weblogs.java.net/blog/gfx/archive/2005/09/synth_studio.html

>550
Nimbusもいいと思うんだけど、とにかく数が出ないことにはなんとも多様性が少なすぎます。

552 :デフォルトの名無しさん:2007/12/12(水) 16:38:29
スキンを色々着せ替えたい人ってどんなアプリ作ってんの?
着せ替えできることを売りにしてるアプリで俺が最初に思い出すのがCDプレイヤー。

553 :デフォルトの名無しさん:2007/12/12(水) 17:03:49
NetBeansで気分転換にLAFかえるとかは5.0のころ流行ったなぁ

参考:
ttp://d.hatena.ne.jp/nowokay/20060223#1140636171

Substanceは6.0では動かないくさいけど

554 :デフォルトの名無しさん:2007/12/12(水) 17:10:21
ウィンドウをキャプチャし、JPGで保存するようなプログラムを作成中です。
手法、使用APIなどご教授お願いします。

555 :デフォルトの名無しさん:2007/12/12(水) 17:18:24
>>554
なぜここで聞く?質問スレ行った方がいいんじゃないか?

556 :デフォルトの名無しさん:2007/12/12(水) 17:37:28
キャプチャに関してはRobotがAWTパッケージに入ってるからかな?
って感じでもないか。
知ってたらBufferedImageを保存するには?って聞くだろうし、それはスレ違いか。

557 :デフォルトの名無しさん:2007/12/12(水) 17:44:29
>>553
そういう感じのLAFがカッコイイと思う人もいるんだろうけど・・・
ブログのスキンとは求められてるものが違うんでね?

558 :デフォルトの名無しさん:2007/12/12(水) 18:39:42
Nimbusってjava LAFの置き換えなんだろうか?
それとも共存するんだろうか?
NimbusってSynthで全部自前でやってるせいか少し重いからイマイチなんだが。

559 :デフォルトの名無しさん:2007/12/12(水) 19:16:20
重いかな?
というか、エンジン部分が決まっているので
むしろこれからのチューニングに期待できるんだけど。

Nimbusが出てきてからSubstanceへの興味はだいぶ薄れちゃったな・・・
V2Cは、6u10に入ってるNimbusで綺麗に動くので最近はNimbusで見てる。
素のMetalやOceanよりしっくりきてる。
普通に見れて、プラットフォーム共通の見栄えってのは重要でしょう。
Metalは、お世辞にも見栄えがいいとはいえなかったから・・・・(派手だけど)

560 :デフォルトの名無しさん:2007/12/12(水) 19:25:21
見た目のこと言い出すと宗教戦争になりそう。

561 :デフォルトの名無しさん:2007/12/12(水) 19:26:24
SynthってXMLと画像をjarに詰めて配布するの?
jarをインデックス付き無圧縮で配布すれば多少早いかもね。
もしくはSynthをコンパイル可能にするとか。

562 :デフォルトの名無しさん:2007/12/12(水) 19:26:41
ぶっちゃけSystemLAFがデフォになってくれるのが一番いいかも
NetBeansもそれでシェアを一気に伸ばしたし

563 :デフォルトの名無しさん:2007/12/12(水) 20:07:13
見た目なんて飾りです。えらい人にはそれが分からんのです。

ていうかクロスプラットフォームの実現性としてはjavaLAFがデフォの方が良いけど、
ユーザビリティが落ちるので天秤ってところか・・・。

564 :デフォルトの名無しさん:2007/12/12(水) 20:40:36
LAFを変更したらレイアウトが微妙に崩れてデザインが台無しとかけっこうある。
部品をカスタマイズしてたりするとなおさら。
で、いくつもLAFがインストールされていても、事実上使えないものが出てくる。
そんなLaFしか実現できないのなら、LAF一つで統一してほしいところだな。

565 :デフォルトの名無しさん:2007/12/12(水) 21:25:54
>>564
推奨サイズを使って設定してくれるならずれることはほとんどないはずだけど?
今まで大量にSwingアプリ作ったがLAFかえて問題が出る場合ってのはほとんどないよ。
むしろWinネイティブより楽。

566 :デフォルトの名無しさん:2007/12/12(水) 21:35:29
>>565
推奨サイズって何?
カスタムコンポーネントなしのアプリしか作ったことないんじゃないの?

567 :デフォルトの名無しさん:2007/12/12(水) 21:45:28
本気で言ってんのかコイツ

568 :デフォルトの名無しさん:2007/12/12(水) 22:04:47
Swing使いが推奨サイズを知らないとは思えんが・・・・

569 :デフォルトの名無しさん:2007/12/12(水) 22:18:38
きっと日本語ではなく preferredSize といえば通じるよっ。


570 :デフォルトの名無しさん:2007/12/12(水) 22:47:58
生憎日本の会社で働いたことがないので。日本語のAPI docもたまに
見るけど気付かなかったよ。どこかに便利なサイズの表でもあるのかと思った。

571 :デフォルトの名無しさん:2007/12/12(水) 23:23:41
今日もJava釣り君元気だな

572 :デフォルトの名無しさん:2007/12/13(木) 00:25:17
>>570
つまり、preferredSizeを和訳できなかったわけだな。中国の会社の人?

573 :デフォルトの名無しさん:2007/12/13(木) 02:30:49
インドだろう常考

574 :564:2007/12/13(木) 02:58:31
>>564
もちろんそうしてるよ。JDK1.0のころからある普通のレイアウトマネージャを組み合わせてレイアウトしてる。
そりゃテキストエディタのようにツールバーとメニュー、オプション選択とOK/NOボタンしかないとか、
その程度なら問題ないだろうけど、複雑になるとたいがい問題でると思うけどな。
ただしまったく使えなくなるほど、ひどいことになるのは少ない。
レイアウトデザインには急所があってさ、絶対はずせないところってのがいくつかある。
そこがずれると一気にしまりがなくなってださくなるとこが。
そういうとこが狂うと、やめてよっていいたくなる。

LAFに応じて位置とサイズを調整するようなコードを書くとか、無難なデザインを適用する事はできると思う。
でもそういうのってなんか違うと思うんだよね。

575 :デフォルトの名無しさん:2007/12/13(木) 03:27:33
ボケたか自演か?

576 :564:2007/12/13(木) 03:52:46
>>575
>>565-573までは俺じゃないから。
罵りあって遊びたいならマ板にでも逝けよ。

577 :デフォルトの名無しさん:2007/12/13(木) 08:46:37
推奨サイズを知らないバカと自分のレスにレス付けてるボケがいるスレはここですか?

578 :デフォルトの名無しさん:2007/12/13(木) 11:04:12
レイアウトが崩れる例ってのを、出してみてよ
簡単なのでいいから

579 :デフォルトの名無しさん:2007/12/13(木) 11:45:14
複雑になると問題が出るっていってるのに簡単なのでいいからっていうツッコミ、気の毒だな。

580 :デフォルトの名無しさん:2007/12/13(木) 11:54:56
>>578
21 * 21 のicon,pressedIcon,rolloverIconの三枚のボタン画像を作りJButtonのプロパティに指定。
perferredSize=21,21
margin=0,0,0,0
focusPainted = false
contentAreaPainted = false
borderPainted = false

LaFでMotif,Windows,Metalの三通りを試してみてよ。Motifはアウトだから。
画像ボタンをつくればいいだけなら解決策はあるけど、しかし、
GridBagLayoutで次のようにJTextFieldが等間隔でならんでいて、
その一つにこの画像ボタンがあるとする。

[TextField]
[TextField][B] ←画像ボタン
[TextField]
[TextField]

アウトだよね。レイアウトは崩れる。デザインを修正することで回避する策もあるし、
使えないってことはないが、LaFを切り替えると振る舞いが違うのは困る。

581 :デフォルトの名無しさん:2007/12/13(木) 12:04:33
>>578
もう一つ例をあげると、Motifのメニュー操作法と、Windows,Metalの操作法は異なる。
これは使ってみればすぐに分かると思うけど。

それから、JSliderBarの操作法ね。Metalと残りのWindows,Motifでは振る舞いが異なる。
これもわかりにくいかもしれないけど使ってみれば分かると思う。

LaFは見かけ上の外観を変更するだけのはずなのに、操作体系にまで干渉したらまずいと思うんだけど。

582 :デフォルトの名無しさん:2007/12/13(木) 12:57:22
ルック&フィールのフィールって何か分かってるか?

583 :デフォルトの名無しさん:2007/12/13(木) 13:05:42
>>581
LaFはLook & Feelの略だよ。外見を変更するだけじゃない。

584 :デフォルトの名無しさん:2007/12/13(木) 13:14:14
>>580
すまん、やってみたが、レイアウトは崩れないっぽいんだが…
なんか俺間違ってるのかも試練から
どこがどう崩れたのか教えて欲しい

585 :デフォルトの名無しさん:2007/12/13(木) 13:31:58
>>582
単純思考のくせに傲慢そうなやつだな。w
feelは手触りだから、操作体系が異なるのは仕様のうちだとでもいいたいのか?w

しかしそれでは良くない場合のほうが多いんだよな。
アプリに無意味な混乱を与えるくらいならLAFをユーザに選択させないほうが俺は良いと思うけどね。
ボタンが数個しかついてないようなアプリならまーすきにすればだけど。

586 :デフォルトの名無しさん:2007/12/13(木) 13:36:10
>>584
画像はいらないから、コードをコピペしてみて。
環境の違いもあるだろうし。

587 :デフォルトの名無しさん:2007/12/13(木) 13:37:38
コードつーかソースね

588 :デフォルトの名無しさん:2007/12/13(木) 13:48:37
Look and Feelのfeelには気分や雰囲気の意味もあって、必ずしも操作法を指すともいえないけどな。

589 :デフォルトの名無しさん:2007/12/13(木) 14:12:06
>>586
public class Test extends JFrame {
static public void main(String args[]){
new Test().createUI("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
}

private void createUI(String laf){
try {
UIManager.setLookAndFeel(laf);
} catch (Exception e) {
}
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
GridBagLayout gbl = new GridBagLayout();
GridBagConstraints c = new GridBagConstraints();
JPanel p = new JPanel(gbl);
c.weightx = c.weighty = 1;
JTextField t0 = new JTextField(10);
c.gridx = c.gridy = 0;
gbl.setConstraints(t0, c);
p.add(t0);
JTextField t1 = new JTextField(10);
c.gridy = 1;
gbl.setConstraints(t1, c);
p.add(t1);

590 :デフォルトの名無しさん:2007/12/13(木) 14:12:36
JButton b = new JButton(new ImageIcon("./normal.gif"));
b.setPreferredSize(new Dimension(21,21));
b.setMargin(new Insets(0,0,0,0));
b.setFocusPainted(false);
b.setContentAreaFilled(false);
b.setBorderPainted(false);
b.setRolloverIcon(new ImageIcon("./over.gif"));
b.setPressedIcon(new ImageIcon("./pressed.gif"));
c.gridx = 1;
gbl.setConstraints(b, c);
p.add(b);
JTextField t2 = new JTextField(10);
c.gridx = 0;
c.gridy = 2;
gbl.setConstraints(t2, c);
p.add(t2);
JTextField t3 = new JTextField(10);
c.gridy = 3;
gbl.setConstraints(t3, c);
p.add(t3);
getContentPane().add(p);
this.pack();
this.setVisible(true);
}
}

591 :デフォルトの名無しさん:2007/12/13(木) 14:42:18
>>589-590
さんきゅー。やってみた。
ただし画像を取得する部分は、getResource()を使う方法に修正させてもらった。
こっちの環境でMotifを指定してみたら、画像ボタンは正常表示されなかった。

new Test().createUI("com.sun.java.swing.plaf.motif.MotifLookAndFeel");

具体的には、3 * 3くらいのサイズで表示されてしまう。
MetalやWindowsのLAFでは、このような状態にはならない。
ところであなたの環境はなに?

3*3の状態で表示されたときは、当たり前ながらレイアウトは崩れない。
ボタンサイズがJTextFieldのheightより小さいから。

で、こっちの環境で、Motifでもボタンを正しく表示させようとしたときは、preferredSizeを指定しなければ良いらしい。
しかしボタンは表示されるが、デフォルトのボタンサイズが27*26くらいに設定されてしまう。
するとJTextFieldのheightを越えてしまうため、ボタンのある行は上下に隙間が空いてしまう。

592 :デフォルトの名無しさん:2007/12/13(木) 14:56:01
あ、ちなみにこっちの環境はWin2KのJDK1.6.0_03

593 :デフォルトの名無しさん:2007/12/13(木) 15:04:42
いつまで続くのこれ?

594 :デフォルトの名無しさん:2007/12/13(木) 16:03:04
b.setBorder(null);
でどうよ?

595 :デフォルトの名無しさん:2007/12/13(木) 16:32:49
>>594
その手があったかw

596 :デフォルトの名無しさん:2007/12/13(木) 17:18:47
ボタンに限ったことじゃないだろうに・・・

597 :デフォルトの名無しさん:2007/12/13(木) 19:13:03
たまたまMotif用の回避策があっただけのことでしょ。w
LAF別に癖があって共通の振る舞いをしないのはかわらない。

598 :デフォルトの名無しさん:2007/12/13(木) 19:50:38
どう見てもコンポーネントの表示を制御し切れてないヘタレというだけで
レイアウト云々は関係ないと思うのだが

599 :デフォルトの名無しさん:2007/12/13(木) 20:05:15
JButtonとかはサイズが指定してあると、Metal→Motifに変えたときにほんと崩れるよね。

普通にテキスト指定してJButton作っただけじゃ、OKとキャンセルボタンのサイズが違いすぎるから
キャンセルボタンにあわせるようにしてるんだけど、Motifはおかしいよ・・・

600 :デフォルトの名無しさん:2007/12/13(木) 20:58:53
まだ続くの?

601 :デフォルトの名無しさん:2007/12/13(木) 21:08:14
Swingの話題だから別にいつまでも続いてもいいだろ

602 :デフォルトの名無しさん:2007/12/13(木) 21:25:37
そういやMotifだとマウスホイールも効かないよな。
そんな中途半端なのいれなきゃいいのに。

603 :デフォルトの名無しさん:2007/12/13(木) 21:28:15
SystemLAFならLinuxとかでもWin並みのFeelが得られるの?
Win, Mac以外はLAFは何でもいいと思ってるのでお勧め教えて。

604 :デフォルトの名無しさん:2007/12/13(木) 21:35:08
>>598で結論出たじゃん。

605 :デフォルトの名無しさん:2007/12/13(木) 21:36:12
Linux では gtk使えるなら gtkじゃね?

606 :デフォルトの名無しさん:2007/12/13(木) 21:39:41
>>598
ことLAFに関しては>>597でFAだと思うが。
切り替えて不都合がでるLAFがある時点で不完全なシステムだな。

607 :デフォルトの名無しさん:2007/12/13(木) 21:40:05
正直Javaアプリ作ってもWinでしか使わないんだよね。
APIのバランスがいいし、今更.NET覚えるのはしんどいって理由で。
*nixやmacの挙動を調べるにはどうしたらいいんだろう。
LinuxならcoLinuxとか?

608 :デフォルトの名無しさん:2007/12/13(木) 21:45:53
それ用にマシン用意するか、もってる人にテストを頼む以外なんかある?

609 :デフォルトの名無しさん:2007/12/13(木) 21:46:51
Macごときに会社が金出すわけ無いじゃん。jk。

610 :デフォルトの名無しさん:2007/12/13(木) 21:50:45
アップルに俺様の会社がMacでも動くアプリを作ってやったから、テスト用にMacを献上したまえといってみるとか。

611 :デフォルトの名無しさん:2007/12/13(木) 21:54:18
Macごときに金ださんという会社は、JavaだろうがMacで動かす必要はないってことじゃね?

612 :デフォルトの名無しさん:2007/12/13(木) 22:01:26
Macごときで動作しないなんてレポートが来られても困るし、
JavaクライアントでもMacは未対応ってことにしとけばいいか

613 :デフォルトの名無しさん:2007/12/13(木) 22:22:42
そこはアップルの実装の問題だが、どうにも屑すぎる。
特に文字列処理。これはjavaに限った事じゃないけど。

614 :デフォルトの名無しさん:2007/12/13(木) 22:34:26
たとえば文字列処理でどんなことが起きるの?

615 :デフォルトの名無しさん:2007/12/13(木) 22:45:06
ワイド文字いい加減とか

616 :デフォルトの名無しさん:2007/12/13(木) 23:38:24
仕事なら必要な範囲のアーキテクチャだけ動作保証するだけだし
趣味ならそもそも動作保証なんてしないから問題ないだろ…

617 :デフォルトの名無しさん:2007/12/14(金) 02:37:15
趣味で作っても、友達がMac持ってることあるから問題あるだろ。

618 :デフォルトの名無しさん:2007/12/14(金) 02:41:59
aho

619 :デフォルトの名無しさん:2007/12/14(金) 15:36:51
例えば、undo,redo(WindowsだとCtrl+z,Ctrl+y)とかのデフォルトの
キーバインディングがOS毎に違ったりする場合、
LAF変更毎にjavax.swing.InputMapとかも変更すべきでしょうか?
javax.swing.plaf配下のUI委譲を見ても、そんなコードは見あたりませんが。


620 :デフォルトの名無しさん:2007/12/14(金) 18:21:15
>>614
Unicode正規化まわりじゃないの?

621 :デフォルトの名無しさん:2007/12/15(土) 12:54:25
LAF変えるたびに、それ固有の修正を施すなんてかなり馬鹿らしい話
これからいくらでも増えてくるだろうし

622 :デフォルトの名無しさん:2007/12/15(土) 16:35:41
MacのredoのショートカットキーがWindowsと異なる
(Ctrl+Shift+zだったかな)ことを最近知って、
さらに「Motifだとマウスホイールも効かないよな」っていうのを見て、
ふと疑問に思った。

マルチプラットフォーム対応のソフト作ってる場合って、
やっぱり、そんなことも考慮する必要があるんだろうな。
LAF毎に固有の修正を施すなんてかなり馬鹿らしい話っていうのは同感なんですが。

ふだん当たり前にできてることができないって結構ストレスになるから。


623 :デフォルトの名無しさん:2007/12/15(土) 16:44:56
キー設定とかは外部設定に追い出しておいてプラットフォームごとに
切り替わるようにするくらいは必須だろうねぇ。

うっかりMac環境でメニューバーにまでショートカット付けて怒られた俺。
(個別のメニューには付けてもいいが、根っこのバー上には付かないのがMac)


624 :デフォルトの名無しさん:2007/12/15(土) 17:27:21
>キー設定とかは外部設定に追い出しておいてプラットフォームごとに
>切り替わるようにするくらいは必須だろうねぇ。
やっぱり、サーバーサイドより面倒ですね。

>うっかりMac環境でメニューバーにまでショートカット付けて怒られた俺。
怒られるほどのことではない。
というか、個人的には、そのほうが便利になってる気さえしますが。
余計な文字列がデザイン的にウザイってことなんですかね。
よくそういうどーでもいいディテールに拘る人いますし。
特に官公庁に。

>(個別のメニューには付けてもいいが、根っこのバー上には付かないのがMac)
へー。Macさわったことないから、全然知らなかった。
エミュレータでも買って、ちょっと弄ってみようかな。


625 :デフォルトの名無しさん:2007/12/15(土) 17:45:03
そういえばMacのマウスはシングルボタンが基本だよね。
Winでは右クリでポップアップメニューが出る操作がよくあるけど、あれMacではどうなるの?

626 :デフォルトの名無しさん:2007/12/15(土) 17:57:07
ふるーい mac だと ctrl + クリックでやってた記憶が……

ポップアップメニュー出す操作か、だけなら、
java.awt.event.MouseEvent#isPopupTrigger() みればわかるはず。

627 :デフォルトの名無しさん:2007/12/15(土) 17:58:32
何も考えたくなかったらMetalで固定ってことかな。

628 :デフォルトの名無しさん:2007/12/15(土) 18:14:39
macはボタン長押しでコンテキストメニューじゃなかった?
今のmacはマウスホイール付いてた気がする。
小さな玉が・・・。

629 :デフォルトの名無しさん:2007/12/15(土) 18:22:21
シングルボタンの場合は、Ctrl押しながらクリック。
2ボタンマウスを繋いだ場合は普通に右クリックできる。

Mighty Mouseも見た目はシングルだが、右よりの部分を押すと副ボタンと
して扱える(デフォルトだと両方主ボタンになってるのはAppleの意地か?)



630 :デフォルトの名無しさん:2007/12/15(土) 18:24:04
ノート型のMacだと、指を2本パッドに置いてクリックすると右クリック相当
だな。指2本でパッド上を滑らせるとスクロールとかも面白い。


631 :デフォルトの名無しさん:2007/12/15(土) 18:28:50
MacのOS9時代まで使ってたけど、ctrl + クリックだったよ〜
まぁどうでもいいか。

632 :デフォルトの名無しさん:2007/12/15(土) 18:41:56
理想的にはLaF毎に諸々切り替えるべきなんだけど…
結局どこまでサポート範囲にするかってだけだとな気がする.
ぶっちゃけMotifとかは切り捨てても誰も困らないと思うぞ

633 :デフォルトの名無しさん:2007/12/15(土) 18:45:57
Synthについてなんですが、SwingのJComponentの派生クラスの
ちょっとした動作変更のHackのサンプルコードとかで、
よくMetalほげUI(MetalComboBoxUIとか)を継承したクラスを作って、
JComponent#setUI(作成したMetalほげUIのサブクラス)とかやってますよね。

ああいうのって、その後Synthでスキンを変更しようと思った場合、
動作するんですか?

Synth導入時はjavax.swing.plaf.synth配下のクラスを
使用しなければならないのかなと思っていて、
Synthパッケージのクラスの継承関係がBasicComponentUIのサブクラスだから、
MetalUIで作ったクラスは使用できないのかと漠然と考えているんですが。

634 :デフォルトの名無しさん:2007/12/15(土) 18:52:14
>ぶっちゃけMotifとかは切り捨てても誰も困らないと思うぞ
同感。Motifは単にSunの意地。
クライアントLinuxも趣味にはいいけど、
個人的にはサポートしたくない。

でも、数ヶ月前に21:00台のNHKのニュースで出てた、
どこか忘れたけど、ITじゃない大手企業の普通の職場で
SunのワークステーションでXが写ってた。
マジで使ってんの?って思ったけど。

635 :デフォルトの名無しさん:2007/12/15(土) 19:19:05
ソラリスのMotifはそれなりにさまになってる感じもあるけど
Winでみるとダサイ・・・ってまったく同じMotifというわけでもなくMotif風というべきか。

636 :デフォルトの名無しさん:2007/12/15(土) 19:25:33
MacでCtrl+クリックで右クリということは、WinでCtrl+左クリに機能を割り当てていると、
Macでは困ったことになる・・・のだろうな・・・

637 :デフォルトの名無しさん:2007/12/15(土) 19:28:20
実機が手元にないから、あれだけど。
SolarisのMotifは、Sunのハードの色のグレーと紫と一緒になって、
初めて調和する感じがする。
だから、他のハードで単体でMotifのLAFだけを見るとかっこ悪さしか感じない。


638 :デフォルトの名無しさん:2007/12/15(土) 19:43:52
LAFというか視覚デザイン系は深入りすると底なし沼だからなぁ・・・・
3Dソフトも今はなき?シリコングラフィックのあの癖のある筐体でみるのと、
DOS/Vの筐体でみるのではやっぱ違ってみえるよねw

639 :デフォルトの名無しさん:2007/12/15(土) 19:44:18
いろいろ考えるとInputMapはFactoryクラスとかで一括管理すべきなんだろうなと思ってきた。

640 :デフォルトの名無しさん:2007/12/15(土) 19:44:55
そういえばJTableはCtrl+左クリで複数選択機能があったはずだけど、Macだとどうなるんだっけ。

641 :デフォルトの名無しさん:2007/12/15(土) 19:49:16
>シリコングラフィックのあの癖のある筐体でみるのと、
>DOS/Vの筐体でみるのではやっぱ違ってみえるよねw
それはありますねー。
Sunのマシンにsunの4つつながったロゴがないだけでも、
Motifは別物に見えそうだし。

データセンターでMacのハードやUIがあったりしたら、
違和感ありそうだし。。。

642 :デフォルトの名無しさん:2007/12/15(土) 23:39:08
>>619
質問 ↓のコードでもmacとwindowsで兼用できなかったの??
KeyStroke.getKeyStroke(KeyEvent.VK_C, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask());

643 :デフォルトの名無しさん:2007/12/16(日) 02:36:30
619です。
>質問 ↓のコードでもmacとwindowsで兼用できなかったの??
>KeyStroke.getKeyStroke(KeyEvent.VK_C, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask());
Toolkit#getMenuShortcutKeyMask()メソッドは初めて知りました。
ありがとうございます。

興味本位で聞いただけです。
実際にやってみていない。というかmac環境がないので。試せません。。

http://tinyurl.com/3cbuj2のあたりをざっとみると、
Ctrl+Cとかコピペ、Ctrl+F(検索),Ctrl+S|Oあたりは同じようですが。
Ctrl+Y(やり直し(Windows))の記載が見あたりません。
ちょっと前に、どこかでWindowsのCtrl+YはmacでCtrl+Shift+Zと見たんですが、
記憶違いかガセだったのでしょうか。
でも、macにはUndoの反対のキーバインドがないとは思えませんけど。

でも仮にmacにCtrl+Shift+Zがあるとすると、
Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()だと、
引数と戻り値的に適切な値が取得できるとは考えられないですが。

それとgetMenuShortcutKeyMaskで適切な値が取得できるのであれば、
UIクラスのinstallUI()(すくなくともJTextComponentのサブクラスのUI)では、
InputMapにデフォルトで登録しておいて欲しいところです。

macをさわれる人にgetMenuShortcutKeyMask()の結果を聞きたいです。
いつになるか分かりませんが、私がmacを実行できる機会があれば、
結果を報告します。

644 :デフォルトの名無しさん:2007/12/16(日) 03:30:19
Mac OS X 10.5.1 です。

% uname -a
Darwin dorado.local 9.1.0 Darwin Kernel Version 9.1.0: Wed Oct 31 17:46:22 PDT 2007; root:xnu-1228.0.2~1/RELEASE_I386 i386 i386 MacBook2,1 Darwin

% java -version
java version "1.5.0_13"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_13-b05-237)
Java HotSpot(TM) Client VM (build 1.5.0_13-119, mixed mode, sharing)

System.out.println(Toolkit.getDefaultToolkit().getMenuShortcutKeyMask());
System.out.println(Event.ALT_MASK);
System.out.println(Event.CTRL_MASK);
System.out.println(Event.META_MASK);
System.out.println(Event.SHIFT_MASK);

結果は

4
8
2
4
1

Metaキーってことですかね。


645 :デフォルトの名無しさん:2007/12/16(日) 03:36:27
Mac OS XではCommand+Cとかになるからね。

getMenuShortcutKeyMaskの戻り値はEvent.META_MASKになる。

CommandキーはWindowsだとWindowsキー。

646 :デフォルトの名無しさん:2007/12/16(日) 17:50:37
619です。
macの結果を教えてくださりありがとうございます。

macのショートカットキー一覧を見ると
「コマンド + C →「編集」メニュー コピー」と記載されているので、
つまり、getMenuShortcutKeyMask()を使用できそうということでしょうか。

ところで、macにはWindowsでいう「やり直し(Ctrl+Y)」
(元に戻すのを戻す?)は、ないのでしょうか。
私の言っている「Ctrl+Shift+Z」ショートカットキーは誤りですか?
たびたびすみませんが、時間がありましたら教えてください。

647 :デフォルトの名無しさん:2007/12/16(日) 18:11:03
HIG(Human Interface Guidelines)
http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/XHIGIntro/chapter_1_section_1.html

Keyboard Shortcuts
http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/XHIGUserInput/chapter_11_section_3.html#//apple_ref/doc/uid/TP30000361-CHDIGFBH

テキストエディット(メモ帳・ワードパッド)
GarageBand(作曲)
Pages(ワープロ)
Keynote(プレゼン)
Numbers(スプレッドシート)
BathyScaphe(2ちゃんねるブラウザ)
で見たら、「やり直す」はCommand+Shift+Zだった。


648 :デフォルトの名無しさん:2007/12/16(日) 18:17:26
ちょっと古いけど
ttp://developer.apple.com/jp/technotes/tn2042.html

やり直しはShift+Command+Zだね。

649 :デフォルトの名無しさん:2007/12/16(日) 18:36:01
うお、Leopardでは「取り消す(cmd+Z)」と「やり直す(shift+cmd+z)」に変わったんだね。

プレビューではファイルメニューに、最後に保存した状態に戻す「元に戻す」があったりする。

650 :デフォルトの名無しさん:2007/12/16(日) 20:20:32
>647さん
>648さん
>649さん
ありがとうございます。
http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/XHIGUserInput/chapter_11_section_3.html#//apple_ref/doc/uid/TP30000361-CHDIGFBH
のTable 7-5を見ると(Redo(やり直し))Command-Shift-Zってことですね。

頂いた情報を総合すると、getMenuShortcutKeyMask()の戻り値が
Event.META_MASK(Commandキー)である。
やり直しはCommand-Shift-Zということですので、
コピーのキーバインディングに
KeyStroke.getKeyStroke(KeyEvent.VK_C, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask());
は、良いけど
undo,redoに
KeyStroke.getKeyStroke(KeyEvent.VK_Y, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask());
KeyStroke.getKeyStroke(KeyEvent.VK_Z, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask());
はNGということですね。

ということで、やはりプラットフォームごとにInputMapを用意する
必要があるということですね。
実装する予定はありませんが、勉強になりました。
面白かったです。





651 :デフォルトの名無しさん:2007/12/16(日) 21:00:00
Swing標準のキーバインドってなかったっけ?
あったらそれで良いと思う。

あれはLAFで決まるんだっけ?

652 :デフォルトの名無しさん:2007/12/16(日) 21:36:45
619です。

>Swing標準のキーバインドってなかったっけ?
swing.plaf配下のUI委譲のInputMap登録コードでは、
JListでの上下移動、JComboBox等の選択等の細かいものを除けば、
基本的に選択(JTableのセル選択,JTextComponentのテキスト選択)、
移動系(セルの選択位置移動、キャレットの移動)の
キーバインドしか登録されないのです。

undo,redoをはじめ、Ctrl+S,Ctrl+O等の、機能が実装されていないものに
関しては仕方がないにしても、JTable,JTextComponentでは、
printを実装しているにも関わらず、Ctrl+Pも登録されません。
ですから、標準のキーバインドはないのでは?と思っています。

まぁ、個別のOSのアプリケーションを熟知してませんが、
Gridやテキストエディタでの選択、移動のショートカットキーは、
各OSともほぼ共通なため、そのあたりは登録できるものの、
undo,redo等は、上記のような例があり、標準として登
録できないという事情があるのかもしれません。

でもSwing標準のキーバインドなんてあったとしても、
個人的には、ショートカットキーをバリバリ使う人にはストレスフルで
使いたくないし覚えたくないだろうと思いますが。

ちなみにLAF毎に、キーバインドを登録するようなコードが
それぞれのUIクラスのソースに無いのは先述のとおりです。


653 :デフォルトの名無しさん:2007/12/16(日) 21:48:11
>>633

654 :_:2007/12/19(水) 14:53:45
combodata = {"a", "b", "c","d"};

       ・
       ・
private void Combo1ActionPerformed(java.awt.event.ActionEvent evt) {


if (Combo1.getSelectedItem().equals("a")||Combo1.getSelectedItem().equals("b")){
Combo2.setEnabled(true);
}
else{
Combo2.setEnabled(false);
}

}

Combo1でaかbが選択された場合はCombo2が有効で
Combo2でcかdが選択された場合はCombo2が無効になるようにしたいのですが

上のやり方だとaを選ぶとCombo2は有効になるんですがaを選んだ後にcに変更すると
Combo2は無効にならずに有効のままになってしまいます.
同じようにcを選ぶと無効になるんですがその後にaを選ぶと無効のままになってしまいます.

これを直す方法を教えていただけないでしょうか?お願いします.

655 :デフォルトの名無しさん:2007/12/19(水) 15:17:46
いくつか突っ込みどころがあるから最初からやり直した方が早い。

656 :デフォルトの名無しさん:2007/12/20(木) 03:59:56
最初からやり直すというか、紙の上で状態遷移を考えた方がいい。
自分の言ってる矛盾に気付けるから。

657 :デフォルトの名無しさん:2007/12/20(木) 08:13:43
>Combo1でaかbが選択された場合はCombo2が有効で
>Combo2でcかdが選択された場合はCombo2が無効になるようにしたいのですが

下のCombo2はCombo1の間違えだよね?

658 :デフォルトの名無しさん:2007/12/20(木) 08:46:01
Combo1の間違えでした.

Combo1の状態に応じてCombo2の有効,無効が変化する
物をつくりたいんですが教えていただけないでしょうか

659 :デフォルトの名無しさん:2007/12/20(木) 09:23:02
combo2.setVisible(false);
これでは駄目なの?

660 :_:2007/12/20(木) 11:53:34
上のやり方だとaを選ぶとCombo2は有効になるんですがaを選んだ後にcに変更すると
Combo2は無効にならずに有効のままになってしまいます.
同じようにcを選ぶと無効になるんですがその後にaを選ぶと無効のままになってしまいます.
最初の選択では上手くいくんですが選択を変更すると変化してくれないんです。

661 :デフォルトの名無しさん:2007/12/20(木) 12:45:54
まず、そもそもCombo1ActionPerformedメソッドが実行されてるのかどうかを確かめるんだ。
実行されてるなら、そのときCombo1.getSelectedItem()の値が実際は何になっているのかを確かめるんだ。

662 :_:2007/12/20(木) 13:07:41
Combo1でaを選ぶとCombo1ActionPerformedメソッドが実行されてCombo1.getSelectedItem()の値は
aになっているんですがその後にCombo1でcを選んでもCombo1ActionPerformedメソッドが実行されてません

続けて選んだ場合にもCombo1ActionPerformedメソッドが実行されるようにするにはどうすればよいのでしょうか?

663 :デフォルトの名無しさん:2007/12/20(木) 13:44:37
>>662
実行されてないのをSystem.out.println文で確認した?

664 :_:2007/12/20(木) 16:00:32
確認しました
コンボボックスを変更してもActionPerformedにいってくれないようです

665 :デフォルトの名無しさん:2007/12/20(木) 17:13:44
ActionListenerをやめて、ListDataListenerでComboBoxModelの変更を捕らえてみたらどう

666 :デフォルトの名無しさん:2007/12/20(木) 19:48:40
おい、おまいら。
SwingApplicationFramework使ってますか?

667 :デフォルトの名無しさん:2007/12/20(木) 19:57:08
使ってません。
あれって便利なの?

668 :デフォルトの名無しさん:2007/12/20(木) 20:00:15
使ってみようと、Netbeansでプロジェクトを作った。
でも、どうするものかいまいちピンときていない。
Actionの管理をしてくれるのはいいんだけどちょっと縛りがきついなぁと感じた。
IDE無しでは複雑過ぎる気がする。

669 :デフォルトの名無しさん:2007/12/20(木) 20:57:09
IDEなしでの比較だとアクションイベントを書くのはフレームワーク使ったほうが楽

アプリケーションの起動時と終了時に処理が書けるようになるとかはまぁあればあったでいいという程度

ただアノテーションつかってそれの名称を文字列で記述ってのは実行時エラーの可能性が増えるから
静的言語としてはどうかなぁというのが多い

Web方面のフレームワークもだけどね
Springとか最新版ですら1.4とか過去の互換性のために文字列を使うことが多すぎ
enumきっちりつかってくれよと思うことは多いかな

670 :デフォルトの名無しさん:2007/12/21(金) 00:39:19
IDEなしということはGUIエディタも使わずにSwingのアプリを作るってこと?
本で紹介するサンプルコードならともかく、本格的なもの作るなら論外だと思えるけど。

671 :デフォルトの名無しさん:2007/12/21(金) 00:42:07
別に普通に行われてることですが

672 :デフォルトの名無しさん:2007/12/21(金) 00:42:42
そりゃお気の毒

673 :デフォルトの名無しさん:2007/12/21(金) 00:47:11
本格的なものを作るならフォームエディタなんて使わないと思うが。

674 :デフォルトの名無しさん:2007/12/21(金) 00:58:40
>>670
逆じゃないの?

675 :デフォルトの名無しさん:2007/12/21(金) 01:00:16
IDEサポートなしと読めばいいじゃない。

676 :デフォルトの名無しさん:2007/12/21(金) 01:02:26
>>673-674
はいはいwノシ

677 :デフォルトの名無しさん:2007/12/21(金) 01:04:17
最近Javaから離れて久しいが、GroupLayoutはツールなしで使うのは
辛いと聞いたことがあるな。


678 :デフォルトの名無しさん:2007/12/21(金) 07:36:04
670にとって本格的なものってのは
テキストフィールド2つにボタンひとつ。

679 :デフォルトの名無しさん:2007/12/21(金) 08:34:45
IDEなしじゃ何もできないって人は、素のHTMLをいじれない人と「使えない」って点で似てる

680 :デフォルトの名無しさん:2007/12/21(金) 11:03:39
ここでは何もできない人の話はしてないね。

681 :デフォルトの名無しさん:2007/12/21(金) 11:05:03
>>678の煽りの程度の低さに絶望した
もっとまともな指摘があるのかと思った。

682 :デフォルトの名無しさん:2007/12/21(金) 11:10:10
仕事でレイアウトマネージャって使っています?

683 :デフォルトの名無しさん:2007/12/21(金) 11:12:54
使うよ

684 :デフォルトの名無しさん:2007/12/21(金) 11:45:21
やっぱ普通使うよね
絶対座標ばっかだ・・・

685 :デフォルトの名無しさん:2007/12/21(金) 12:29:53
>>679
効率よく出来るかどうかだから。
仕事ならDreamWeaverとか使わないでHTML生成してるアホはいらんね。

ペイントあればフォトショップ等いらないでしょ?とか
テキストエディタでPDF作れるでしょ?といってるのとかわらんな。

>>684
せめてNetBeansに付属の伝統のAbsoluteLayout使ってね。
Nullはだめだぞ。

686 :デフォルトの名無しさん:2007/12/21(金) 12:52:28
親切な香具師だな。
土を手で耕したいという土民なんかほっとけばいいのに。w

687 :デフォルトの名無しさん:2007/12/21(金) 12:57:29
なんかバカがいるな。

688 :デフォルトの名無しさん:2007/12/21(金) 13:33:04
仕事ではGridBagLayoutが基本かな・・・
NetbeansのGridBagLayoutのエディタが無いと仕事にならんね・・・・
もうちょっと進化してくれても恨まないけど・・・・

複数のレイアウトマネージャを組み合わせて、
がちっと作り込むのは実はむしろ趣味のほうだったりする。
それでも、GridBag,Groupを手で書くのは調整くらいはできても、まぁ正直無理。

689 :デフォルトの名無しさん:2007/12/21(金) 13:37:50
レイアウトマネージャの組み合わせはわりと普通に使う

ただ、GropuLayoutがでてしまったおかげでほとんどそれ1本でいけるようになっちまった

690 :デフォルトの名無しさん:2007/12/21(金) 13:47:57
GropuLayoutはいいよね。使いたい。
でもそのためにはJavaのバージョンを6にしないとだめなんだよなー
まだ1.4だしなー
先は長いな・・・

691 :デフォルトの名無しさん:2007/12/21(金) 13:50:37
GropuLayout

692 :デフォルトの名無しさん:2007/12/21(金) 13:58:22
パッケージが違っていいのなら1.4から使えた希ガス。
5.0からだったかな?

来年登場予定のJavaSE7がでると1.4は保守されなくなるから。
保守契約結んでいるなら5.0以上でも動くようにしていったほうがいいね。

693 :デフォルトの名無しさん:2007/12/21(金) 16:55:49
1.4はとっくにEOL。jdk7が出てから死ぬのは1.4.2

694 :デフォルトの名無しさん:2007/12/21(金) 19:39:20
GroupLayoutが出たときにEclipseからNetBeansに乗り換えようかなと考えたけど
GroupLayoutが、考え方が非常に明快な上に
頭で考えたことを素直に反映できる優秀なレイアウトだったので、やめた

695 :デフォルトの名無しさん:2007/12/21(金) 19:40:22
なんじゃそりゃ

696 :デフォルトの名無しさん:2007/12/21(金) 19:45:29
難読化

697 :デフォルトの名無しさん:2007/12/21(金) 19:50:41
IDEなしじゃGUIも扱えない奴ってどうなん?
JTableとかテキストフィールドで再現してそう

698 :デフォルトの名無しさん:2007/12/21(金) 19:56:51
それはないだろ

699 :デフォルトの名無しさん:2007/12/21(金) 20:16:43
無知の自覚がない無知は無知のまま放置がベスト

700 :デフォルトの名無しさん:2007/12/21(金) 21:17:20
>>670
GUIエディタは便利だけど、業務アプリでそういうのでサックリ作っちゃうと
後々火を吹くから俺のPjでは使わない。

>>685
イタイな

701 :デフォルトの名無しさん:2007/12/21(金) 21:46:14
GroupLayoutってさ、vGroupとかhGroupとか使ってコンポーネントのレイアウトを決めるわけだけど、
なんか冗長な記述だよな。これは仕方ないのか?

702 :デフォルトの名無しさん:2007/12/21(金) 21:46:20
>>700
GUIに頼らずにどこまでできるかで、決定的な差が出る場面ってあるからね。
このスレではアマチュアが多いのか、あまり良く分かってない人が多いようだけど。

703 :デフォルトの名無しさん:2007/12/21(金) 22:05:17
>>700
えぢたを使って火を噴くって例えばどんなの?

704 :デフォルトの名無しさん:2007/12/21(金) 22:21:03
ロジックを画面実装で埋め込ませなければ大丈夫じゃないか?
ウチではハンドラをあとからインジェクションする仕組みで使ってるが・・・

705 :デフォルトの名無しさん:2007/12/21(金) 22:24:13
>>704
確かにそうだね。
完全にGUI担当者がデザイナと化してくれれば問題はないよね。
あとは、GUI担当者が皆一様の作法を身につけてくれることが重要かな。
そのためにもGUIデザインのためのフレームワークみたいなものは欲しいね。

706 :デフォルトの名無しさん:2007/12/21(金) 22:27:10
SwingApplicationFramework

707 :デフォルトの名無しさん:2007/12/21(金) 23:59:58
デザイン関係ない

708 :デフォルトの名無しさん:2007/12/22(土) 06:26:42
GUIエディタ使って火噴くって、どんだけ低レベルなんだよ

709 :デフォルトの名無しさん:2007/12/22(土) 07:39:23
>>708
おまえ程低くないと思うよ。

710 :デフォルトの名無しさん:2007/12/22(土) 08:06:29
煽りあいしかできないのか。ちょっとは期待してたんだが。

711 :デフォルトの名無しさん:2007/12/22(土) 12:13:06
>>706
それはどっちかというとGUIアプリの処理手順をフレームワーク化してるよね
ちょっとわかりにくいかもだけど、俺がいいたいのは、「GUIデザイン」部分のフレームワーク。
そういうのがあったらいいなぁなんてオモタわけ。
うーん伝わらないか。。。

712 :デフォルトの名無しさん:2007/12/22(土) 12:45:00
>>700をはじめとして釣りがまざってるので注意

713 :デフォルトの名無しさん:2007/12/22(土) 15:44:41
IDEがないと何も出来ません><ってやつが大勢を得る事なんてないから黙ってようね

714 :デフォルトの名無しさん:2007/12/22(土) 16:01:58
原因不明のバグが出たらとりあえず全部調べるんじゃね

715 :デフォルトの名無しさん:2007/12/22(土) 16:22:38
IDEていうかGUIビルダみたいなRADのこと言ってんだろ湧いて来る厨は。

716 :デフォルトの名無しさん:2007/12/22(土) 16:26:24
せいぜいメインウィンドウのメニューや、そこから辿れる設定ダイアログまでだな。
3ペインアプリとかは手書きじゃないと満足いくものはできないだろ

717 :デフォルトの名無しさん:2007/12/22(土) 16:32:42
3ペインなら今手書きで作ってるが・・・。

718 :デフォルトの名無しさん:2007/12/22(土) 18:37:38
GUIエディタ使うってのは、業務アプリの画面とかダイアログだろ。

719 :デフォルトの名無しさん:2007/12/22(土) 18:39:31
IDEじゃ何もできません><ってやつは使い物にならんよなぁ。
ツール使えばすぐできることを、なんだかんだいいながら手書きでやるんだけど、無駄に時間かかるし古い機能しか使ってなかったり。

720 :デフォルトの名無しさん:2007/12/22(土) 18:46:41
>>718
なるほどね。業務アプリって画面びっしりコントロールをつけるからなw

721 :デフォルトの名無しさん:2007/12/22(土) 19:00:30
>>719
まともなコードが書けるかどうかが重要であって、
IDEの使用経験の有無は大した問題じゃない気がする

IDE使ったことない奴には使い方を教えてやるだけで済むが、
プログラミングのセンスがない奴はいくら教えてもどうにもならん

722 :デフォルトの名無しさん:2007/12/22(土) 19:10:38
もういいからVB使っとけよ。

723 :デフォルトの名無しさん:2007/12/22(土) 19:11:51
VBにSwingってあるの?

724 :デフォルトの名無しさん:2007/12/22(土) 19:15:21
>>721
でもIDEの慣れの差はやはり大きい
NetBeansを長年使ってきた人はさくさくつくれるけど、
Eclipseしか触ってこなかった人は開発効率が悪い

1,2年たつと違うんだろうけどね

725 :デフォルトの名無しさん:2007/12/22(土) 19:17:27
>>724
結局それがいいたかっただけか。
マジレスしなくてよかった。

726 :デフォルトの名無しさん:2007/12/22(土) 19:19:44
>>725
俺今日はじめて書きこんだんけど

727 :デフォルトの名無しさん:2007/12/22(土) 20:00:38
業務アプリだと、こんな感じで入力項目があるからな。
http://www.epson.jp/products/oen/products/kyuyo_lite/img/img_kyuuyo02.gif

ツール使わずにやるのは非効率極まりない。

728 :デフォルトの名無しさん:2007/12/22(土) 20:45:36
>>727
俺が仕事で作ってる業務アプリは、こんなもんじゃねーぞ・・・
タブで分かれて細かい設定項目が山のようにある。
あんなの手書きしてたら気が狂うわ。

729 :デフォルトの名無しさん:2007/12/22(土) 20:48:02
普通に100個ぐらいコンポーネントあるよね

730 :デフォルトの名無しさん:2007/12/22(土) 21:12:10
まだ言い合ってるのか。お前らも飽きないな

731 :デフォルトの名無しさん:2007/12/22(土) 21:22:46
業務アプリじゃJTableやJTreeはめったに登場しないしな
そういう人らは使えばいいんじゃない?

732 :デフォルトの名無しさん:2007/12/22(土) 21:24:25
JTableは使用しまくりだよ

733 :デフォルトの名無しさん:2007/12/22(土) 21:32:13
>>731
JTable使いまくりだけど・・・
検索結果を大量に表示したりせんの?
まあ、めったにJTreeは使わんけど。

734 :デフォルトの名無しさん:2007/12/22(土) 22:44:43
テーブルがでてこないアプリってあるか?
ツリーはあんまりないけど

735 :デフォルトの名無しさん:2007/12/22(土) 22:53:20
個人開発だけどツリーの方がよく使う。JTableはスプレッドシートだから業務アプリでよく使うんじゃない?

736 :デフォルトの名無しさん:2007/12/23(日) 01:19:09
アプリ毎で性格違うんだから、自分の携わったプロジェクトの経験だけあげてもしかたない。
でも、部品の利用のされ方ってのは興味深いな。

アプリで使われてる場面がどれくらいあるのか、
JTableなんかのレンダラとかもどうされてるか気になる。
デフォルトで行ける場面ってどれくらいあるのかとか。

Swingのデフォルト部品って、あと一味足りないみたいなとこあるからなぁ。
というか、特にJTableに感じるんだけど。
(表の真ん中にスクロールバー付けたいなぁ、とか)

737 : :2007/12/23(日) 03:03:49
Swingでキャッチされない例外が起きてもプログラムは終了しませんよね。
エクリプスとかで走らせてるとoutputに表示されるけど、コマンドプロンプトから走らせるとキャッチされない例外が起きてるのが分かりません。
これを知るにはどうしたらいいのですか?
検出してログをとるなり、メッセージダイアログを表示するなりしたいんです。

738 :デフォルトの名無しさん:2007/12/23(日) 05:31:30
sun.awt.exception.handler で検索汁

739 :デフォルトの名無しさん:2007/12/23(日) 11:06:01
throwsして無けりゃなんか表示するとおもう

740 :デフォルトの名無しさん:2007/12/23(日) 11:13:30
>>736
> 表の真ん中にスクロールバー付けたいなぁ
それは一味も二味も違うだろ w
それができるテーブルコントロールなんて他の言語でも見たこと無いけど。
まあ、俺なら二つのテーブルを並べて、スクロールを同期させるかな。

741 :デフォルトの名無しさん:2007/12/23(日) 11:42:12
>>738
どうもありがとうございます!
>>739
jarにしてダブルクリックで起動したりもするので、windowsだと何も表示されないのです。

742 :デフォルトの名無しさん:2007/12/23(日) 16:28:19
>>741
java -jar file.jar
と「ファイル名を指定して実行(R)..」すれば
例外は全部コンソールに表示される

743 :デフォルトの名無しさん:2007/12/23(日) 19:40:17
というか例外はアプリケーションのどっかの層で拾って
ユーザーにGUIで見せて後は処理続けるかどうかは状況次第っていうように組むもんだが。

System.errにテキストコンポーネント突っ込んでやると楽。

744 :デフォルトの名無しさん:2007/12/24(月) 00:02:41
>>743
その、「アプリケーションのどっか」にこないから問題っていってるんじゃねぇの?
738で解決するようだけど。

745 :デフォルトの名無しさん:2007/12/24(月) 01:58:17
例外の対応は場所によって個別対応するしかないよ。
問題ない例外なのかそうでないのかは単純に判断できないし。

運用時ならテキストファイルにログを書き出しておいてそこをメールで添付させるように促すとか
画面のスナップショットを自動でとってdesktopに自動でbmp作ってそれを添付させるとか
まぁいろんな方法があるわな。

746 :デフォルトの名無しさん:2007/12/24(月) 14:15:13
NetBeans6.0ってJTable使うのにほとんどの場合面倒な設定を直書きしなくてよくなったのな。
新機能であまり取り上げられていないけどこれはすごいな。

747 :デフォルトの名無しさん:2007/12/25(火) 14:46:26
SwingでPopup形式でJPanelとかJTableとかを表示したいのですが、どう書けばよいでしょうか?

748 :デフォルトの名無しさん:2007/12/25(火) 15:34:33
複雑なロジックの入ったものならポップアップよりダイアログにするほうがいいけど、ポップアップじゃないとダメ?
JDialogを普通に使うほうがいい場合もあると思うけど。

JPopupMenuは想定される素の状態だとメニューバーと同じくアクションボタンを並べるものだけど
例によって自由にカスタマイズできるので継承するといいかも。

749 :デフォルトの名無しさん:2007/12/25(火) 15:41:53
>>748
JFrameの上に出せるWindowなら何でも良いというくらいの意味だったんですが、Dialogでやろうと思います。
JPopupMenuがカスタマイズできるとは知りませんでした。ありがとうございます。

750 :デフォルトの名無しさん:2007/12/26(水) 00:00:31
Swing Application Framework でメニューバーとかツールバーを実装する場合の作法を教えてちょ。

751 :デフォルトの名無しさん:2007/12/26(水) 00:26:58
>>750
NetBeansでデスクトップアプリケーションで作ると
メインフレームがメニューとか作られるから参考にするとよろし

752 :デフォルトの名無しさん:2007/12/26(水) 00:29:32
>>751
サンクス。
いつもEclipseばっかり使ってたもんで、NetBeansには疎いんですが、
機能的には遜色ないですかね?
Eclipseでいうところの「呼び出し階層を開く」とかそういうのはありますかね?よく使う機能なので。

753 :デフォルトの名無しさん:2007/12/26(水) 01:25:27
宣言をしてる場所にとんだりする機能?

CTRL+クリックでとぶよ
キー操作だけだとどこだったかはわすれたけどEclipseと同じキー設定もあったような気がする

乗換えとかじゃなくて参考に出来ればよいと考えるといいかも

でも、GUIアプリ開発とWebアプリ開発が目的なら乗り換えるほうが楽だと思う
Swing Application Framework対応していて、@Actionとかぜんぶやってくれるよ

754 :デフォルトの名無しさん:2007/12/26(水) 08:37:12
>>753
そっちの機能じゃなくて、選択したメソッドがどこから呼び出されているかを一覧する機能。
かなり重宝してる機能なのであったらいいんだけど。

755 :デフォルトの名無しさん:2007/12/26(水) 13:14:07
呼び出し元なら普通に昔からあるけど。

756 :デフォルトの名無しさん:2007/12/27(木) 00:09:33
あるオブジェクトをある場所に移動させていきたい時に、
オブジェクトのxとyを少しづつ変化させているんですけど、どうやるのがベターですかね?
オブジェクトはいろんな場所に発生するので、
if (x > 行き先X) {


757 :デフォルトの名無しさん:2007/12/27(木) 00:10:11
すいません 途中でした。
続き
if (x > 行き先X) {


758 :デフォルトの名無しさん:2007/12/27(木) 00:13:28
すいません 途中でした。
続き
if (x > 行き先X) {
x -= 5;
} else {
x += 5;
}
if (y > 行き先Y) {
y -= 5;
} else {
y += 5;
}
こうやってるんですけど、こうするとxかyのどちらかが行き先に到達した場合に、
ぷるぷる震えた感じになっちゃうんですけど、なにかうまい方法ありますかね?

759 :デフォルトの名無しさん:2007/12/27(木) 00:13:37
それはSwingの問題なのか??

760 :デフォルトの名無しさん:2007/12/27(木) 00:15:21
単に行き先Xや行き先Yが5の倍数じゃないんじゃね?

761 :758:2007/12/27(木) 00:18:36
>>760
そうですちょうど倍数じゃないときで、移動距離を1にしたくない場合、
どういうロジックが考えられますか?

762 :デフォルトの名無しさん:2007/12/27(木) 00:34:37
>>761
それぐらい、自分で考えろよ・・・・
つかスレ違い。

763 :デフォルトの名無しさん:2007/12/27(木) 00:40:10
Math.abs() 絶対値
差が5に満たない場合
差の分だけ移動
既に目的地に到達してたら チェックはしない。
移動距離の5は定数にしようかな

思った事を書いてみた。
俺は寝る、がんばれ。

764 :758:2007/12/27(木) 00:41:06
そうですか
表示上の問題だと思ったんでここで聞いたんですが・・・
xflagとyflagを作って、&で到達チェックするとか考えたんですけど、
スマートじゃないんですよね
たとえばどんなのが考えられますかね?

765 :758:2007/12/27(木) 00:43:12
>>763
ありがとうございます
とても参考になりました

766 :デフォルトの名無しさん:2007/12/27(木) 00:45:01
>どういうロジックが考えられますか?

って自分で聞いてるぐらいだからSwingの問題じゃなくてアルゴリズムの問題だろ。

767 :デフォルトの名無しさん:2007/12/27(木) 00:51:43
そうですね
javaのスレッドで聞いたほうが良かったですね
答えてくれた方ありがとうございました。

768 :デフォルトの名無しさん:2007/12/27(木) 01:03:08
java関係ないし
問題の切り分けに注意しないと間違ったスレでは歓迎されないぞ

769 :デフォルトの名無しさん:2007/12/27(木) 01:14:11
そうですか
初心者スレッドで聞けばよかったですか
いえばただの簡単なアルゴリズムの問題なのですが、
ここなら同じようなことをやっている人がいるかなと思ったんで、
ここで聞いたほうが早いかなと思ってしまいました。

770 :デフォルトの名無しさん:2007/12/27(木) 01:17:26
初心者は初心者らしく初心者スレで聞こうな。
まあ、その前にこの程度のロジックは自分で考えられないと、
なにを作るにしても困ると思うぞ。

771 :デフォルトの名無しさん:2007/12/27(木) 01:33:38
というか普通に高校の物理の問題じゃないかこれ?
そこまでのアルゴリズムじゃないけど。

772 :デフォルトの名無しさん:2007/12/27(木) 01:36:47
物理?!

どう見ても小学生の算数レベルだろ。

773 :758:2007/12/27(木) 01:39:19
強引にやろうと思えばできると思うんですが、
スマートにできないんですよね(馬鹿なんで)。
完璧を目指すのはキリがないと思うんですが、
ある程度きれいなコードが知りたいんですよ。

ttp://pc11.2ch.net/test/read.cgi/tech/1197710566/
ここに移動したんで良かったらいいサンプルコードお教えください。

774 :デフォルトの名無しさん:2007/12/27(木) 01:43:05
>>769
>ここで聞いたほうが早いかなと思ってしまいました。
こんなのを自分で考えられないとしたら先は長い気がするが…
まぁ地道にがんばれ!

775 :デフォルトの名無しさん:2007/12/27(木) 02:06:16
ベーマガとか初心者向き雑誌がないと大変なのかなーとかおもっちまった
こういうの当時の小学生は普通に作ってたもんね

776 :デフォルトの名無しさん:2007/12/27(木) 02:18:59
HSP使ってる連中も普通に作ってるぞ。
というかゲームにSwing使ってるの?

777 :デフォルトの名無しさん:2007/12/27(木) 02:20:55
Java2Dを使うことはあるかもしれないが、Swingはあんまつかわないだろうね
ただ、ここAWTと合流したからJava2D等も含むといえば含む

本気でやるならJOGLだろうけど

778 :デフォルトの名無しさん:2007/12/27(木) 02:26:13
本当だ!!
いつの間にかスレタイにAWTが入ってた!!

779 :デフォルトの名無しさん:2007/12/27(木) 02:32:45
JOGLの正式版が出たときプレイアブルな2DデモとGLCanvasに描画するJMFのレンダラを組んだけど
いまじゃJOGLはjava2Dとパイプラインが統合されてんだよね。

OpenGLの関数使いたいわけじゃないなら-DオプションでOpenGL使うようにした方が楽かね?
それならわざわざ2D描画に3Dtoolkit使う必要ないし。

バグさえ消えれば。


780 :デフォルトの名無しさん:2007/12/27(木) 04:23:20
javax.swing.timerなんですけど
↓の様にやること多いじゃないですか
このタイマーをストップさせることって可能ですか?
public void startTimer() {
 int i = 0;
 Timer timer = new Timer(20, new ActionListener() {
  public void actionPerformed(ActionEvent e) {
   if (i > 100) {
    return;
   }
   i++;
 });
 timer.start();
}
いままで↑のような感じでiが100超えたらリターンするようにしてたんですが、
ずっとタイマーは動きっぱなしなんですよね。
timerはiが100を超えたらストップさせたいんですよ。
timer内から自分自身をstopさせることができればいいんですが...

781 :デフォルトの名無しさん:2007/12/27(木) 07:13:18
まぁ、とりあえず読みなさい。
http://java.sun.com/javase/ja/6/docs/ja/api/javax/swing/Timer.html

782 :780:2007/12/27(木) 07:55:23
そこも含めていろいろググったんですが...
実際のコーディングを見てください

まずメインクラスでクラスAのインスタンスaを10個作る(略
pubilc void run { //メインループ
 for(int i=0;i<10;i++){    //a[0]からa[9]のxを増やしていき、xが10になったらstartTimer()をplay
  a[i].x++;
  if(a[i].x >= 10) {
   a.startTimer();
  }
  @
 }
}
pubilc class A {
 int x = 0;
 int size = 10;
 public void startTimer() {
  Timer timer = new Timer(20, new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    if (size> 20) {
     return;
    }
    size++;
  });
  timer.start();
 }
}
実際はa[0]が増分し終わったらa[1]にいったり、同時に動いたりするんですが...
@の部分で判定してtimer.stopさせようとしてもすぐストップしてしまうと困るし、
メインループからはtimerがいつ終わるのかわからないのでストップできないんですよね
なにか大きな間違いがあるんでしょうか?

783 :デフォルトの名無しさん:2007/12/27(木) 08:37:43
Timer#stop()を呼べば止まると分かっているのなら、
後は変数のスコープの問題。
ローカル変数timerをクラスAのインスタンス変数にして、
こんなメソッドを作って
public void stopTimer(){
 timer.stop();
}
これをactionPerformed()内の適切な位置で呼べばいい。

ところでこのサンプルコード、Timerでやってる処理がi++だけなんだが、
これは単純化したサンプルコードなだけだよね?
ホントのコードでは、ちゃんとGUIスレッドですべき処理をしてるんだよね?

784 :デフォルトの名無しさん:2007/12/27(木) 08:53:05
ああうまくいきました
GUIスレッドですべき処理というのがいまいちわかんないんですが、
ある条件でaのエフェクトを起こすみたいな感じなんですよ
とにかくこれで寝れます どうもありがとうございました

785 :デフォルトの名無しさん:2007/12/27(木) 10:45:15
ボタンのイベント中にタイマーの時間が来たり、その逆も有ったりするって意味じゃね。

786 :デフォルトの名無しさん:2007/12/27(木) 12:26:40
>>783
swing.TimerはEDTでactionPerformed呼ぶからそのへんは大丈夫と思

787 :デフォルトの名無しさん:2007/12/27(木) 13:29:19
>>779
Java2Dだとαブレンディング/テストとか足りないものが多いから
2DであってもOpenGL使わざるを得ないのが現実

>>785が正解
あと注意すべきところはSwingTimerは定期処理にはいいけど、
長時間の流れがある処理には向かないというのもおぼえておくとよろし

あくまでも一定時間ごとにアクションイベントを発生させるだけ
詳しく見てないけどSwingFrameworkでjavax.swing.Timerも扱えるんかな?

788 :デフォルトの名無しさん:2007/12/27(木) 22:23:18
Javaで動画を再生しようと思っているのですが(Macも含める)
・JMFだとMacで再生出来ない。
・QuickTime for JavaだとLinuxで再生出来ない。
という認識はあっていますでしょうか?

789 :デフォルトの名無しさん:2007/12/27(木) 22:41:37
JMFのクロスプラットフォーム版を含めるなら間違ってる。
というかこれくらい人に聞かずとも分かるだろ。

790 :デフォルトの名無しさん:2007/12/28(金) 00:08:21
>>789
ttp://www.animoids.com/jmf_for_mac.html
「JMF_2_1_1_mac.zip」の部分から、
もしかしてMac用がどこかで配布されているのかと勘違いしてしまいました。

791 :デフォルトの名無しさん:2007/12/28(金) 03:27:55
検索するとそこヒットするんだよね。

JMFはjava動かすスペックと動画デコードするスペックを
ダブルで要求するからネイティブ版でもいろいろすると重いぞ。

単純なラッパーだからwin版はバグだらけだし。

792 :デフォルトの名無しさん:2007/12/28(金) 08:46:22
>>790
こんなの見つけたぞ
ttp://www.sra.co.jp/people/nisinaka/Jun4Java/index_ja.html

793 :デフォルトの名無しさん:2007/12/28(金) 15:55:29
2004年から更新してないとか心配なんだけど、
なんでどこも投資して開発を続けないんだろう

794 :デフォルトの名無しさん:2007/12/28(金) 16:06:51
こんなところでじゅんを見る事になるとは・・・。

795 :デフォルトの名無しさん:2007/12/30(日) 16:40:20
JFileChooserにおいて、ダイアログ表示時のデフォルトの名前を指定するにはどうすればよいでしょうか?

796 :デフォルトの名無しさん:2007/12/30(日) 16:55:09
setSelectedFile() で指定してから表示

797 :デフォルトの名無しさん:2007/12/30(日) 16:57:49
JFileChooser#setSelectedFile(File)

798 :デフォルトの名無しさん:2007/12/30(日) 17:14:41
ありがとうございました!

799 :デフォルトの名無しさん:2007/12/31(月) 00:16:16
NetBeans入れたら超もっさり動作でがっかりした。
結局今はEclipseにもどりますた。
SwingアプリがSWTアプリみたいに比較的ストレスなく動いてくれる日はマダ来ないのかね。

800 :デフォルトの名無しさん:2007/12/31(月) 00:25:30
もっさりとかストレスなく動くとかってのは主観的なものだから、
>>799の気分次第で明日にでも来るし、永遠に来ない事もありうる

801 :デフォルトの名無しさん:2007/12/31(月) 00:57:01
>>799
マシンのスペックはいかほどで?

802 :デフォルトの名無しさん:2007/12/31(月) 00:58:07
JavaはマイナーCPUに冷たいだろうし
マイナーGPUにも冷たいのかもしれんね

803 :デフォルトの名無しさん:2007/12/31(月) 01:02:44
CやC++なら温かいともいえないんじゃね?

804 :デフォルトの名無しさん:2007/12/31(月) 01:16:32
>>802
Java使ってるSWTもマイナーCPUやマイナーGPUに冷たいって事に?

805 :デフォルトの名無しさん:2007/12/31(月) 01:17:10
>>802
SPARCにも冷たいって事に?

806 :デフォルトの名無しさん:2007/12/31(月) 01:20:05
>>804はスルーするが、>>805は許せん。

807 :デフォルトの名無しさん:2007/12/31(月) 01:42:32
今時はお世辞にもメジャーとは言い難い。

808 :デフォルトの名無しさん:2007/12/31(月) 14:16:14
いまさらSPARCもねえだろ

809 :デフォルトの名無しさん:2007/12/31(月) 15:29:10
金にいとめをつけずWinで最速のマシンもってくれば、Javaでもかなり高速動作するんじゃないの。

810 :デフォルトの名無しさん:2007/12/31(月) 15:33:56
既存のコンポーネントにアクションを付加したい場合どのような手段を取るのが比較的単純に済むでしょうか?

例えば、JTreeでCtrl+Fで検索のアクションをさせたい場合などです。

811 :デフォルトの名無しさん:2007/12/31(月) 17:44:54
>>810
適当なコンポーネントの ActionMap と InputMap に登録すればいいだろ。

812 :デフォルトの名無しさん:2007/12/31(月) 18:07:49
JFileChooserののろさにガックリ

813 :デフォルトの名無しさん:2007/12/31(月) 18:15:44
>>368 あたりで話題になってる不具合のせいかも?

814 :>>810:2007/12/31(月) 18:36:09
InputMapを知りませんでした。
こんな簡単に実現できるなんてSwingは本当にすごいですね。
ありがとうございました。

815 :デフォルトの名無しさん:2008/01/01(火) 02:16:39
>>799
いつものネガティブキャンペーン乙

6.0だとEclipseのほうが軽いとかってありえんだろ
SWTはスレ違いだからそっちでやってくれ

816 :デフォルトの名無しさん:2008/01/01(火) 02:28:13
今更釣られるアホは寝てろ

817 :デフォルトの名無しさん:2008/01/01(火) 08:17:29
たしかに起動に関してはnetbeansめっちゃ遅いよな

818 :デフォルトの名無しさん:2008/01/02(水) 02:11:59
何もプラグイン入れなければ、Eclipseは軽いね。

819 :デフォルトの名無しさん:2008/01/02(水) 02:17:51
Java EE フルセット入れた Eclipse のもっさりと不安定さはすさまじいものがある。
sysdeo の Tomcat プラグインと JSP, XML の構造化エディタ程度ならめちゃめちゃ軽い。
必要なものを選択できる人間だけが楽できる。

820 :デフォルトの名無しさん:2008/01/02(水) 03:15:40
>>819
インストールしてもプラグイン無効にすればいいんじゃね?

821 :デフォルトの名無しさん:2008/01/02(水) 22:26:40
swingのコピペを調べてたんだが。

CTRL+X -> CTRL+V で「切り取り -> 貼り付け」した時に、
貼り付け後に、余計なオブジェクトを削除するための後処理はexportDoneでいいんだろうか?
なぜか、CTRL+Xを押した瞬間に、exportDoneが実行されちゃうんだ。

exportDoneの説明には、
>データのエクスポート後に呼び出されます。このメソッドは、アクションが MOVE の場合に転送されたデータを削除します。
>MOVE はこの実装にサポートされるアクションでないため、このメソッドの実装では何も行われません。getSourceActions には MOVE が含まれません。

どっちやねんw

822 :821:2008/01/02(水) 22:28:33
今のところ、対処方法が分らないので、exportDoneの中では何もせず、
importDoneの中で、貼り付け操作完了後に、
自分で削除操作を実行しようかなと思ってる。

823 :821:2008/01/03(木) 00:34:28
なにをバカなことを!

切り取りの標準的な操作は、切り取りと同時に削除だろうが!

エクスプローラの動作が特殊なんだ!
新年早々はずかしぃぃぃぃぃぃぃぃぃぃぃぃ!!!!!!!!!!

824 :デフォルトの名無しさん:2008/01/03(木) 03:16:52
エクスプローラの動作は、CUTというよりPREPARE-MOVEだからな。

825 :デフォルトの名無しさん:2008/01/05(土) 20:53:44
>>817
終了はめっちゃ速いのだが。

826 :デフォルトの名無しさん:2008/01/06(日) 23:23:28
jdk1.6.0u3
import java.awt.Frame;
これってバグなの?

827 :デフォルトの名無しさん:2008/01/06(日) 23:33:55
      ___    ━┓
    / ―\   ┏┛
  /ノ  (●)\  ・
. | (●)   ⌒)\
. |   (__ノ ̄  |
  \        /
    \     _ノ
    /´     `\
     |       |
     |       |

           ___   ━┓
         / ―  \  ┏┛
        /  (●)  \ヽ ・
       /   (⌒  (●) /
       /      ̄ヽ__) /
.    /´     ___/
    |        \
    |        |

828 :デフォルトの名無しさん:2008/01/06(日) 23:49:08
>>827
分かる人にはこれだけで分かる

829 :デフォルトの名無しさん:2008/01/06(日) 23:53:32
>>827
>>828
バグってたのは俺のほうだったw
*.class 削除したらコンパイル通ったよww

830 :デフォルトの名無しさん:2008/01/07(月) 00:55:29
どういう環境だよ・・・

831 :デフォルトの名無しさん:2008/01/07(月) 01:26:16
>>830
http://pc11.2ch.net/test/read.cgi/tech/1197710566/646
だろう。

832 :デフォルトの名無しさん:2008/01/07(月) 11:20:26
テストするならTestFrameとかにすべし

833 :デフォルトの名無しさん:2008/01/07(月) 12:55:58
>>831
よくみつけてきたな

834 :デフォルトの名無しさん:2008/01/09(水) 03:57:38
相変わらず質問スレは気持ち悪いな

835 :デフォルトの名無しさん:2008/01/09(水) 17:58:19
import java.util.*;
import javax.swing.*;
public class NewJFrame2 extends javax.swing.JFrame {
List<String> dummyList = new ArrayList<String>();
JList jList;
public NewJFrame2() {
setDefaultCloseOperation( WindowConstants.EXIT_ON_CLOSE);
JScrollPane jScrollPane = new JScrollPane();
jList = new JList();
jScrollPane.setViewportView(jList);
getContentPane().add(jScrollPane, java.awt.BorderLayout.CENTER);
for ( int i=0; i<300; i++ ) {
StringBuilder sb = new StringBuilder();
int max = (int)(Math.random() * 100 + 1);
//int max = 20;
for ( int j=0; j<max; j++ ) sb.append("A");
dummyList.add(sb.toString() + " " + i);
}
jList.setModel(new AbstractListModel() {
public int getSize() { return dummyList.size(); }
public Object getElementAt(int index) {
return dummyList.get(index);
}
});
pack();
}
public static void main(String args[]) {
new NewJFrame2().setVisible(true);
}
}

836 :デフォルトの名無しさん:2008/01/09(水) 18:01:42
JListのカーソルキーによるスクロールことで謎があるので投げてみる。

>>835のプログラムなんだけど、単純にJListの中に300個のダミーデータを入れている。

カーソルキーで下にスクロールしていき、数十行進んだら、こんどは上に10行くらい
スクロール。
そしたらまたカーソルキーで下に移動。
すると、選択されてる項目が一瞬で画面の下までジャンプしてしまう。
このプログラムで、maxを20とか一定の値にした場合はジャンプしない。
JListの各セルの文字列長をランダムに変えたものを入れるとこの現象が起きる。
こういう仕様なのかもしれないけど、一瞬で選択位置が飛ぶと、
目線がそれてしまうので操作感がよくない。
maxを固定したときのように動作してほしい。
なんとかする方法ないかなぁ?

837 :デフォルトの名無しさん:2008/01/09(水) 19:57:24
>>836
解決法でないのだが、「ジャンプ」の条件について。
固定長かどうかではなく、Viewport の外に描画域があるかないか、ではないのか、と。

固定長で横スクロールが出るようにしたときは「ジャンプ」するし、
固定長でなくても、横スクロールが出ないときは「ジャンプ」しない。

JScrollPane で横スクロールを非表示にしても、見えない部分があるときは「ジャンプ」する。

838 :デフォルトの名無しさん:2008/01/10(木) 16:05:46
フレームの横サイズを水平スクロールバーが出なくなるまで広げてやればジャンプはしないな。
しかしちょっと設定をいじくったぐらいでは解決しそうない。
オーバーライドして一部の機能を殺すとか。

839 :デフォルトの名無しさん:2008/01/10(木) 18:27:36
↓このバグだと思うよ。7で直ってるらしい。
http://bugs.sun.com/view_bug.do?bug_id=6568906
http://bugs.sun.com/view_bug.do?bug_id=6510999

840 :デフォルトの名無しさん:2008/01/10(木) 18:57:44
バージョンアップを待つのが一番楽そうだね

841 :デフォルトの名無しさん:2008/01/10(木) 19:27:17
よく見つけてくるな。すげーよ。

842 :デフォルトの名無しさん:2008/01/10(木) 21:33:46
有名なバグだぞ。
JListに512個要素突っ込むとバグるとか放置されてるし。

843 :デフォルトの名無しさん:2008/01/10(木) 22:03:23
>>842
2000個いれてみたけど、なにかバグあんの?

844 :デフォルトの名無しさん:2008/01/10(木) 22:52:30
512個入れて、一番したのアイテム選択してCTRL+B

これで、すべてのアイテムが2個ずつになって1024個になるというステキなバグ

845 :デフォルトの名無しさん:2008/01/10(木) 23:06:27
1から10000までの数字を全部掛けたときに
末尾に並ぶ0の個数を求めるのをJavaでおながいします


846 :デフォルトの名無しさん:2008/01/10(木) 23:10:36
それはSwingに関係あるのか?

847 :デフォルトの名無しさん:2008/01/10(木) 23:16:39
>>844
バグが出なかったんだけど
他になんか条件ないの?

848 :デフォルトの名無しさん:2008/01/10(木) 23:17:55
>>845

class Test{
static void main () {
cnt5 = 0;
for (int i = 1;i <= 10000; i++)
if(i % 5 == 0)
cnt5++;
System.out.println("count" + cnt5);
}
}

849 :デフォルトの名無しさん:2008/01/10(木) 23:22:25
ああ、5から5ずつ足してくから10000/5=2000か?

850 :デフォルトの名無しさん:2008/01/10(木) 23:48:27
10を素因数分解して2*5。んで、2は大量に有るから、5だけ数えれば良い、と。

851 :デフォルトの名無しさん:2008/01/10(木) 23:51:27
どの道>>848は間違ってるわな

852 :デフォルトの名無しさん:2008/01/11(金) 00:07:08
>>850
i%25 とか i%125 も数えなきゃだめじゃね?

853 :デフォルトの名無しさん:2008/01/11(金) 00:07:36
どのみちグズグズっぽいんだが。

854 :デフォルトの名無しさん:2008/01/11(金) 00:15:22
スレチだからまぁ。妖精現実を引っ張ってお茶を濁すべ
つ ttp://deztec.jp/x/05/faireal/faireal-26-index.html

855 :デフォルトの名無しさん:2008/01/11(金) 00:19:54
いかにロジカルに解くかが課題じゃなけりゃ BigDecimal で階乗求めて数えた方が早い。
実用に問題ないレベルならシンプル記述に徹するのも美学。

856 :デフォルトの名無しさん:2008/01/11(金) 00:48:09
80-20の法則な。今丁度勉強中。

857 :848:2008/01/11(金) 01:29:37
直した。
class Test{
static void main () {
int cnt5 = 0, n;
for (int i = 5;i <= 10000; i += 5) {
n = i;
while (n % 5 == 0) {
cnt5++;
n /= 5;
}
}
System.out.println("count" + cnt5);
}
}

858 :デフォルトの名無しさん:2008/01/11(金) 01:39:18
だからどのへんがAWT/Swingに関係あるんだよと

859 :デフォルトの名無しさん:2008/01/11(金) 01:57:27
839だけど、このバグは初めて知った。
>>有名なバグだぞ。
にしては、バグ登録日があまり昔ではないが?

>>842
>>844
そんなバグはありえない。
まず、JList、JListのsuperクラスにCTRL+Bなんてデフォルトのキーバインドはない。
さらに、ListModelへ項目の追加、削除が可能であることを
JListは知りようがないから、JListがListModelに項目を追加することはできない。
(ComboBoxModelのMutableComboBoxみたいなインタフェイスはない。)

そもそも、登録もされていないキーバインドが実行されるなら、
JListでなく、JComponentのバグだし。

JListがListModelに項目を追加する唯一の方法は、
ListModelをDefaultListModelへダウンキャストすることだけど、
Swingのソースコードにダウンキャストするような箇所はない。

さて、どうやったら、ソースに書かれていないことを
JListが実行するのだろう?


860 :デフォルトの名無しさん:2008/01/11(金) 03:06:00
256発あてるとバキュラを破壊できるんだぜ

861 :デフォルトの名無しさん:2008/01/11(金) 03:13:52
Observer や Composite 型の設計だと本体クラスでそう書かれてないからライブラリのバグじゃねーとは
断言できないんだけどな。実行時のリスナやら集約の親子まで調べてやらないと。

862 :デフォルトの名無しさん:2008/01/11(金) 03:22:05
ちょっと尻切れトンボだった。
JLabel クラスが無罪であることを得々と説いてもあんまし意味なくね? という話 (実装者乙、でなければ)。

863 :デフォルトの名無しさん:2008/01/17(木) 15:17:13
JEditorPane とか、せめて W3C の DOM で xhtml + CSS になってくれりゃ
XSL で処理できるからデータを利用しやすいんじゃがのう。

864 :デフォルトの名無しさん:2008/01/17(木) 18:20:01
自分でやれば良いだろそれくらい。

865 :デフォルトの名無しさん:2008/01/17(木) 18:50:17
Lobo Browserに投資する企業はいないのかねぇ

866 :デフォルトの名無しさん:2008/01/17(木) 19:01:08
>>865
ブラウザを使うのがPCだけしかない考えてるなら、考え直した方がいい。

867 :デフォルトの名無しさん:2008/01/17(木) 19:04:52
Swing の HTML 機能も携帯のフルブラウザにすら追い越されて久しいわけだが。

868 :デフォルトの名無しさん:2008/01/17(木) 19:21:49
>>867
一緒にしてるしwwwアホか?

869 :デフォルトの名無しさん:2008/01/17(木) 19:27:01
シンクライアントに必要なだけだし携帯とかいらんな

870 :デフォルトの名無しさん:2008/01/17(木) 19:30:49
>>868
むしろあの HTMLEditorKit 系をおまいがどこで活用できてるのか知りたい。

871 :デフォルトの名無しさん:2008/01/17(木) 19:31:39
ブラウザをJavaでやる必要があるのか?

872 :デフォルトの名無しさん:2008/01/17(木) 19:42:23
普通にあるぞ。例えばヘルプ機能とかの生産性があがる。
JDICだとXSS対策が必要だろうけど、こっちは不要。

873 :デフォルトの名無しさん:2008/01/17(木) 19:56:22
うん、ヘルプは俺も使う。だがどうしてもその Sandbox から出してやれんw

874 :デフォルトの名無しさん:2008/01/17(木) 20:06:38
バカばっかだな

875 :デフォルトの名無しさん:2008/01/17(木) 20:09:36
Sandboxなフルブラウザは作れると思うが。
Rhinoにその手のインタフェースを与えなきゃいいだけだ。

876 :デフォルトの名無しさん:2008/01/17(木) 20:22:15
フルブラウザという言葉自体胡散臭い

877 :デフォルトの名無しさん:2008/01/17(木) 20:25:26
頭の悪い煽りがやたら入るスレだなw

878 :デフォルトの名無しさん:2008/01/17(木) 20:30:43
たまに客がどこで見つけたか知らないが 「Swing でもブラウザみたいなこと
できるんでしょ?」 と言い出す事もあるが、あれを見せるとさすがに黙る。

879 :デフォルトの名無しさん:2008/01/17(木) 20:34:02
つ Flying Saucer

880 : :2008/01/17(木) 20:39:33
Swing の HTMLEditorKitは文字通りEditorのためでブラウザみたいに表示onlyではないからね。
でも日本語とかIMEのこととか考えてないよな、あのHTMLEditorKitは。表示だけならいいけど。

881 :デフォルトの名無しさん:2008/01/17(木) 20:46:38
4.01準拠マダー?

882 :デフォルトの名無しさん:2008/01/17(木) 23:57:24
JavaがC++より優れている事を示す
絶好の材料だと思うんだけどなあ<ブラウザ

883 :デフォルトの名無しさん:2008/01/18(金) 00:15:59
標準ライブラリの有無で言語の優劣を決めるのか?

884 :デフォルトの名無しさん:2008/01/18(金) 00:23:11
実際問題、ライブラリとIDEが言語仕様の優劣を余裕で帳消しにするからね。
D言語1.0がまったく普及しない原因がそれと言われてるし。

885 :デフォルトの名無しさん:2008/01/18(金) 00:29:11
C++の失敗もそうだね
標準ライブラリがしっかりしてれば
Javaは生まれなかったかも知れない

886 :デフォルトの名無しさん:2008/01/18(金) 00:30:48
Perl嫌いだけどこれだけ流行ってしまったのは
CPANのおかげと言っても過言ではない死ね

887 :デフォルトの名無しさん:2008/01/18(金) 00:36:14
>>883 の中では SmallTalk が世界を救うようです。

888 :デフォルトの名無しさん:2008/01/18(金) 03:53:19
java c++ d を同列に扱う馬鹿がおる

889 :デフォルトの名無しさん:2008/01/18(金) 08:12:32
>>888
人を否定するなら代替の主張を出してからにしたら?

890 :デフォルトの名無しさん:2008/01/18(金) 14:17:41
なにいってんだ?

891 :デフォルトの名無しさん:2008/01/18(金) 19:29:51
同列だろ。言語仕様は実装とは違うレイヤーにある。

892 :デフォルトの名無しさん:2008/01/18(金) 19:37:12
いいかげんスレ違いだろ
次の話題どうぞ
↓↓↓

893 :デフォルトの名無しさん:2008/01/18(金) 19:38:57
JMFって商用可能ですか?

894 :デフォルトの名無しさん:2008/01/18(金) 19:55:06
スレ違い

895 :デフォルトの名無しさん:2008/01/18(金) 20:11:16
どうかんがえてもここだろ。自治厨とか懐かしすぎ。

896 :デフォルトの名無しさん:2008/01/18(金) 20:52:29
JMFがここだって

897 :デフォルトの名無しさん:2008/01/18(金) 21:04:19
じゃあJOGLはここでいい?

898 :デフォルトの名無しさん:2008/01/18(金) 21:36:21
じゃあ、SDL for javaもここだな。

>>865の脳内ではメディア再生ライブラリがGUIツールキットなんだよ。

899 :デフォルトの名無しさん:2008/01/18(金) 21:51:43
普通の考えじゃん。頭おかしいんじゃね?

900 :デフォルトの名無しさん:2008/01/18(金) 22:57:52
JOGLはこっちじゃない?
http://pc11.2ch.net/test/read.cgi/tech/1033703640/

901 :デフォルトの名無しさん:2008/01/18(金) 23:25:19
JOGLとJava3Dはまったくの別物だぞ・・・
むしろGLCanvasとかGLJPanelとかAWTとSwingの外部コンポーネントと考えれるからこっちだろと

シンプルに描画だけのOpenGLの実装だからユーザーに全ての描画を任せるタイプで
フルスタックで重いJava3Dとはかなり違う

902 :デフォルトの名無しさん:2008/01/18(金) 23:44:31
JOGLはOpenGLスレで良いらしいぞ

903 :デフォルトの名無しさん:2008/01/19(土) 00:32:48
OpenGL自体の知識はOpenGLスレが本筋
でもGLCanvasの挙動とかどうかんがえてもむこうの範疇ではないと思うんだが

904 :デフォルトの名無しさん:2008/01/19(土) 00:49:50
JMFの話題についてけないゴミなんだろうな

905 :デフォルトの名無しさん:2008/01/19(土) 02:38:13
スレチ

906 :デフォルトの名無しさん:2008/01/19(土) 14:52:45
Java標準拡張のメディア再生フレームワークのどこがスレ違いなんだかw

907 :デフォルトの名無しさん:2008/01/19(土) 14:57:23
スレタイ嫁アホ

908 :デフォルトの名無しさん:2008/01/19(土) 14:58:04
誰も答えられる奴がいないんだろう。フヌケばかりだしw

909 :デフォルトの名無しさん:2008/01/19(土) 15:00:19
自己紹介乙

910 :デフォルトの名無しさん:2008/01/19(土) 15:06:22
>>909
フヌケw

911 :デフォルトの名無しさん:2008/01/19(土) 15:09:12
頭の弱い自治厨が沸いてるみたいだけど、前からJMFの話題は出てるから。

912 :デフォルトの名無しさん:2008/01/19(土) 15:17:48
スレタイの読めない盲目がわいてるからスルーしろ

913 :デフォルトの名無しさん:2008/01/19(土) 15:20:32
JMF涙目www

914 :デフォルトの名無しさん:2008/01/19(土) 21:24:53
>>893
ライセンス読むと良いよ。
たしかRuntimeと同じ特例が適用されてたと思う。

915 :デフォルトの名無しさん:2008/01/25(金) 17:18:55
そういえばJava Media APIのスレってないんだな。
JMFとJOGLは需要ありそうというか隔離しないと他で暴れるバカが出てきそうだけど。

JAIは実際に使ってるの見たことないな。

Java Media APIスレ立てたら誘導用くらいには機能するかね?

916 :デフォルトの名無しさん:2008/01/25(金) 18:02:09
>>915
JMFはあってもよさそうなもんだなぁ…
JOGLは…どの程度使われてるんだろ…?

917 :デフォルトの名無しさん:2008/01/25(金) 18:18:28
ちなみにJava Media APIsはこんだけある


・Java Media Framework (JMF)
・Java Sound API
・Java 3D
・Java Binding for OpenGL(JOGL)
・Java Advanced Imaging(JAI)
・Java Image I/O
・Java 2D
・Java Speech API
・Java Telephony API(JTAPI)


JMFとJava Advanced Imaging、Java Image I/O
、Java 2DはAWT/Swingコンポーネント関係ないなら分けた方が良いと思うんだけどな。

918 :デフォルトの名無しさん:2008/01/25(金) 18:23:03
使われてる割合JOGL>JMF
知名度JMF>JOGL
日本語リソースの多さJMF>JOGL

じゃない?
javaでゲームつくるとなるとJOGLは欠かせないけど、なきゃないでJava2Dで十分って感じ。
ゲ制のJavaでゲームつくるスレが落ちたからJOGL聞く場所がないんだよ。

919 :デフォルトの名無しさん:2008/01/25(金) 18:31:48
>>918
javaでゲームつくるとなるとJOGLがほしい、ってのはわかるんだけど…
そもそもPC向けゲームをつくるのにjavaを選ぶ理由がないよなぁとか思うわけですよ?
その手のゲームって結構あるものなの?

920 :デフォルトの名無しさん:2008/01/25(金) 18:32:44
コードに手を入れず入出力フォーマット増やしたいときに使うよ > JAI
まぁバグも多いけど。

921 :デフォルトの名無しさん:2008/01/25(金) 18:32:58
JOGLはOpenGLスレでもいいんじゃない
ところでJMFとJOGLって比較するもんなのか…?

922 :デフォルトの名無しさん:2008/01/25(金) 18:42:12
別に比較したいわけじゃなくてスレたてるかどーすっかって話だろ。
需要的に考えると全部まとめて Java Media API スレとかでもいい気がするな。

923 :デフォルトの名無しさん:2008/01/25(金) 18:48:58
ぐだぐだ言ってないでスレ立てればいいだろ

924 :デフォルトの名無しさん:2008/01/25(金) 18:57:23
JOGLは2.0はサポートするけど1.3で拡張からコアに入ったAPIは混同するという理由で1.3で追加されたAPIはサポートされてないから迂闊にOpenGLスレいけないんだよ。

あとjavaでゲームつくるってのはかなり居る。
日本でもググレば出てくるし、海外はJOGL,JInput,JOALはセットでゲームつくるときに使う。
ただ、リソースは海外の方が多い。
だから日本語のリソースがないから英語読めないと何も出来ネ!ってなる。

俺も需要的にJava Media APIsで統一してスレ立てても良いと思うんだが・・・誘導・隔離用にw
IIOとかJava soundはアプリケーションプログラマが直接いじる所って少ないしさ。

925 :デフォルトの名無しさん:2008/01/25(金) 20:08:13
JOGLって将来的に標準に入るって可能性ありますかね?

926 :デフォルトの名無しさん:2008/01/25(金) 20:22:48
クライアント向けのJava標準拡張は全てが滅茶苦茶将来性がある。
根拠はJava 7に登場のJava Kernel、JAM、JavaFXあたり。これらは要チェック。

Java Sound本、最近でたね。つい衝動買いしたけど、まだ読んでなかったり。

927 :デフォルトの名無しさん:2008/01/25(金) 20:29:26
工学社ってだけでなんか敬遠してたんだけど実際どうなんだろう・・・

928 :デフォルトの名無しさん:2008/01/25(金) 23:12:41
JOGLに将来性ある事は否定しないけど、まだ3年ぐらい先の話だろう。
つまり人柱。日本語のページも全然ないし。
あまり勧めたくはないけど、もしゲームで、かつwindowsなら、C#じゃないか?

929 :デフォルトの名無しさん:2008/01/25(金) 23:26:44
あんな重いの話にならん。
1コア丸々使ってる箱○なら別だが

930 :デフォルトの名無しさん:2008/01/26(土) 22:12:41
【JMF】Java Media APIs【JOGL】
ttp://pc11.2ch.net/test/read.cgi/tech/1201346803/l50

スレ立てられなかったのでスレ立て依頼出してたのが立った。
今後はこちらでどうぞ。

スレタイには一番使われそうなJMFとJOGLを追加しといた。
ほかテンプレあれば書いて。

Java Media APIsはDesktop Javaの一部なんでJava SE以外のエディションやAndroidは関連スレから除外しといた。
ネイティブ依存なSWTも同様。

931 :デフォルトの名無しさん:2008/02/06(水) 00:48:21
で、いい加減そろそろ、JAIのメモリリークは直ったのか?

932 :デフォルトの名無しさん:2008/02/07(木) 21:21:18
複数の Component の描画の順序(重なり具合)を任意に変えるには、

親コンテナ.remove(comp) / 親コンテナ.add(comp, index) もしくは
getComponentZOrder(comp) / setComponentZOrder(comp, index)

の組み合わせしか方法はありませんか?

Component のほうが、自立的に一歩前進、とか、一歩後退、みたいな仕掛け、ありませんかね…?

たとえば、大、小の円がそれぞれ component だったとして、
それを、drag で、重ねたときに、◎になるようにするしたいんですが。
(2つに限らず、3つ、4つでもいけるように)

getComponents してループさせて入れ替え、しかないでしょうか。

933 :デフォルトの名無しさん:2008/02/07(木) 21:49:59
JLayerdPaneを増やして載っけるとか。



934 :932:2008/02/07(木) 22:13:16
>>933
おぉ、JLayeredPane、忘れてましたw
duke 君のデモソースはチェックしたのに、なにしてんだ>自分

そういう Pane がある、ということは裏を返すと Container/Component
には、あまり気の利いた順序変更の手段はないんですかね。

ひきつづき、つっこみ・ご意見お待ちしております。

935 :デフォルトの名無しさん:2008/02/07(木) 22:38:09
実際のところ重なりの順序を動的に変えたいことってあるの?
それが必要なパターンが想像できないんだが。

936 :デフォルトの名無しさん:2008/02/07(木) 22:52:22
CardLayoutでもいいんじゃね?

937 :932:2008/02/07(木) 23:03:27
レス、どうもです。

>>935
ビジネスアプリケーションじゃなくて、えと・・・
ゲームでキャラが重なる、みたいなヤツを思い浮かべてください。

>>936
CardLayoutは、ノーチェックでした。
リファレンスをチェックしてきますノシ

938 :デフォルトの名無しさん:2008/02/07(木) 23:06:39
>>937
ゲームのようなやつならSwingつかわずにJava2D等で描画したほうがいいよ
速度的にもメリットが薄い

939 :デフォルトの名無しさん:2008/02/07(木) 23:41:33
SwingよりJava2DじゃなくてSwingよりAWTでJava2Dじゃね?
Java2DよりJOGLの方がry

940 :デフォルトの名無しさん:2008/02/07(木) 23:43:46
Java2D って Swing じゃないのか?

941 :932:2008/02/07(木) 23:46:41
>>936
CardLayout、あとは自分で動作とか確認しますが、リファレンス曰く、
「コンテナ内の各コンポーネントをカードとして扱います。一度に 1 枚のカードだけを表示し…」
う、1枚では困るぅ〜。

>>938
Java2D にそんなに詳しくないのですが、
ゲームのキャラでなく、(バーチャル環境の)アバターみたいのヤツを
前後(奥行き)に操作する、といったような例だとどうでしょうか。
イメージのまま取り回すのは管理が大変かなぁ、とビビッているのですが…。
設計次第ですかねぇ。
速度の要望はそんなにシビアでないです。

942 :デフォルトの名無しさん:2008/02/08(金) 00:11:39
>>940
違うAWT、Swing,Java2Dは同じ層にあるUser InterFace Toolkits。
AWTはAWT,SwingはSwing,Java2DはJava MediaのAPI。
そもそもAWTは重量WindowToolkitでSwingはJava2Dを使った軽量WindowToolkitだろ。
Java2Dは2D描画ライブラリ。
javadoc嫁。

943 :デフォルトの名無しさん:2008/02/08(金) 00:23:42
>>939
JOGLいいけど、テクスチャを単純に表示するのが目的ならそこまで必要ないと思う
プラットフォームによってパッケージが違うのもやっかいだし、Line引くときたぶんはまる

Java2Dはαブレンディングがまともに実装されていないのがきついかな
おかげでゲームで使うときはJOGL必須だ

>>941
その動かすキャラクターの動く範囲は?
Window内をじゆうじざいにということでないのなら、
その描画はJava2Dによる重ね合わせのほうが難易度は低いと思う

944 :デフォルトの名無しさん:2008/02/08(金) 00:38:19
αブレンドなぁ。結局Java2Dだとハードウェアアクセラレータ効かないんだよな。
JOGL1.1ならcom.sun.opengl.util.j2dが追加されたから
BufferStrategyと同じ感覚で使えるんだけどcom.sunパッケージは嫌い?

945 :デフォルトの名無しさん:2008/02/08(金) 02:07:08
レイヤードペインの話題が見えたので便乗

1.JFrameのgetLayeredPane()に直接JLabelとか貼り付けて遊んでた。
2.この状態で、ポップアップメニュー出したら、表示されなかった。
3.マウスをずるずる動かして、見えないメニューの上を通過させるとメニューが表示された。

※メニューが「パッ」と全部表示されるんじゃなくて、
マウスが乗っかったメニューアイテムが1つずつ表示される。

4.JLabelを乗せるレイヤーを変えても問題は解決しなかった。

そもそも1.の使い方がナンセンスなのか。
レイヤードペインとポップアップは気をつける何かがあるのか。
誰か知ってる人がいたら教えてください。

946 :デフォルトの名無しさん:2008/02/08(金) 04:07:33
混ぜるな危険じゃない?

947 :デフォルトの名無しさん:2008/02/08(金) 08:21:43
ポップアップってどっかのレイヤーの上に描画されるんだっけ?
GlassPane?


948 :デフォルトの名無しさん:2008/02/08(金) 09:58:10
おはようございます。932,941でございます。
とりあえず、LayeredPane を導入してみますデス。

もう一個、教えてくんです・・・。
contains(int x, int y) メソッドって、
リスナーにしなくても mouseEntered なとき(Component 上に
マウスカーソルがあると)、勝手に呼ばれるようですが、
それでよいです??? Documented な仕様ですか?

override して使わないほうがよさそうですよね。override しちゃだめ?
だったら final にして〜〜。

949 :デフォルトの名無しさん:2008/02/08(金) 18:15:56
>>947
描画される順番の問題。
GlassPaneは自分で描画しない限り何もない。
GlassPaneでイベント握り潰せば結果的にGUIをブロックできる。

950 :デフォルトの名無しさん:2008/02/08(金) 18:21:08
>>947
layeredPane の POPUP_LAYER じゃない?

951 :945:2008/02/09(土) 00:25:29
追記

JLabelにアニメーションGIFを表示させた場合、
絵が書き換わるたびに、マウスずらしで表示させた
ポップアップメニューが消されたw

・JLabelに文字を表示させた場合
・普通にコンテンツペインにJLabelを置いた場合

この状態での実験も。。。今度やってみる

952 :デフォルトの名無しさん:2008/02/09(土) 11:06:14
どうしてもバグければ JPopupMenu#setLightWeightPopupEnabled を false にしてみる手も

953 :デフォルトの名無しさん:2008/02/09(土) 11:47:18
バグ-ける

954 :デフォルトの名無しさん:2008/02/09(土) 11:59:19
その活用形はおかしい
バグ-かろう
バグ-かった
バグ-くない
バグ-い
バグ-ければ

955 :948:2008/02/09(土) 13:01:03
昨日、速攻、JLayeredPane 組み入れました。

気がついたのは、

より上位の Layer のコンポーネントが、より下位のコンポーネントを
完全に覆い隠すと(感覚的にいうと lower.getBounds() < upper.getBounds())
のとき下位のコンポーネントが描画されない(消える)

つーことがありました。
理屈としては、そのほうが、高速化が図れるのかもしれないけど、
上位の矩形のイメージが透明化されてるときちょっと困るんだけどなぁ。

956 :デフォルトの名無しさん:2008/02/09(土) 13:38:19
>>955
上位レイヤのコンポーネントでsetOpaque(false)でどう?


957 :デフォルトの名無しさん:2008/02/09(土) 13:41:41
setOpaque(false) してる?

958 :948:2008/02/09(土) 15:38:21
>>956,957
レス、どうもです。
setOpaque() してると思うんですが、今日は、職場でないので
確認できないっす。火曜日にチェックします!
みなさんは休出っすか?

959 :デフォルトの名無しさん:2008/02/09(土) 15:41:04
>>958 は 3 回くらい死んでも良いと思う

960 :デフォルトの名無しさん:2008/02/09(土) 18:30:57
つーか自宅にPCないんか

961 :945:2008/02/10(日) 03:09:13
おいおい、会社で趣味プログラミングかよw

それはともかく、>>952さんありがとうございます。
ポップアップでまくりですよ。

そして、実験の報告。

>・JLabelに文字を表示させた場合

結果:×
レイヤードペインに文字ばっかりのJLabelを乗せてみた。
文字の後ろにメニューがでた。文字の隙間からメニューが見えてるw
マウス動かすと文字の前に来るあたりの挙動は一緒。

>・普通にコンテンツペインにJLabelを置いた場合

結果:○

当たり前か。

962 :デフォルトの名無しさん:2008/02/13(水) 19:28:37
現在TransferHandlerを用いてJTreeにコピーアンドペーストの機能を付加しています。
同様のアクションをJPopupMenuにも加えたいのですが、どのようにすればよいでしょうか?
CTRL C, CTRL Vではうまくいくのですが、JPopupMenuからアクションを行うと、ソースが変わってしまいだめなようなのです。
TransferHandlerのcopyのアクションのコードを見てみると、アクションソースがJComponentのインスタンスでなければ弾いているのが原因のようです。
そこで
// a:TransferHandlerのアクション
private Action createAnotherSourceAction(final Action a,final Object src){
 return new AbstractAction(){
  public void actionPerformed(ActionEvent e) {
   e.setSource(src);
    a.actionPerformed(e);
   }
  };
}
こんな感じで新たに生成してやるとうまくいくのですが、わざわざ作り直すのは抵抗があって・・・
何か打開策がありましたらご教授ください。

963 :デフォルトの名無しさん:2008/02/13(水) 20:16:03
>>962
アクションが操作対象となるJTreeのインスタンスを持てばいいだけじゃないのか?

964 :962:2008/02/15(金) 09:33:09
聞いておきながら遅くなってしまってすみません。
JComponentのインスタンスでなければ弾いているので、そもそもアクションまで起こっていないんです。
CopyActionくらい自分で実装して、>>963さんのおっしゃるように対応したコンポーネントのインスタンスを持たせていた方がいいかもしれないですね。
ありがとうございました。

965 :デフォルトの名無しさん:2008/02/23(土) 11:27:45
例えばリストにTransferHandlerを設定するとき、COPYなのかMOVEなのかCUTなのか判定させたいときどのようにすればよいのでしょうか?
それを実装するコンポーネントでどのようなアクションを取ったかを調べられれば問題ないのですが、それがMouse系のリスナーではスマートに調べられなくて困っています。
教えください。

966 :デフォルトの名無しさん:2008/02/23(土) 11:36:04
勘違いしていました。
何十回か氏んできます。

967 :デフォルトの名無しさん:2008/02/24(日) 11:38:09
GUIのデザイナはなかなか決定的なものがないようなのですが、
メジャーどころだとNetbeans付属のものやVisual Editorがありますよね。
ほかにもJformDesignerや、jvilderなどがあるようです。

みなさん、GUI開発にはどんなツールをお使いですか?

968 :デフォルトの名無しさん:2008/02/24(日) 11:48:00
テキストエディタで手書きしてまつ・・・

969 :デフォルトの名無しさん:2008/02/24(日) 11:51:42
jiglooがなかなかおすすめ。
慣れないうちは思うようにデザインできないけど慣れたらかなり使いやすいかも

970 :デフォルトの名無しさん:2008/02/24(日) 11:54:49
私はVisual Editor。でも、ちょっとコンポーネント置いただけですぐ
1000行ぐらいいっちゃうのがちょっとアレですが。

jiglooは冗長にならないように書けます?

971 :デフォルトの名無しさん:2008/02/24(日) 12:28:06
Visual EditorってGroupLayoutサポートしてましたっけ?
あれ使えばそんなに冗長にはならないですよ
個人的に一つ一つのコンポーネントのプロパティ設定で勝手にブロックで囲んでくれてるのが見やすくて好きです。

972 :デフォルトの名無しさん:2008/02/24(日) 12:50:00
残念、Visual EditorにはGroupLayoutのサポートはまだないみたいです。
他のデザイナを試してみることにしましょう。Jiglooか、もうNetbeansかな。

EclipseのプラグインでWindowBuilderというのもこれに対応しているようですが、
日本で使ってる人があまりいなさそう・・・

973 :デフォルトの名無しさん:2008/02/24(日) 14:39:26
ソースコード生成するんじゃなくてXAML式に
書けるGUIデザイナが欲しすぎる。

974 :デフォルトの名無しさん:2008/02/24(日) 15:14:14
リファクタリングとかソースとの動機が取れなくなりそうだ

975 :デフォルトの名無しさん:2008/02/24(日) 15:54:12
一般ブラウザ並みに JTextPane 強化して HTML ベースで GUI 組めるようにしたほうが
何かと合理的。

976 :デフォルトの名無しさん:2008/02/24(日) 16:02:31
それはねーよ
細かいイベント等制御するためのSwingなんじゃねーか
HTMLベースでいいのならWEBアプリにするだろ

977 :デフォルトの名無しさん:2008/02/24(日) 16:11:07
onmouseover などからイベントリスナ呼びゃいい話でしょ。必要なら追加すりゃいいし。
Web 開発の資産やスキル転用できるし、単純にブラウザコンポーネントとしても転用も可能。
まじめに考えてるわけではないのでカスタムコンポーネントの追加方法なんか考慮する
必要はあるが、そんな頭から否定されるほど悪い話ではないと思うが。

978 :デフォルトの名無しさん:2008/02/24(日) 16:27:11
そんなの全く考えたことなかったから結構新鮮だわw
まぁ今の環境で満足だし、そこまで外部化してしまわなくてもいい気もするなぁー

979 :デフォルトの名無しさん:2008/02/24(日) 17:43:06
GUIコンポーネントは宣言的に置くようにしてロジックは別にしたいってことでしょ
JavaFXがやろうとしてるんじゃないかな

ただXMLベースじゃないみたいだけど

980 :デフォルトの名無しさん:2008/02/24(日) 17:49:05
そこまでWeb開発の資産やスキルを転用したいのなら、
スタンドアロンアプリでTomcat動して、UIはブラウザ、ってすればいいんじゃね?

981 :デフォルトの名無しさん:2008/02/24(日) 18:09:12
アプレットや Web Start とかで使えねんじゃ。

982 :デフォルトの名無しさん:2008/02/24(日) 18:14:29
XULを再発明したいのか

983 :デフォルトの名無しさん:2008/02/24(日) 18:37:25
JSP や JDBC を再発明と言う?
別に XUL の Java 実装でも良いけど。

984 :デフォルトの名無しさん:2008/02/24(日) 18:46:16
あ、いやこの話はそろそろやめる。

985 :デフォルトの名無しさん:2008/02/24(日) 19:19:48
>>977
scriptのIDEサポートとかJavaのほかに別言語を覚えないといけないとか
そもそもブラウザによって違いがあるというのに・・・

ボタンクリック等のイベント程度でいいのなら別にかまわんとおもうけど

986 :デフォルトの名無しさん:2008/02/24(日) 21:36:38
XMLは長ったらしすぎるので
すっきりとロジックと融合したGUIが宣言ベースでかけるというのが
売りなのでしょう。
ただ、いまいち方向性が分からないというのは・・・。

987 :デフォルトの名無しさん:2008/02/24(日) 21:57:42
SWTスレとマルチで失礼します。

クライアント側のJavaで、RTF文章を何らかの形で表示(編集できなくてもOKです)させたいのですが、
JEditorPaneはあまりにも古すぎてJREに同梱されているLICENSE_ja.rtfすらマトモに読めない、という
情けないことになっています。他に何らかの代替/回避方法はないのでしょうか?

988 :デフォルトの名無しさん:2008/02/25(月) 11:01:37
RTFをパースして使えるコンポーネントに流し込むところを自作する

989 :デフォルトの名無しさん:2008/02/25(月) 11:06:57
うふふw鬼ww

990 :987:2008/02/26(火) 10:29:05
>>988
>>989
いや、マジメな話、(ライブラリ等を使うかは別にして)今のところ、ググって引っかかるのはそのアプローチしかないみたい。
もう少し簡単な方法がないかと思って質問してみたのですがね(笑

991 :デフォルトの名無しさん:2008/02/26(火) 10:43:02
SWT なら OLE でハメ込めるんじゃなかったっけ?

992 :デフォルトの名無しさん:2008/02/26(火) 10:48:04
いまどきそれだけのためにSWT使うってのもなぁ

993 :デフォルトの名無しさん:2008/02/28(木) 01:57:15
非常に抽象的な質問で申し訳ないのですが、スクロール可能なコンポーネントを作る際、Scrollableを実装するだけではだめなのでしょうか?
単純に実装してJScrollPaneにのっけてやるだけでは、実装したメソッドのうち、
getScrollableTracksViewportHeight()
getScrollableTracksViewportWidth()
の二つは呼び出されるのですが、肝心の
getPreferredScrollableViewportSize()
が呼び出されないのです。
どうしてでしょうか?

994 :デフォルトの名無しさん:2008/02/28(木) 03:04:21
みんなBoxLayoutはつかってないのか?
ほとんどこれ1本でやってるんだけど。

995 :デフォルトの名無しさん:2008/02/28(木) 03:21:59
> 993
getPreferredSize()はどう実装している?

996 :デフォルトの名無しさん:2008/02/28(木) 08:45:59
>>995
すみません。寝ぼけてたようで、
getScrollableTracksViewportHeight()
getScrollableTracksViewportWidth()
の判定で必ずtrueがかえってしまうようになってしまってました。

というわけでスレ汚してしまったのでお詫びに次スレ建ててきました・・・が、タイトル間違えてしまいました。
本当にすみません。板まで汚してしまったみたいです。

http://pc11.2ch.net/test/read.cgi/tech/1204155623/

997 :デフォルトの名無しさん:2008/03/01(土) 17:48:07
1レス埋めて去る。

998 :デフォルトの名無しさん:2008/03/01(土) 18:54:53
ところで次スレは上の見すったやつ使うの?
せっかくスレタイ変えたのに

999 :デフォルトの名無しさん:2008/03/01(土) 19:24:19
っと、気づいたらもう999かよ

1000 :デフォルトの名無しさん:2008/03/01(土) 19:25:58
上野でいいじゃん
細かいこと気にするなよ

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

253 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)