[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 2chのread.cgiへ]
Update time : 05/09 14:29 / Filesize : 137 KB / Number-of Response : 542
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Java低速GUI Swing 8



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

421 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 02:54:08 ]
>>420
本を買う前に最初はsunのjavaサイトにあるswing関連のチュートリアルで十分じゃないか?
APIリファレンスのswingコンポーネントクラスの説明文の多くにリンクがあったりする。

422 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 02:58:11 ]
あ、すま
>>414で紹介されてるね。

423 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 03:06:57 ]
英語を読むのは面倒くさい
いや読むけどさ(ブツブツ

424 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 04:21:31 ]
>>420
入門書ってどれもほとんど大差ないから。
「Java GUIプログラミング」が本気すぎるとなると習う前に慣れたほうが良いかも。
となるとSwingチュートリアルのソースがベストかな。
英文を隅々まで読まなくても、ソース読んで、実行してみればだいたいわかってくる。

425 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 20:45:24 ]
>>424
ありがとう!やってみる。

426 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 22:52:15 ]
JOptionPane#showXXXDialog()で適当なコンポーネントをつめたJPanelを
表示した際にダイアログのボタンじゃなくてJPanel内の特定のコンポーネントの
方にフォーカスがあたるようにすることってできる?

427 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 01:06:24 ]
>>426
???

428 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 01:47:02 ]
>>427
JOptionPaneをカスタマイズしてJPanelを埋め込んだ場合に、ダイアログのOK/Cancelボタンではなくて追加したJPanel内のコンポーネントに入力フォーカスを当てたい、ということだと思われる。

429 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 08:22:29 ]
できると思う

swing フォーカスでぐぐりゃ解決しそう



430 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 11:23:07 ]
>>428
そういうことです.わかりにくい文ですみません.
>>492
ぐぐってみました.ttp://terai.xrea.jp/Swing/DefaultFocus.html

JOptionPane#showXXXDialog()系だとJDialogやJFrameがとれないから
FocusTraversalPolicyをセットしたりWindowLister#windowOpend()や
ComponentListner#componentShown()でrequestFocus()呼べないよなー
とか思ってました.
んで上のページの EventQueue#invokeLater() 方式を試してみましたが
手元の環境ではJOptionPaneの場合フォーカスはOKボタンの方になってしまいました…

431 名前:430 mailto:sage [2009/03/19(木) 11:39:29 ]
試したコードはこんな感じです
public static void createAndShow(){
 final JTextField textField = new JTextField("Hello");
 EventQueue.invokeLater(new Runnable(){
  public void run() {
   textField.requestFocusInWindow();
  }
 });
 int result = JOptionPane.showConfirmDialog(
  null, textField, "Input Text",
  JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
}

432 名前:デフォルトの名無しさん [2009/03/19(木) 12:09:21 ]
>>431
実際にフォーカスを取得するまで、
requestFocusInWindow() を何度も呼んでみるとか。

ちょっと力技かもしれないけど HierarchyListener を使えば
JOptionPane.showXxxDialog() で作られるダイアログを取得できる。
そのダイアログに対して
WindowListener か ComponentListener を使えばよい。

「コンポーネントが画面に表示されたときに特定の処理を行う」
って、意外と難しいよね?
JSplitPane が表示されたときディバイダを中央に移動させる方法を
見つけるのに、すごく苦労したことがある。

433 名前:430 mailto:sage [2009/03/20(金) 00:09:49 ]
>>432
なるほど HierarchyListener は思いつきませんでした。これなら動きそうですね。

>>431 のコードはEventQueue#invokeLater()じゃなくて javax.swing.Timer で
1秒後とかやったら期待通り動いたんでタイミングの問題なんでしょうねぇ…
PC性能によって必要な delay 時間が変わるからTimerでやるのは微妙だなー
と思ったけど何度でも呼んでみる的アプローチで繰り返しありの Timer を
設定してフォーカスがとれたら Timer を止める、とかでもできそうですね…

434 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 01:56:28 ]
final JTextField textField = new JTextField("Hello");
JOptionPane pane = new JOptionPane(textField, JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION);
JDialog dialog = pane.createDialog("Input Text");

dialog.addWindowListener(new WindowAdapter() {
@Override public void windowOpened(WindowEvent e) { textField.requestFocusInWindow(); }
});
dialog.setVisible(true);
dialog.dispose();
Object o = pane.getValue();
int result = (o instanceof Integer) ? (Integer)o : JOptionPane.CLOSED_OPTION;

うそくさいし、ひどく面倒

435 名前:430 mailto:sage [2009/03/20(金) 13:14:55 ]
>>434
確かに JOptionPane を直接使えばJDialogがとれますね。参考になります。
戻り値の扱い周りとかが大変面倒くさそうですけど…

436 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 13:26:02 ]
>>432
>「コンポーネントが画面に表示されたときに特定の処理を行う」
Component#addNotify() / removeNotify()をオーバーライドでできると思う。

