- 1 名前:デフォルトの名無しさん [2008/11/21(金) 11:24:21 ]
- ハードウェアの高スペック化、描画アルゴリズムの変更、JavaVMの高速化に伴い、パフォーマンスの問題は改善されています。
しかしながら、"Java"というだけで未だに敬遠されるのが現状。 そんなSwingと引き続き付き合っていくみんなのスレッドです。 Java低速GUI Swing 7 pc11.2ch.net/test/read.cgi/tech/1204155623/ Java低速GUI Swing 6 pc11.2ch.net/test/read.cgi/tech/1190807478/ 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
- 477 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 14:27:24 ]
- カーソル移動のイベントを受け取って、その位置の含まれる行を見て
setEditable() で切り替えるとか。
- 478 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 15:35:57 ]
- 実際にやったことないから分からないけど
DocumentListener とか使うのでは
- 479 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 15:38:42 ]
- あるいは CaretListener を使って
キャレットが移動するたびに必要に応じて setEditable(boolean) を呼ぶとか。 こっちのほうがいいかも。
- 480 名前:デフォルトの名無しさん mailto:sage [2009/04/07(火) 14:41:24 ]
- >>477,478,479 さんありがとうございます。
試してみます。
- 481 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 19:46:23 ]
- スレが過疎ってるスキに、くだらないこと書かしてもらうが
FileSystemView fileSystemView = FileSystemView.getFileSystemView(); この冗長さは、どうにかならんのか?
- 482 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 19:49:55 ]
- IME にでも登録しとけよ。俺は Eclipse のオナペット使うけど。
- 483 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 20:03:54 ]
- >>481
嫌ならもう少し短い変数名使えば?
- 484 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 23:28:39 ]
- ラッパ書いてヲレフレームワークに突っ込めよ。
import ore; ore = new ore.gFSV(); で出来るようになるぜ。
- 485 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 01:13:41 ]
- Nimbusのとかに比べると、まだまだだな。
InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonWindowNotFocusedState.java
- 486 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 17:57:46 ]
- 単にクラス名が長いというだけじゃなくて、
おなじ行に3回も FileSystemView と書かなくてはならないのが問題というか。 せめて、こうするべきだったのでは。 FileSystemView fsv = FileSystemView.instance(); Toolkit.getDefaultToolkit() も同罪。
- 487 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 18:00:07 ]
- get付けてgetInstance()にしようぜ
- 488 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 00:47:23 ]
- その程度の工夫ではJavaの冗長さはびくともしないぜ
おとなしくIDEに補完させましょう # 型推論があればもうちょっとなんとか…
- 489 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 09:07:28 ]
- しかしHashMapを格納するときにMapで宣言するJavaの文化が型推論の導入を阻むのだった
- 490 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 23:43:57 ]
- 型推論って型の宣言必要ないんだが。
- 491 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 00:01:30 ]
- >>490
Javaっぽい書き方 Map<String, String> map = new HashMap<String, String>(); いわゆる型推論 final map = new HashMap<String, String>(); ↑HashMap<String, String>と補完される。 結局上みたいなやつじゃなくてコンストラクタの型引数が省略可能になるだけになったらしいが。
- 492 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 00:08:21 ]
- ゲネリックス を始めて触った時に typedef が欲しくなったのは俺だけではあるまい。
- 493 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 00:15:51 ]
- 型推論っていえるのか・・・。
- 494 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 06:35:02 ]
- 言語仕様談義はGUIと関係ないずら
- 495 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 00:34:16 ]
- JEditorPaneにsetTextで500KBくらいのHTMLを読ませると、表示にもの凄く時間がかかるんだが何かいい方法は無いですかい
- 496 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 01:09:10 ]
- Swing を捨て SWT の Browser クラスを使う。
- 497 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 01:45:50 ]
- >>496
SWTって本を見かけないから全く触れたことないなあ。 軽いのならちょっと調べてみる、d
- 498 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 01:57:11 ]
- 500kだとブラウザでも遅いと思うんだがSwingはさらにシングルスレッドだからね。
- 499 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 05:55:19 ]
- >>498
シングルスレッドってw
- 500 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 11:28:27 ]
- イベントディスパッチスレッドがひとつしかないことを言ってるのでは
- 501 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 11:31:55 ]
- >>498
現存するGUIツールキットでスレッドセーフなものは無いぞ。
- 502 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 17:33:32 ]
- というか、JWebPaneは今どうなってんの?
- 503 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 18:49:46 ]
- 誰か、というかの前を補完してくれ〜
- 504 名前:デフォルトの名無しさん [2009/04/18(土) 20:50:07 ]
- >> 497
軽いけれど役立たずだよ。
- 505 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 07:12:42 ]
- Java でカスタムブラウザみたいなものを作ろうと思ったら SWT 一択だろ。
それ以外は特にいらないけど。
- 506 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 11:10:11 ]
- カスタムブラウザ自体がアレ。
自前でパースして適当に配置したほうが(ry
- 507 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 11:23:39 ]
- Google Map とか自前でパースして動かすんかい。エラい再発明家だな。
- 508 名前:495 mailto:sage [2009/04/19(日) 15:11:00 ]
- SWT調べてみたけどSwingと連携させるのはなかなか厄介そうだね。
Swingでやるとして、500KBのHTMLを一気にでは無く少しずつ表示させることは出来ないだろうか。 スレッドを使ってやってみたら、HTMLの先頭部分は表示できたんだけどスクロールができない、助けて
- 509 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 15:39:35 ]
- operaはHTML自体はメモリに読んどいて表示はウィンドウに見えてる部分だけ描画する。
メモリ減らしたいならそんな感じだがスクロール早くしたいなら スクロール時の描画アルゴリズムを考えるとかじゃなかろうか。
- 510 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 05:26:43 ]
- Swing の全コンポーネントをヘビーウェイトにするとか、そういうオプションないんだっけ?
EDT 処理やコンポーネントは相互変換できるから、あとそれができれば SWT との混在も 不可能じゃなさそうな気がするけど。
- 511 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 06:58:54 ]
- ポップアップメニューくらいなら重量にできるけど
- 512 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 08:59:15 ]
- ヘビーとライトが混ざると変に重くなるとか
さっさと俺アプリを修正しよう
- 513 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 15:07:48 ]
- 長いので、何回かに分けて質問します。
次のプログラムを実行して、サブフレーム表示ボタンを押すと描画領域を含むサブフレームが表示されるのですが、 サブフレームのクローズボタンを押して閉じてから再度サブフレーム表示ボタンを押すと、サブフレーム表示の瞬間に ちらつきが起こります。一瞬白い部分が見えてから黒く塗りつぶされるのが目につくのです。JFrameのコンテントペインは isDoubleBuffered() がtrueになるので、自動的にダブルバッファリングしてくれるはずと私は理解しているのですが、 なぜかちらつきが起こります。ちなみにactionPerformedメソッドをコメントアウトしてある方に置き換えるとちらつきが 起きないようです。しかし、この回避策はスマートとは言えませんし、なぜこれでうまくいくのかも不明です。 適切な解決策をご存知の方、ご教授ください。私の環境はMac OS X 10.4.11 J2SE 5.0です。
- 514 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 15:11:27 ]
- 513続き
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class JFrameTest extends JFrame{ JFrame subFrame; DrawArea drawArea;//subFrameに貼り付ける描画領域 JButton button;//subFrame表示ボタン public static void main(String[] args){ JFrameTest f=new JFrameTest(); f.setVisible(true); } public JFrameTest(){ setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); button=new JButton("サブフレーム表示"); button.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ if(subFrame==null){ subFrame=new JFrame(); DrawArea drawArea=new DrawArea(); subFrame.add(drawArea,BorderLayout.CENTER); } subFrame.setBounds(210,0,500,400); subFrame.setVisible(true); }
- 515 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 15:13:16 ]
- 513続き
/* public void actionPerformed(ActionEvent e){ if(drawArea==null){ drawArea=new DrawArea(); } if(subFrame!=null){ subFrame.dispose(); } subFrame=new JFrame(); subFrame.add(drawArea,BorderLayout.CENTER); subFrame.setBounds(210,0,500,400); subFrame.setVisible(true); } */ }); getContentPane().add(button, BorderLayout.CENTER); setSize(200,100); } class DrawArea extends JComponent{ public void paintComponent(Graphics g) { g.fillRect(0,0,getWidth(),getHeight()); } } }
- 516 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 15:14:33 ]
- 513
以上です。
- 517 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 18:30:14 ]
- >>513
手元の環境(OS X 10.5.6 Java 1.6.0_07) だとどちらの コードでも初回表示の時からちらつく. >DrawArea drawArea=new DrawArea(); >System.out.println("drawArea.doubleBuffered : " + drawArea.isDoubleBuffered()); としたときどうなるか?
- 518 名前:513 mailto:sage [2009/04/20(月) 23:49:50 ]
- >>517
もちろんfalseと表示されますね。JComponentのdoubleBufferedはデフォルトでfalseですから。 ttp://wisdom.sakura.ne.jp/system/java/swing/swing8.html を参考に public void actionPerformed(ActionEvent e){ if(subFrame==null){ subFrame=new JFrame(); subFrame.getRootPane().setDoubleBuffered(true); ((JComponent)subFrame.getContentPane()).setDoubleBuffered(true); DrawArea drawArea=new DrawArea(); subFrame.add(drawArea,BorderLayout.CENTER); } subFrame.setBounds(210,0,500,400); subFrame.setVisible(true); } と変えてみましたが、結果は同じでした。 これってどうしようも無いんですかねえ。実はJFrameだけでなく、JDialogでも同様のことが起こるわけですが、 みなさんこの辺のことは不満を感じないのでしょうか。まあ実用上問題はないのだけれど、見た目も大事だと思うんですよ。
- 519 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 00:55:01 ]
- JListはsetVisibleRowCountで縦の長さを指定できますが、
横幅を指定するのはどうやるのでしょうか? DefaultListModelで3文字ぐらいをaddしても横幅は8文字分とかにしたいです。
- 520 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 01:59:41 ]
- 519ですが調べてみたら何とか解決しそうです。
- 521 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 02:30:23 ]
- マカウザイ。マクのはサン純正じゃないからアポーに問い合わせろ。
- 522 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 05:20:38 ]
- N+あたりの一部のキチガイのせいで Mac と聞いただけで過剰反応する奴が増えたなぁ。
コンピュータ関係だと使いやすい Unix 端末として使ってる人も多そうなのに。
- 523 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 08:13:22 ]
- 先入観だけど、多く…ないと思う、多いの?
Macは昔から嫌いだが、MacのJavaは動作が違うのか妙に嫌われてるな
- 524 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 08:43:10 ]
- 今日JJUGのイベントにいくんだけど、「複数のGUIウィンドウプログラムが動くシングルウィンドウシステムとその応用」
を発表する会社のページ見るとかなりトンデモな発表になりそうで今から楽しみだぜ、 ttp://www.sys-audit.com/indexjp.html
- 525 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 08:53:44 ]
- >>524
そこ読んだ限りでは単なる C/S システムライクなアプレット実装だな。 つうかページ一番下 > 探偵を使って当研究所関係者を執拗に尾行する企業があります。社員として採用してただ > 同然で技術を入手しようとお考の上でのことでしょうが、暴力行為であり甚だしい > 人権侵害ですのでお止めください。不正競争防止法に触れる可能性もあります。 妄想ワロタw
- 526 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 10:48:11 ]
- >>524
つっこみどころ多すぎてワロタw >ウィンドウの大きさを少し変化させてウィンドウの重なり具合を変化させることにより、 >ウィンドウマネージャに描画指示を出させます コンポーネント入れ変えたら JComponent#revalidate() 呼べば?とか そもそも CardLayout 使えばいいんじゃね?とか…
- 527 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 18:27:38 ]
- >ウィンドウの大きさを少し変化させてこれダーティーとみなされずにリペイントマネージャに無視られるんじゃなかろうか?
revalidate呼べよ。
- 528 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 01:24:03 ]
- >>524
言ったなら感想書いてくれよ www.sys-audit.com/index1.html とか見るとこの会社(というかこのおっさん)すごすぎるぞww
- 529 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 04:28:42 ]
- ユニックス端末ならリナックスでいいだろ。
xterm始めまともなターミナルいくらでもあるし。 わざわざマク使う様な香具師は皆無。マクって、あんまりオープンな環境じゃないしな。ソース見たい時に詰まる事は多い。
- 530 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 07:47:58 ]
- XP は飽きた。Vista もなんだかなぁ。
Unix 系のターミナルやコマンド、gcc が付いてて Photoshop, Illustrator も動く。 名前を聞いて一般人が引かない。家族も使うしそこらの PC 屋で吊るしで買ってこれる。 そんな理由で MacBook 使っている。カーネルのソース必須な人は Linux 使えば 良いと思うけど、Unix のシェル積んでて主要なプロプライエタリソフトも使えるんで 便利だよ。仕事場で 5 人ほど自宅 PC を Mac に乗り換えてる。 スレチなんでこれ以上はやめとくが。
- 531 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 08:41:24 ]
- windowsじゃないと出来ないことってあるよね。
飽きたとか言う以前にwindows(PC)使ってる人は、わざわざ高いMACなんか使わずそれぞれ目的があるんからPCにしてるんだと思うよ。 macだとquicktimeとobjcが標準なのが魅力だけどそれだけかもね。 windows media はどうしてるの? ほかにwinだとゲーム(GPUプログラム)とか。
- 532 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 10:48:48 ]
- >>531
QuickTimeよりは、DirectShowの方がスジが良いんじゃないかと思う。 といってもQuickTimeのAPIとかぜんぜん知らないんで、想像だけど。 DirectShowを使ったアプリ、コーデックはたくさんあるのに、 QuickTimeを使ったアプリってあまり見ない のを考慮すると、使いづらいんじゃないかと思う。 個人的にはQuickTimeアプリってiTunesしか知らない。 コーデックはDivXとFlip4macとPerianぐらい?Flip4macはでかいwmv動画再生しようとすると、 「インポートしています」というダイアログで長々と待たされるのでイライラする。
- 533 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 00:07:25 ]
- マカは盲目だしなあ。もうそんな時代じゃないのに。
- 534 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 00:18:27 ]
- 俺たちのサンが消滅しちゃったって言うのに、どんな時代だって?
- 535 名前:デフォルトの名無しさん [2009/04/23(木) 01:26:24 ]
- 個人的にはNetBeansとOpenOfficeの行く末が心配です。
- 536 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 10:37:08 ]
- 自分の好きなの使えばよろし、
俺は市販のゲームだとかネトゲだとか、 自分の好きなフリーソフトがあるから、 それだけの理由でずっとメインストリーム使ってる。
- 537 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 03:37:23 ]
- ooは金にならないから厳しいだろうなあ。
- 538 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 05:03:45 ]
- Solaris売るには必要だけどね。
あとMSの売り上げ減らすことで、相対的な売り上げがあがる。
- 539 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 16:22:35 ]
- oo有るからってsolaris売れる訳でもないし。
msの客とは重なってないと思うよ。あっちは出来る本とかの充実やみんな使ってる安心感が大事。
- 540 名前:443 mailto:sage [2009/04/26(日) 11:24:07 ]
- >>445で教えて貰った方法を試したところ、
ツールチップを出したままホイール回してもスクロールしなくなりました。 さらに、ツールチップをクリックしてもツールチップ消えません。 なんいこったいでした。 そんなわけで、ホイール回したら問答無用でツールチップを消したいのでちょっと試してきます。
- 541 名前:443 mailto:sage [2009/04/26(日) 12:23:22 ]
- JScrollPane spdf = new JScrollPane(hogeFrame);
spdf.addMouseWheelListener(new MouseWheelListener() { @Override public void mouseWheelMoved(MouseWheelEvent e) { // ホイールを回したらツールチップを消す ToolTipManager.sharedInstance().mousePressed(null); } }); こんな酷いコードになりましたが、 どうにかマウスホイール回したらツールチップが消えるようになり スクロールもスムーズに感じます。
|

|