- 1 名前:デフォルトの名無しさん [2007/09/26(水) 20:51:18 ]
- ハードウェアの高スペック化、描画アルゴリズムの変更、JavaVMの高速化に伴い、パフォーマンスの問題は改善されています。
しかしながら、"Java"というだけで未だに敬遠されるのが現状。 そんなSwingと引き続き付き合っていくみんなのスレッドです。 Java低速GUI Swing 5 (前スレ) pc11.2ch.net/test/read.cgi/tech/1161139809/ Java低速GUI Swing 4 pc8.2ch.net/test/read.cgi/tech/1140533866/ Java低速GUI Swing 3 pc8.2ch.net/test/read.cgi/tech/1121700954/ Java低速GUI Swing 2 pc8.2ch.net/test/read.cgi/tech/1095398949/ Java低速GUI Swing pc5.2ch.net/test/read.cgi/tech/1062271447/l50
- 24 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 17:11:04 ]
- すれ違いだけど、なんかそこら辺を解決するためにWindows Presentation Foundationとか機能があったんじゃなかったっけ?
どこかの記事で読んだだけなんだが、同じようなのJavaで付けてくれないかなあ。
- 25 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 17:24:04 ]
- それが JavaFX なんじゃない?
詳しいことは知らないけどさ。
- 26 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 22:39:31 ]
- そのとおりだよ
でもさー、最近のリッチクライアント事情っていったらMSのSilverlightとAdobeのAIRの2人勝負で、JavaFXが蚊帳の外になってるよね
- 27 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 23:02:46 ]
- >>26
ランタイムはなにさ?
- 28 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 14:02:24 ]
- SilverlightやAIRと戦えるかどうかはJava Kernelしだい。
- 29 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 14:14:31 ]
- TransferHandlerでD&Dは出来たのですが、
貼り付けがよく分からないんですけど、 どうやってメニューアイテムとかボタンとかイベントで貼り付けを起動したらいいか分かりません。 あまりググっても出てこないんですけど、日本語の解説サイトとかないですかね?
- 30 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 15:15:27 ]
- 何をどこに貼り付けるの?
- 31 名前:デフォルトの名無しさん mailto:sage [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できるようにはした。 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 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 16:07:51 ]
- その貼り付けメニューはどうやって作ってるのよ。
そのメニューに getPasteAction を設定してる?
- 34 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 20:53:44 ]
- >>33
すいません、ちょっと出かけてました… その辺がよく分からなくて、 pastejMenuItem.setActionCommand((String)TransferHandler.getPasteAction().getValue(Action.NAME)); と書いてみました。何かでも間違ってるっぽい
- 35 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 22:14:26 ]
- >>35
VEでは、javax.swing.TimerはGUIコンポーネント扱いされないので、 ポップアップメニューからaddActionListenerはできない。 手書きしよう。そんなに面倒じゃない。
- 38 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 23:50:52 ]
- 実際のところ
javax.swing.Timerはあんまりつかわんよな 1.3以上は
- 39 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 01:39:56 ]
- >>38
そう? 手書きで精度をあまり問わないちょっとしたもので定期的実行が必要な時によく使うんだが。
- 40 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 12:29:43 ]
- 使うならGUIと直交した java.util.Timer じゃね?
ということかもしれない。
- 41 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 13:01:29 ]
- 1.3から実装されたのはjava.util.Timer
より複雑な並列動作に使うことは多いね
- 42 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 17:11:14 ]
- java.util.Timer はコールバックが EDT じゃないじゃん
- 43 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 17:26:50 ]
- 単純な定期イベントってのが実際そんなに多くないから
java.util.Timerってことだろ?
- 44 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 17:28:44 ]
- いまどきは ScheduledThreadPoolExecutor
- 45 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 17:57:55 ]
- >>44
1.5以上ならjava.util.concurrentはよくつかうね SwingWorkerはpublishとのタイミングがわからんから使われないことが多いかも つーか、面倒だよな、あれ
- 46 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 18:40:34 ]
- java.util.concurrentを学習してない俺が行き当たりばったりで実験コード書いたときは簡単に並列処理できて
文書ソフトのファイルの読み書きと文書内検索にはちょうど良いと思った。 使い捨てのコストもそれならあまり気にならないし。
- 47 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 08:27:28 ]
- >37
つまりimportしているライブラリによって選べると言う事でしょうか? Timerは置いておいてパネルだけ作って追加しようとしてもメニューに表れません。手書きしてしまうのも良いのですが、今の状況がVEの正しい挙動なのか気になるところです。 そもそも、eclipseのGUI作成プラグインとしてVEを選んだのが正解だったかも疑問です。eclipse使ってる方々はGUI作成はどうしてるのか教えていただきたいです。
- 48 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 12:34:02 ]
- フォームにタイマーをおいて・・・というのは感覚的にVBだなぁあとおもた
まぁNetBeansだとできるけど、Eclipseだと商用製品に手をつけるのがオススメ
- 50 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 12:47:55 ]
- ってかVEって使い物になるレベルだっけか?
最近は改善されてるのかな…
- 51 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 12:50:36 ]
- いや、放置されてる
- 52 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 14:05:18 ]
- 上の方ではJiglooがいいねって話してた。試してみたら?
- 53 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 13:12:58 ]
- Java.comから、JREについてフィードバック送れるね。
開発環境じゃないけど、 bugreport.sun.com/bugreport/contact.jsp?language=ja JREが改良され、使われる様になったら、ここにいる人にもメリットあると思うので、 なんかあればfeedbackしておくと良いと思う。
- 54 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 22:32:49 ]
- JTableのセルへ数字以外入力できないようにしたいんだけど、どうやるのが一番キレイかな?
やり方はいろいろありそうだけど、ソースがきれいになりそうなやり方あれば教えてちょ。
- 55 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 22:44:23 ]
- JFormattedTextFieldとかTableCellEditorとか使うんじゃないかね。
- 56 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 23:40:31 ]
- KeyListener#keyTyped(KeyEvent e)を実装して、そこで
char c = e.getChar(); if(c >='0' && c <=9) return; else e.consume(); とかしても結構すっきりして好きだなー
- 57 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 23:41:20 ]
- あ、JTextFieldかなんかを拡張してTableCellEditorを実装した上でってことねー
- 58 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 00:48:54 ]
- JTableに限らず書式つけるならテキスト部分はJFormattedTextFieldだろ・・・
- 59 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 01:16:02 ]
- JTableのセルをクリックして入力モードになるとCellEditorでの入力を行ってるっぽいけど、
セルを入力モードにせずに適当なキーを押して入力した場合はCellEditorを使ってないの? CellEditorをかならず使うようにしたいのだが、どうすればよいかな。。。
- 60 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 01:27:14 ]
- >>59
もう少しわかるように
- 61 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 02:17:15 ]
- >>56
Character.isDigit使う方がよくね? と思ったが、漢数字や全角数字にもtrueを返すんだよな。
- 62 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 16:26:51 ]
- JTableネタが出てるのでちょっと聞きたいのですが、
ヘッダ行の文字数が多すぎると、項目によっては ...で項目名が省略されちゃいますよね。 セルの横余白を調節することってできませんか?
- 63 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 16:51:11 ]
- JTable#setIntercellSpacing(Dimension) かなんかで出来なかったっけ?
- 64 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 18:11:06 ]
- >>62
列の幅変えたいなら TableColumn column = table.getColumn(col); column.setMinWidth(min); column.setMaxWidth(max); column.setPreferredWidth(width);
- 65 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 23:46:59 ]
- >>63,64
ありがとうございます。でもすみません,ヘッダ行についてだけなんです。 これだと,普通のセルの余白が変更されちゃうんじゃ・・・
- 66 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 23:59:03 ]
- ヘッダのサイズだけ変えたいと
そう申すのか?
- 67 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 00:05:20 ]
- >66
そのとおりです。たとえば,ヘッダ行が | 果物名 | 産地 | 価格 | のようにあったときに, | 果物名 | 産地 | 価格 | としたいのです。列のサイズ自体を変更することはできますが,ある程度 小さくすると項目行が「果...」とかになってしまって見にくくなって, でも余白はきっちりとられているものですから,なんとかならないかなーと。
- 68 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 00:09:34 ]
- TableColumn#setHeaderRenderer 使えば済む話?
- 69 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 10:24:07 ]
- >68
ありがとうございます。 とりあえず,new DefaultTableCellHeaderRenderer()したものをそれぞれの列に セットすることができるようになりました。 ただ,そのヘッダ行だけ周りのL&Fから浮いてしまっているだけでなく,クリックや マウスホバーにも反応しないのが大変痛いです。 TableColumn#getHeaderRendererで中身を取って,それを操作してやるのが一番 よいのではないかと思ったのですが,うまくいかず・・・ (DefaultTableCellHeaderRenderer)JTable.getColumnModel().getColumn(0).getHeaderRenderer(); とかだとnullが返ってきてしまいます。
- 70 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 17:39:10 ]
- べつにいいんじゃない。
結果としてワンクリック目の四角形は消えて最終的に三角形だけが残るんなら。
- 73 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 17:49:35 ]
- >>72
じゃあシングルならダイアログAが開き、ダブクリならダイアログBが開くような場合は?
- 74 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 18:11:45 ]
- >>73
そんないかれた仕様にするならどちらかをモディファイアキー有りにするかポップアップメニューにしてくれ… # シングルクリック時にタイマーを設定してダブルクリック時にタイマーをキャンセルとかすればできなくはないか…
- 75 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 18:14:16 ]
- >>73
ダブルクリック1回のつもりが失敗してシングルクリック2回になってしまうことはよくある。 その逆もよくある。 そういうゲームならともかく、ミスったら終わりみたいなユーザインタフェイスはやめた方がいいと思う。
- 76 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 18:33:36 ]
- UI設計論の話してんじゃないから、文意をくみ取ってちょ。
>>74 まあタイマー使うことになるよね。 >>75 ワンクリでアイテム選択、ダブクリでアイテムプロパティ設定とか、よくあるでしょ。 MSのパワポとか。
- 77 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 18:50:12 ]
- 前々から思ってたんだけど
AWTは知らないけど、少なくともSwingのコンポーネントの多くはそのコンストラクタで オーバライド可能なメソッドを呼び出したり、 そのインナークラスをイベントリスナーとして登録してるんだけど、 どう考えればいいのかな。 コンストラクタが終了する前に this を漏洩することは、 オブジェクトが整合性を整える前にメソッドが呼び出される可能性がある。 とりあえず、基本EDT限定なので、まあ、別スレッドから呼び出される心配はないかもしれないが、 それを差し引いても、例えばリスナー登録の瞬間にコールバックされたりなど シングルスレッドでも、コンストラクタ完了前に呼び出される危険がある。 とりあえず、今考えているのは、Swingを使う場合は 自前コンポーネントでthisを漏洩しないよう(ファクトリメソッドを作るとか)複雑にしても、 既に親クラスが漏洩しているので、複雑にした分だけ損。それなら、毒を食らわば皿までということで、 1.コンストラクタでイベントハンドラの登録やオーバライド可能なメソッドの呼び出しはOKとする 2.イベントの仕組みを作る場合は、イベントを登録した瞬間にコールバックしない (標準で用意されているSwingのコンポーネントはそうなってるのかなあ?) 3.オーバライドを前提としているメソッド(paintComponent()など)以外は、絶対オーバライドしない というルールでカバーできるのかなと思っているのだけど、どなんでしょうか
- 79 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 18:51:47 ]
- >>76
エクスプローラとかパワポとかテキストエディタは、実際にワンクリ目の動作 (項目選択とかカーソル移動とか) を実行してる。 その後にダブクリの動作を実行するけど、そういう流れで問題ないユーザインタフェイスになってるからな。
- 80 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 18:51:58 ]
- >>77
おー、シンプルでいいね! 漏れが考えたのはもう少し冗長だった。 勉強になりますた!
- 81 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 18:59:28 ]
- >>79
言われてみればそうだね。 クリック回数で処理を分けるのは、よほどの理由がないかぎり やらないほうが良いのかもしれない。
- 82 名前:78 mailto:sage [2007/10/05(金) 21:27:33 ]
- メソッドの呼び出しがイベントを発生する可能性があるから、
4.リスナーの登録はコンストラクタの最後にする。 が必要か。リスナーの登録メソッド自身がイベントを発生したら木阿弥だけど。 いいのかこんなので
- 83 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 22:59:32 ]
- this参照の漏洩を防止するためにはコンストラクタからイベントリスナを決して登録すべきではない
- 84 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 23:41:33 ]
- イベントリスナが this を(直接的にも間接的にも)参照してなければ
コンストラクタで登録しても問題ない
- 85 名前:デフォルトの名無しさん mailto:sage [2007/10/06(土) 00:15:19 ]
- Swingのイベントの話してるのか
・SwingコンポーネントのイベントはAWTスレッドでしか発行しない これだけでおけでは? ところでDesktopがWindowsXPで動かないわけだが、これはいったいどういうコードになってるんだ?
- 86 名前:デフォルトの名無しさん mailto:sage [2007/10/06(土) 00:33:40 ]
- solarisチェックが入っている
- 87 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2007/10/06(土) 01:03:45 ]
- >>86
同じXPでも動くマシンと動かないマシンがあるのだ すべてJREは同一という不思議 >>87 俺が言いたいのはコンストラクタをAWTスレッドでしか生成しないと問題は少ないという意味なんだが 生成中にthis公開するのが変というのは常識だろ >>78の前提がおかしいのは当たり前で それをふまえてそのままのコードでいかに問題なく動かせるかの話じゃないの? そして現在の実装において問題が発生することはないはず(5.0までは) 結局AWT/Swingなんてソース見ればわかるとおりほとんどVM依存コードの塊なんだけど、 SunのVMで実行しているかぎり問題は表面化していないというのが正しいか
- 89 名前:デフォルトの名無しさん mailto:sage [2007/10/06(土) 01:54:54 ]
- ぬるぽが発生しなさそうで、発生しそうなコード
final AtomicReference<String> lastSetText = new ... @Override public void setText(Strint text) { super.setText(text); lastSetText.set(text); }
- 90 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2007/10/06(土) 16:24:07 ]
- NPOって何かと思ったらNPEのことか
- 92 名前:デフォルトの名無しさん mailto:sage [2007/10/06(土) 17:09:08 ]
- nuru-poとnull pointer exceptionか?
- 93 名前:デフォルトの名無しさん mailto:sage selfガッ [2007/10/06(土) 17:54:36 ]
- あんまりぬるぽぬるぽいうから間違えちゃったのね。
- 94 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 13:48:57 ]
- NullPointerObject
- 95 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 06:22:58 ]
- JFrame#pack()はsetVisible(true)の前に実行することが推奨されていますか?
ふと以前何処かでそういう文章を読んだことを思い出し、とりあえず盲目的にそれを追記してみた所、 バキュームベッドから空気を掃除機で全部吸い取った様に空間の余裕が消え、ピッチピチに圧縮されました。 setBounds()でウィンドウサイズを設定していたのにたまったもんじゃないです。 しかしまぁそれで大体どういう動きをするメソッドか分かりました。 ただピチピチにパックするだけでは無いだろうと思い調べてみたのですが、 それ以上の情報は見つからず、必ずパックしろといった記事も見つかりません。 今までパックしていなかったにも関わらず何事も無く動いていたので、何かの勘違いだったんでしょうか。 それとも偶々運良く動いていただけなんでしょうか。
- 96 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 08:58:37 ]
- >>95
余白が欲しければちゃんとBorderなりをセットしてからpackしろ setBounds()で固定サイズとかダメすぎ
- 97 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 11:19:45 ]
- >>95
大体とか言わず、正確に理解しといた方がいいと思うよ java.sun.com/javase/ja/6/docs/ja/api/java/awt/Window.html#pack() >サブコンポーネントの推奨サイズおよびレイアウトに合わせて、この Window をサイズ変更します 余裕が欲しいコンポーネントには推奨サイズを設定 (setPreferredSize) しておけば、そのサイズに合わせてくれる
- 98 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 14:27:26 ]
- >>97
合わせてくれるかどうかはレイアウトマネージャ次第。 推奨サイズなんだから無視されても文句は言えない。 >>96のようにBorderでマージンとるのを推奨。
- 99 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 20:34:26 ]
- いやいや、まだまだ低速のタイトルは外せません><
# いや、そういうコトなら結構昔に変わってるはずで・・・
- 101 名前:95 mailto:sage [2007/10/10(水) 20:44:20 ]
- EmptyBorderをセットしてpack、と実装したところうまく行きました。
今までモヤモヤしていた部分が引き締まったようで、とってもすがすがしいです。 >>96さん、>>97さん、どうもレスありがとうございました。
- 102 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 00:12:05 ]
- >>99
デフォルトでオンはいいよね。MacではOpenGLがオンになるんだろうか・・・。
- 103 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 00:29:46 ]
- Mac では Java2D は Quartz で描いてたはずかと
- 104 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 00:38:44 ]
- レンダリング品質はどうなるのだろうか・・・
現状だとDirect3Dモードにすると品質がかわるので使い物にならない
- 105 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 01:08:52 ]
- >>103
それがさ、Java SE 6からSunのレンダラがデフォルトになる予定なのよ。
- 106 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 13:03:09 ]
- >>105
去年でたDeveloperPreviewでは、PSフォントのレンダリングがガタガタだったんだけど それ以来、DeveloperPreview無しのまま。 ttp://pc11.2ch.net/test/read.cgi/mac/1138543708/172 >>106 JDK6u5では、日本語通ってるよ。 org.jdesktop パッケージのは古いよ。 download.java.net/jdk6/ では、パッケージ自体が変わってる。 sun.swing.plaf.nimbus.NimbusLookAndFeel ね。 org.jdesktop.swingx.plaf.nimbus.NimbusLookAndFeel のヤツは化ける。
- 108 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 20:21:44 ]
- >>108
JDesktop側のweeklyビルドの方が古い様子。 どうも、JDK6u5が一番始めに組み込まれてるんじゃないかと。 JDK7にもまだ入ってないし。
- 110 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 23:58:07 ]
- OpenGLでもDirect3Dでもいいが、そろそろJava2Dでαブレンディングまともに実装してほしい
- 111 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 22:49:48 ]
- スレ違いなんだが、Mistralって画像ライブラリ?でアニメーションGIFを動かすにはどうすりゃいいんだろうか
読み込んで表示まではいけたんだが、最初の1フレームだけ表示してる感じ アニメーションGIFだけMistralを使わないとか、もう全部Mistral使わないでやったほうがいいんだろうか
- 112 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 01:09:07 ]
- マルチイメージのフレーム取得なんて標準で出来るじゃん。
- 113 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 01:40:30 ]
- >>112
?
- 114 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 03:08:55 ]
- image I/Oだっけか
確かpngはできないけどgifできたような気がする
- 115 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 03:15:32 ]
- アニメーションGIF表示するだけなら、ToolkitでloadImageしてdrawImageの最後の引数に表示先コンポーネント指定してやれば勝手にアニメーションする
- 116 名前:デフォルトの名無しさん [2007/10/16(火) 03:15:34 ]
- 気がする!!!!!!
- 117 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 03:55:17 ]
- MIDPはするけど、SEやCDCはしなかった気が・・・
>>114 pngのアニメーション仕様なんて画像ビューアーにすら忘れ去られてる存在だから気にしないw 対応してるのは次期Fxくらい。
- 118 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 04:03:18 ]
- Mozillaの出したAPNGは対応入るのかな?
- 119 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 19:04:35 ]
- mozillaは標準規格の普及に力入れてるな・・・。
jpeg2000は使われることなく次世代策定中かorz 実際、jpeg2000の拡張仕様まで実装したらPNGどころじゃない超万能規格なんだが。 ウェーブレットいいよ、ウェーブレット!
- 120 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 22:07:55 ]
- jpeg2000はjpegよりブロックノイズとかの面で優れてるけど
良い面を全部帳消しにするぐらい現在のCPUでも結構重いってのがな……
- 121 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 22:17:58 ]
- 確かにデコード重いな。PNGより重いからな。
- 122 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 23:24:27 ]
- そろそろJAIのメモリリークは直った?
- 123 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 23:33:46 ]
- 標準APIであるDesktopが動かないバグが放置なのに
JAIがまともになるはずないだろ・・・
- 124 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 02:22:17 ]
- 1.3あたりから無視されてるバグもあるしなぁ
|

|