437 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 17:46:14 ]
>>436
addNotify() が呼ばれたとき、
そのコンポーネントが表示されてるとは限らない。
たとえば Window.pack() を呼んだとき、
(たとえウィンドウが不可視であっても)
ウィンドウ内のすべてのコンポーネントの
addNotify() が呼ばれる。

あと、親コンテナの doLayout() が呼ばれるまでは
コンポーネントのサイズが確定しないので、
オーバーライドした addNotify() から
JSplitPane.setDividerLocation() を呼んでも機能しない。

438 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 15:59:56 ]
JTableのセルをアニメーションして移動したり表示したりしたいのですが
どういう方法が一番いいでしょうねぇ・・・

439 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 19:12:38 ]
単純にセルを描画する命令をタイマーで呼ぶしか方法はないのでは?
その具体的な方法でしょうか?



440 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 19:57:58 ]
えーと、よくSFとかでありますね
上から1行ずつアニメーションしてさらさらと出てくるような表や
項目を追加したらふわっと最終行が浮かんでくる
といったような描画をどうやってやるかということに悩んでいます
Timer自体はいくらでも使えるのですが

441 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 20:18:33 ]
JTableはセルそれぞれがコンポーネントというわけではないので、あまりスマートにはできません。
上げられた二つの例に限ってですが、代替策として、glasspaneでだますというのはどうでしょう?
それがいやなのであれば、Timerかなにかでアニメーションさせてください。

442 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 22:18:49 ]
>>440
JXLayer使えばいいと思うよ。

443 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 23:44:17 ]
JTreeでツールチップ表示中にホイールスクロールするとやたら重いんだが

どうにか、普通にスクロールさせる方法はないかね

444 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 04:22:23 ]
ツールチップが重い処理だからそんなもの。
無効にするしか。

445 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 13:51:40 ]
>>443
ツールチップを常に重量コンポーネントとして表示すればよいと思う。

普通 JScrollPane でコンポーネントがスクロールされるときは、
現在表示されているビューポートの外観を少しずつずらしてコピーすることで、
高速なスクロールを実現している。
しかし、軽量コンポーネント(たとえばツールチップ)が
上のレイヤーに重なっているときは、
スクロールされるたびにビューポート全体を再描画しなくてはならないので遅くなる。

446 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 20:35:26 ]
>>441
ありがとうございます
GlassPaneを調べてみますね。それ以外の場合、Timerでアニメーションするとよいとのことですが
アニメーションの内容はどのようなものを?
TableSellRendererやJTableなどをいくら拡張しても中々難しそうですね・・・

>>442
なかなかすごそうなコンポーネントです。これはどういうものでしょうか?

447 名前:デフォルトの名無しさん mailto:sage [2009/03/26(木) 02:49:32 ]
最近beansBindingを触って疑問に思ったのですが、
ColumnBindingに対してvalidatorを設定した場合、
バリデーションエラーが発生した行の取得はどのようにすればよいのでしょうか?

448 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 01:00:27 ]
横方向に中央であればFlowLayoutでシンプルに実現できますが、縦方向に中央に配置したい場合の簡単な実現方法はありませんでしょうか?

449 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 07:03:52 ]
>>448
Y_AXISなBoxLayoutで子コンポーネントそれぞれにsetAlignmentX()でCENTER_ALIGNMENTを設定するのは?
FlowLayoutと違って子コンポーネントの幅は推奨サイズでなく最大サイズに影響されるので、
推奨サイズにしたいなら子コンポーネントの種類次第では最大サイズを設定してやらないといけないけれど。



450 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 10:24:26 ]
private static JLabel createLabel(String text){
 JLabel lb = new JLabel(text);
 lb.setAlignmentX(Component.CENTER_ALIGNMENT);
 lb.setMaximumSize(new Dimension(300,30));
 return lb;
}

public static void main(String[] args) {
 JPanel pn = new JPanel();
 pn.setLayout(new BoxLayout(pn,BoxLayout.Y_AXIS));
 pn.add(createLabel("hoge"));
 pn.add(createLabel("fuga"));
 //...
}

このようなコードで試してみましたが、やはりY方向には上に詰められてしまいます。
中央寄せしたいコンポーネントの上下をBox.createVerticalGlue()で詰めるというのはありでしょうか?

451 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 12:54:35 ]
>>450
縦方向に中央揃えでコンポーネントを並べることと勘違いしてた。
Box b = Box.createVerticalBox();
b.add(Box.createVerticalGlue());
b.add(コンポーネント);
b.add(Box.createVerticalGlue());
みたいな感じでいけるんじゃないかな。
でももしかすると上下のグルーが同じ比率で伸びずに完全なセンタリングにならないかも。
その場合、どれくらいで簡単な実現方法とならないかが分からないけれど、
GridBagLayoutやGroupLayoutみたいな少し複雑なレイアウトマネージャを使うとか、
縦方向について中央配置するマネージャを自作するとか。

