Java低速GUI Swing 5
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/10/18(水) 11:50:09パフォーマンスの問題は徐々にですが改善されつつあります。
しかしながら、"Java"というだけで未だに敬遠されるのが現状。
そんなSwingと引き続き付き合っていくみんなのスレッドです。
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
0692デフォルトの名無しさん
2007/07/31(火) 22:44:27まだmacはJDK5だと言うのに・・・。
0693デフォルトの名無しさん
2007/07/31(火) 22:46:38あんまバージョンアップが早いと
リタイヤするOSが増えそうだな
FreeBSDも5だっけか
0694デフォルトの名無しさん
2007/07/31(火) 22:53:326の開発者向けプレビューが去年から更新されてないんだよね。
たぶん4月にはLeopardと一緒に正式リリースを目論んでいたんだろうけど、
Leopard10月になっちゃったし。
0695デフォルトの名無しさん
2007/07/31(火) 23:02:50BufferedImageってImageインターフェースもってるだろ?
BufferedImageにすってことはどれだけ情報がうしなわれるとか考えた?
0696デフォルトの名無しさん
2007/07/31(火) 23:04:40で、どっちが活発にメンテされてるの?
0697デフォルトの名無しさん
2007/07/31(火) 23:15:09Windows版しかみてないが、ネイティブ版の8割くらいの速度で動くと思えばよい
1.0GHzで動いていたのと同じように動かすためには1.2GHzくらいが必要
Java3Dはかなり前に試したが、とにかく遅くて使い物にならないことや高レベルすぎるんじゃないかな
ゲーム以外ならJava3Dでいいのかもしれないけど
0698デフォルトの名無しさん
2007/07/31(火) 23:34:42なるほど。よく分かった。
0699デフォルトの名無しさん
2007/07/31(火) 23:37:02これ自体がオプションパッケージだから、依存性が強くてもいいのかもしれない。
Java3Dがまだこなれてないんじゃ、しようがないね。
0700デフォルトの名無しさん
2007/07/31(火) 23:38:250701デフォルトの名無しさん
2007/07/31(火) 23:46:50OpenGLはWindowsやLinux、Solarisなどで動くオープンなAPIだよ
Java3Dは実装選べるけど結局OpenGLかDirect3Dかの二択だしプラットフォームはかわらんよ
sunが自前で全部実装ってのは無理
ビデオチップベンダとの協力が必要だから
0702デフォルトの名無しさん
2007/07/31(火) 23:48:51オフスクリーン以外で実行したらそれがでるのは正しい動作
それにImageなんて抽象クラスなんだから実装はさまざまだ
0703デフォルトの名無しさん
2007/07/31(火) 23:51:33てかJOGL1.0はもう古い。今は1.1.0。
java2DをJOGLのテクスチャに合成するutilが追加されてる。
1.0までだとここらへん自力でやらないとだめだったけど今なら
java2Dで描画できるもんならなんでもJOGLに持っていけるようになったからフォント描画も楽になった。
ビルボード上にテクスチャ貼ってスプライトさせるなら自分でやった方が効率よさそうだけど。
0704デフォルトの名無しさん
2007/07/31(火) 23:53:451.0からできるっしょ?どっかかわった?
混ぜるな危険はSwingがでたとき、1.1時代からいわれてるよ
0705デフォルトの名無しさん
2007/07/31(火) 23:57:04何言ってんだ?JOGLもJava3DもOpenGL使ってるだろ。
それに両方、標準拡張。
万人が使うわけじゃないからJREから外されれてるだけ。
そこらのJNI使った拡張機能とはわけが違う。
0706デフォルトの名無しさん
2007/08/01(水) 00:13:53そうじゃなくてoffscreen renderingの問題だよ。どうにかなったのこれ?
昔から言われてるのは常識だろ。
>1.0からできるっしょ?どっかかわった?
javadoc嫁
0707デフォルトの名無しさん
2007/08/01(水) 00:49:41落としてきてあるのだけは確認した
com.sun.opengl.util.j2dパッケージが追加されたのか
いままでもJava2Dからのテクスチャ生成ができたけど、これは動いてる最中も反映されるんか?
毎回getTexture必要になるっぽくみえる
今週末久々にJOGLいじってみるか
問題は激しくすれ違いなことだがJOGLのスレってなかったか
0708デフォルトの名無しさん
2007/08/01(水) 03:07:030709デフォルトの名無しさん
2007/08/01(水) 05:49:39JOGLにしかない機能・作法が意外とあるのにどこいってもJOGL専用話してる所がないんだよ。
JOGL紹介サイトでもOpenGLの教本に書いてあることくらいしか書いてない。
jogl-demosのソースか洋書あたるのが近道。
国内はJava3Dだらけだ。
0710デフォルトの名無しさん
2007/08/01(水) 08:39:420711デフォルトの名無しさん
2007/08/01(水) 10:57:50JOGLって作りこみの部分に入るとOpenGLまんまだから迷うことはないけど
たしかにそのセットアップとかTipsとかそういう情報ゼロに近いね
一方JavaのゲームではJOGLしか選択の余地がないから非常に悩むところ
Java2Dのアクセラレーション範囲が狭いことに加え、アルファブレンディングの種類が足りなすぎる
おかげで2D描画もOpenGLが必須になるという・・・
0712デフォルトの名無しさん
2007/08/01(水) 11:05:22本当にこんなネーミングで良いのか?
0713デフォルトの名無しさん
2007/08/01(水) 13:40:12配置の制約情報オブジェクトをコンポーネントに関連付けるメソッドが追加されたLayoutManager
ネーミングについては確かに投げやりだな
0714デフォルトの名無しさん
2007/08/01(水) 23:48:140715デフォルトの名無しさん
2007/08/02(木) 01:26:14そりゃたしかに投げやりなネーミングだな。ひどい
0716デフォルトの名無しさん
2007/08/02(木) 04:06:22- AdvancedLayoutManager
- ExtendedLayoutManager
- SuperLayoutManager
- LayoutManagerGreat
- 続・LayoutManager
0717デフォルトの名無しさん
2007/08/02(木) 04:23:15アナログ的に配置指示
0718デフォルトの名無しさん
2007/08/02(木) 10:30:35続・LayoutManager に一票
0719デフォルトの名無しさん
2007/08/02(木) 11:29:000720デフォルトの名無しさん
2007/08/02(木) 12:01:51数字なら 3 とか 4 にすればいいだけで楽。
0721デフォルトの名無しさん
2007/08/02(木) 12:54:43ソートした時に
XX
XX10
XX2
XX3
.
.
ってなりそう。
0722デフォルトの名無しさん
2007/08/02(木) 16:37:38そろそろ Swing そのものを根本的に整理して欲しい時期だねえ。
0723デフォルトの名無しさん
2007/08/02(木) 17:58:03・定数のenum化
・コレクションフレームワーク利用
・generics利用
・OpenGLパイプライン有効
で作り直してほしいな
互換性とるのは無理だからパッケージをかえてな
0724デフォルトの名無しさん
2007/08/02(木) 18:15:140725デフォルトの名無しさん
2007/08/02(木) 18:43:390726デフォルトの名無しさん
2007/08/02(木) 19:09:32他のクラスで利用出来ないものでしょうか?
0727デフォルトの名無しさん
2007/08/02(木) 19:51:019の次はaにすれば、しばらく問題なし
0728デフォルトの名無しさん
2007/08/02(木) 19:55:47ひどい方法
class IconRevealer extends BasicOptionPaneUI {
public Icon getIcon() { return super.getIcon(); }
};
IconRevealer foo = new IconRevealer();
new JOptionPane(null, JOptionPane.INFORMATION_MESSAGE).setUI(foo);
//new JOptionPane(null, JOptionPane.ERROR_MESSAGE).setUI(foo);
//new JOptionPane(null, JOptionPane.QUESTION_MESSAGE).setUI(foo);
Icon icon = foo.getIcon();
JOptionPane#getIcon()やiconフィールドはsetIcon()で設定した時用だったんだな
0729728
2007/08/02(木) 20:21:29String propertyName = "OptionPane.errorIcon";
//String propertyName = "OptionPane.informationIcon";
//String propertyName = "OptionPane.warningIcon";
//String propertyName = "OptionPane.questionIcon";
Icon icon = (Icon)sun.swing.DefaultLookup.get(new JOptionPane(), new BasicOptionPaneUI(), propertyName);
0730デフォルトの名無しさん
2007/08/02(木) 20:27:270731デフォルトの名無しさん
2007/08/02(木) 20:31:56BasicOptionPaneUIはUIManagerを介さずに直にsun.swing.DefaultLookupを呼んでるんだな
0732デフォルトの名無しさん
2007/08/02(木) 21:26:15変えられても文句いえないんだよな。
こーゆーところはpublicな定数なりenum(は増えるから無理か)を
使ってあれば安心して使えるんだが。
0733726
2007/08/03(金) 16:54:32昨日は諦めてアイコンを作ってましたが
使わなくて済みそうです。
0734デフォルトの名無しさん
2007/08/03(金) 18:12:41再配布可能なライセンスならアイコン自体もらってアプリに組込めば
明文化されてない使い方しなくてもすみそうなんだけど…
0735デフォルトの名無しさん
2007/08/03(金) 20:16:550736デフォルトの名無しさん
2007/08/03(金) 21:39:54Thx!
0737735
2007/08/04(土) 00:38:560738デフォルトの名無しさん
2007/08/04(土) 04:47:39ほんとだ… インフォメーションアイコン(丸に"i"のやつ)とかあるから
同じかと思ったら別のアイコンだ…
0739デフォルトの名無しさん
2007/08/05(日) 08:56:15BufferedImage.TYPE_INT_ARGB_PRE
よく_PREってついてるのあるけど、どう違うの?
0740デフォルトの名無しさん
2007/08/05(日) 11:16:41RGB 各成分に A 成分が乗算済みであるフォーマット。
例えば 70% の不透明度で描画するとき通常 result = dst * 0.3 + src * 0.7 とやるわけだけど、
_PRE は A 成分が乗算済みだから result = dst * 0.3 + src で済む (src が _PRE で dst がそうでない場合)。
0741デフォルトの名無しさん
2007/08/05(日) 12:31:430742デフォルトの名無しさん
2007/08/05(日) 20:45:360743デフォルトの名無しさん
2007/08/05(日) 20:51:440744デフォルトの名無しさん
2007/08/05(日) 20:53:470745デフォルトの名無しさん
2007/08/05(日) 21:00:130746デフォルトの名無しさん
2007/08/06(月) 10:15:44Sunのチュートリアルには無かったけど、そういう話(話題)ってどこを参照すればいいの?
できれば日本語で。
0747デフォルトの名無しさん
2007/08/06(月) 10:41:300748デフォルトの名無しさん
2007/08/06(月) 11:05:27http://java.sun.com/javase/ja/6/docs/ja/api/java/awt/image/BufferedImage.html#TYPE_INT_ARGB_PRE
『このイメージのカラーデータには、アルファがあらかじめ乗算されています』
0749デフォルトの名無しさん
2007/08/06(月) 12:37:440750デフォルトの名無しさん
2007/08/06(月) 12:41:38API以前に画像の基礎知識つけたほうがいいんじゃね?
GUIがわかってない人がSwingのマニュアル見てもわからないのと同じように
0751デフォルトの名無しさん
2007/08/06(月) 12:55:52ImageIOではなくて。
0752デフォルトの名無しさん
2007/08/06(月) 19:25:43たとえばExcelの色選択メニューみたいな。
枠ナシJFrameを使うとタスクバーに出たり、ウィンドウがちらついたりします。
0753デフォルトの名無しさん
2007/08/06(月) 19:39:27単に JPopupMenu のレイアウトマネージャを変えてみるとか。
0754デフォルトの名無しさん
2007/08/06(月) 19:41:050755デフォルトの名無しさん
2007/08/06(月) 20:39:15(色選択ならJColorChooserからコンポーネントもってくれば)
0756752
2007/08/06(月) 21:35:43JFrameのときは、windowListenerのwindowDeactivatedでdisposeしてました。
0757デフォルトの名無しさん
2007/08/07(火) 08:45:37その「よそ」って何?
「よそ」が他のコンポーネントならそのコンポーネントのイベントを拾って閉じればいいじゃん。
0758デフォルトの名無しさん
2007/08/07(火) 08:50:35最初の質問に書いたとおり、ポップアップメニューを作りたいので、よそというのはメニュー以外のことです。
では、元のウィンドウのタイトルバーや、プログラム管理外の領域がクリックされたときのイベントはどうやってとればいいでしょうか?
0759752
2007/08/07(火) 09:35:06あとは、タイトルバーのクリックがどうにかなれば
0760デフォルトの名無しさん
2007/08/07(火) 09:58:46popup.add(new JColorChooser());
component.setComponentPopupMenu(popup);
でよくね?
# JPopupMenu isa JComponent
0762デフォルトの名無しさん
2007/08/07(火) 20:40:22paintComponent(Graphics g) にクロージャを引っかけることができるような
カスタムペイントコンポーネントって、ないの?
今はふつー(??)に、JPanel の派生クラスをつくってる。
0763デフォルトの名無しさん
2007/08/07(火) 20:45:01ふつーは JComponent から派生する。
0764デフォルトの名無しさん
2007/08/07(火) 20:51:450765デフォルトの名無しさん
2007/08/07(火) 21:42:32ないんだよねぇ。
それ欲しい。
0766デフォルトの名無しさん
2007/08/13(月) 12:08:22SynthPainter#paintTabbedPane****をオーバーライドして描画してやらんとどうにもならない・・・
xmlだけじゃTabはだめなんかねー?
0767デフォルトの名無しさん
2007/08/14(火) 13:33:290768デフォルトの名無しさん
2007/08/14(火) 20:19:46これからも更新してくれるのかなー
どうも7はそれどころじゃなさそうですけどw
諦めて自分で描画します!ありがとうございましたー!!
0769デフォルトの名無しさん
2007/08/21(火) 14:47:56while((line = fin.readLine())!=null){
line=line.replace("Direction",Direction);
textArea.append(line);
textArea.append("\n");
}
fin.close();
}
のようにしてFile.txtの中身を1行ずつTextAreaに書き込んでいるのですがものすごく
時間がかかってしまいます.ファイルの中身をもっと簡単にTextAreaに書き込む方法はないのでしょうか?
どなたか教えてください.
0770デフォルトの名無しさん
2007/08/21(火) 15:05:27StringBuilder stringBuilder = new StringBuilder();
BufferedReader fin = new BufferedReader(new FileReader("File.txt"));
while((line = fin.readLine())!=null){
line=line.replace("Direction",Direction);
stringBuilder.append(line);
stringBuilder.append("\n");
}
textArea.append(stringBuilder.toString());
fin.close();
}
0771デフォルトの名無しさん
2007/08/21(火) 15:40:57BufferedReader fin = new BufferedReader(new FileReader("File.txt"));
textArea.read(fin, null);
fin.close();
textArea.setText(textArea.getText().replace("Direction", Direction));
ではだめなん?
0772デフォルトの名無しさん
2007/08/21(火) 15:48:43String prev = textArea.getText();
...
textArea.insert(prev, 0);
で
0773デフォルトの名無しさん
2007/08/21(火) 15:52:260774デフォルトの名無しさん
2007/08/21(火) 20:26:370775デフォルトの名無しさん
2007/08/21(火) 20:40:04>>771のコードの前に4〜5行追加すればいいだけじゃないか
APIリファレンス引っ張ってくるのが面倒だから、やり方だけいうと、
ファイルをメモリマッピングして、マッピング用のストリーム生成して、
そのストリームをBufferedReaderの代わりに使えばいい
0776デフォルトの名無しさん
2007/08/21(火) 22:05:12無駄な労力と思われ
0777デフォルトの名無しさん
2007/08/21(火) 22:15:50TextAreaに渡せばいいじゃない
処理が遅いのは内部でStringの生成を繰り返しているせいかと
0778デフォルトの名無しさん
2007/08/21(火) 22:46:210779デフォルトの名無しさん
2007/08/21(火) 22:48:410780デフォルトの名無しさん
2007/08/21(火) 23:33:460781デフォルトの名無しさん
2007/08/21(火) 23:53:300782デフォルトの名無しさん
2007/08/22(水) 00:21:520783デフォルトの名無しさん
2007/08/25(土) 01:01:12JListはサムネイルビューにはならんよねぇ?
0784デフォルトの名無しさん
2007/08/25(土) 01:07:05JList#HORIZONTAL_WRAPって使ったことないけどどうだろう
0785デフォルトの名無しさん
2007/08/25(土) 01:09:03イエス
それ試してみるっすよ
0786デフォルトの名無しさん
2007/08/25(土) 02:13:32JTableの方も試してみるか
0787デフォルトの名無しさん
2007/08/25(土) 08:42:43以下のようなものをどうぞ
class ImageListCellRenderer extends DefaultListCellRenderer {
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
super.getListCellRenderer(list, value, index, isSelected, cellHasFocus);
if (value instanceof Image) {
setText(null);
setIcon(new ImageIcon((Image)value));
}
return this;
}
}
list.setCellRenderer(new ImageListCellRenderer());
0788デフォルトの名無しさん
2007/08/25(土) 11:37:36神様ありがとう試してみるよ!
0789デフォルトの名無しさん
2007/08/25(土) 12:01:14神様ありがとう!サムネイル表示できたよ!
0790デフォルトの名無しさん
2007/08/25(土) 12:08:59つーか、EditableImageからImage取得できるならImageだけでもいい気がしてきた
public class ImageListCellRenderer extends DefaultListCellRenderer {
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
if (value instanceof Image) {
setText(null);
setIcon(new ImageIcon((Image) value));
}
if (value instanceof EditableImage) {
setText("test");
ImageModel im = ((EditableImage)value).getImageModel();
ImageIcon imc = new ImageIcon((Image)im.getImage());
setIcon(imc);
}
return this;
}
}
0791デフォルトの名無しさん
2007/08/25(土) 15:17:39at GUI.actionPerformed(GUI.java:308)
at javax.swing.JComboBox.fireActionEvent(Unknown Source)
at javax.swing.JComboBox.setSelectedItem(Unknown Source)
at javax.swing.JComboBox.setSelectedIndex(Unknown Source)
at javax.swing.plaf.basic.BasicComboPopup$Handler.mouseReleased(Unknown Source)
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at javax.swing.plaf.basic.BasicComboPopup$1.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
こんなエラーがでて困ってるんですが何が原因かわかる方いますでしょうか?
0792デフォルトの名無しさん
2007/08/25(土) 15:43:21■ このスレッドは過去ログ倉庫に格納されています