452 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 12:57:58 ]
>>450 縦に中央ってこんな感じ?
JLabel label1 = new JLabel("Hello, World!!");
label1.setBorder(BorderFactory.createTitledBorder("label1"));
label1.setAlignmentX(JComponent.CENTER_ALIGNMENT);
JLabel label2 = new JLabel("Goodbye, world!!");
label2.setBorder(BorderFactory.createTitledBorder("label2"));
label2.setAlignmentX(JComponent.CENTER_ALIGNMENT);

JPanel inPanel = new JPanel();
inPanel.setLayout(new BoxLayout(inPanel,BoxLayout.Y_AXIS));
inPanel.add(label1);
inPanel.add(label2);
inPanel.setAlignmentY(JComponent.CENTER_ALIGNMENT);
inPanel.setBorder(BorderFactory.createTitledBorder("in"));

JPanel outPanel = new JPanel();
outPanel.setLayout(new BoxLayout(outPanel,BoxLayout.X_AXIS));
outPanel.add(inPanel);
outPanel.setBorder(BorderFactory.createTitledBorder("out"));

JFrame frame = new JFrame("VerticalCenterLayout");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//frame.add(BorderLayout.WEST, outPanel);
frame.add(BorderLayout.CENTER, outPanel);
frame.pack();
frame.setVisible(true);

453 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 13:32:37 ]
初心者です。
javaでゲーム製作の本を買って、
コードがすべてAWTで書かれてるんですが、
swing用の本を買いなおしたほうがいいですか?

454 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 15:23:18 ]
>>453
別にそんなことないだろ。
Swingの本なら、awtの知識は前提としているだろうし。

455 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 17:13:35 ]
>>454
ありがとうございます。
今の本で勉強してみます。

456 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 23:39:38 ]
>>453
時間の無駄をいとわないならその本でOK。
時間の無駄がいやなら買いなおすべし。

457 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 00:44:33 ]
ゲームを作るつもりでその本を買ったなら Swing の本を
買い直す必要は全くないと思うが…
Swing の勉強をするつもりで買ったの?

458 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 04:25:34 ]
あとでswingの本読んで、swing化してみるのは実力が付いていいと思うけどね。
基本は大事。

459 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 06:53:59 ]
>>440
>>453
ゲームで、グラフィック表示ばっかりなら、Swingはあまり関係ないと思われる。
java.awt.Graphics2Dを使ってるから「コードがすべてAWT」というオチではないよな?



460 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 09:44:16 ]
440関係なかった・・・

461 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 09:49:53 ]
javaでゲームだと結局java2dだとか3d使うんだべ

462 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 11:50:26 ]
そんなことないべ。
コマンドアドベンチャーとかなら、普通に既存コンポーネントだけで作れるべ。

463 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 17:57:11 ]
>>461
シミュレーションだとJava2DとSwingでがっちり組むみたいよ。
最近ので、ちょっと期待してしまうDarkSideとか
www.darkside-game.net/index.jsp

自分ではJava3Dを使いたいんだけど再配布がな・・・

464 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 22:06:37 ]
>>463
Java Web Startにすると、そのあたりも自動でインストールしてくれるらしい

465 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 23:33:46 ]
>>464
そんなうまい話があるわけない。
開発者の手間は変わらない。(JNLPの分面倒か)


466 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 04:05:32 ]
>>465は技術者として終わっとるな。

467 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 04:11:55 ]
Java Web StartでのJava3D配布は、このあたりで話題になってた
pc11.2ch.net/test/read.cgi/tech/1033703640/909-915

詳しくはここを
https://j3d-webstart.dev.java.net/test/

これが参考になるかもしれない。
ziddy.japan.zdnet.com/qa4257080.html

468 名前:465 mailto:sage [2009/04/03(金) 07:15:22 ]
>>466
"自動で"とか勘違いさせるような発言について書いたんだが

469 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 08:21:42 ]
Java3Dサイトのデモでは自動でJava3Dがインストールされるように見えるが。



470 名前:デフォルトの名無しさん [2009/04/03(金) 08:59:32 ]
スタンドアロンでも普通に実行できるようにならんかね
ネットワークアクセスしてもいいから

471 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 09:41:54 ]
jarファイルにすれば実行できるぞ

472 名前:デフォルトの名無しさん mailto:sage [2009/04/03(金) 11:24:57 ]
JFileChooser で、ファイルチューザーのダイアログを開いた時に表示されるディレクトリを
マイコンピュータにしたいんですが、どうしたらいいでしょうか?


473 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 16:14:59 ]
任意のファイルを自動でインスコできたら、セキュリティ上問題が有るな。

474 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 18:51:59 ]
だから認証が出るわけだな。いまさら何を。

475 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 04:49:56 ]
マニフェストに記述した JAR 内の画像をアイコンにするくらいしてほしいね。
まぁ JWS でデスクトップに好きな画像のショートカットアイコン作れるけどさ。

476 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 12:17:50 ]
テキストを編集できるフレームで特定の文字がある行だけ
編集不可能にするにはどうしたら良いでしょうか。
netBeansのエディタみたいにするには?

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);
 }
});

こんな酷いコードになりましたが、
どうにかマウスホイール回したらツールチップが消えるようになり
スクロールもスムーズに感じます。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<137KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef