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


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

Java低速GUI Swing 9



1 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 23:13:39 ]
ハードウェアの高スペック化、描画アルゴリズムの変更、JavaVMの高速化に伴い、パフォーマンスの問題は改善されています。
しかしながら、"Java"というだけで未だに敬遠されるのが現状。
そんなSwingと引き続き付き合っていくみんなのスレッドです。

Java低速GUI Swing 8
pc12.2ch.net/test/read.cgi/tech/1227234261/
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

355 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 13:22:40 ]
ActionKey.java
値が0と1しかないのなら、intじゃなくてbooleanを使ったほうがよいのでは。

初期化
private boolean status = false;
メソッド
public void press() { status=true; }
public void release() { status=false; }
public boolean isPressed() { return status; }


356 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 14:18:47 ]
ゲームの出来ない(コンピュータにも余裕で負けるよ)、俺にはさっぱりルールが分からなかったorz
可愛い女の子の絵だけで、お腹が一杯です

357 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 14:20:09 ]
ゲーム本体の良し悪しはともかくとして、
問題にしてるのはマップエディタの方では?

358 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 14:44:25 ]
uploaderはこちら
toku.xdisc.net/


359 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 14:49:47 ]
>>353
向こうのスレで「面白い」とだけコメントしてたものです…

ぱっと見て気になったのは>>354で書かれてる最初のものですね。
あと全般的に、定数は自分だったらEnum使うかな。
Enum使うと振る舞いを持たせられるので夢がひろがりんぐ。

Nyoro2のメインメソッドの中身はSwingUtilities.invokeLater使ってEDTで呼ぶべきでしょうね。
java.sun.com/docs/books/tutorial/uiswing/concurrency/initial.html

それとJava関係ないですけど、NetBeansのnbproject/privateディレクトリ以下は
配布しない方が良いかもです。
netbeans.org/kb/docs/java/import-eclipse_ja.html の"NetBeans プロジェクトファイル"

360 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 14:53:18 ]
>>357
ゲームの人とマップエディタの人は別人じゃないの?


361 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 15:00:44 ]
ゲームクリアしたら女の子とのセクロスシーンが出てくる、
なんてことになったらウレシくてティンコ旅立ち

362 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 15:03:27 ]
マッポエディッタがうぷられて、マッポvs有能人の壮絶なバトル、ってなことになったら面白いのになあ

363 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 16:18:30 ]
マップのセルが全部JButtonとか、グリッドがJTableとか、
そんなとこをエスパー予想。

…いや、Wizardryレベルのマップならそれで十分なんだけどさ



364 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 16:56:23 ]
>>353
ゲームは全然知らないけど、それでも問題が多いのは分かる。
たぶん354, 355のような指摘は100個くらいは挙げらるし、クラス設計にも問題がある。
(が、設計の能力はすぐには身につかない)
普通の職業プログラマに対してなら、『プログラミング作法』、『Effective Java 第2版』、
『Java言語で学ぶデザインパターン入門』あたりの書籍を勧めるところだけど、ゲームは
文化の違い等があるから、たぶんこれらの本を読むのは遠回りになるだろうな。

>>355
おまえもいろいろと酷そうだなw
boolean型でstatusなんて名前はない(名前は重要だぞ)

private boolean pressed = false;
public boolean isPressed() { return pressed; }

普通はこう。(ただしクラス設計としては問題がある)

365 名前:デフォルトの名無しさん [2010/03/27(土) 21:11:34 ]
誰か、statusという名前が駄目でpressedならオケという理由を教えてくれまいか
ていうか、変数名に動詞を使うのにはめちゃくちゃ違和感がある
俺の場合、動詞から始まる名前はメソッドにしか使わないからなぁ

366 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 21:20:09 ]
>>365
status = true とか return status とか見てもなにしてんのかわかりにくいだろ。
あと、 pressed は動詞じゃないから。

367 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 21:28:38 ]
statusでは「何の」状態なのか分からない
pressedなら押したかどうかなんだなと分かる
まあキーなら押したかどうかしか状態がないだろという話もあるが
メソッドと命名の方向性は合わせた方がいいと思う

368 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 21:48:11 ]
そういうことか…レスサンクスコ。

369 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 21:54:16 ]
とりあえずJavaコーディング規約おいときますね。
www.objectclub.jp/community/codingstandard/CodingStd.pdf

これ以上の命名法の話題は命名系のスレでやった方がいいんじゃないかな。

370 名前:334 [2010/03/27(土) 21:56:30 ]
別にこまってないし、ソースupする気なんてないよ
遅い理由はJTableのレンダラにJLabelを使っているからなんだけど手を抜こうとしたらこれが都合よかったのでそうしてるだけだし。

にしても、あとはSwingのせい。
DataGridView@C#でやったらどんだけ高速だったことか。

見た目がいびつなのは、レイアウトマネージャーの動作がキチガイだから。
SWTのGridLayoutが神レイアウトだと思うんだけど、これのSwing版発見したのでつかってみて

ttp://code.google.com/p/uface/issues/detail?id=8

掲示板添付のzipが使えた。
正式にはどこで公開されているのか知らん。英語わからんし。


371 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 22:01:10 ]
俺はSwingを使うときは無条件でSwingUtilities.invokeLater()を使ってたけど、
よくよく考えると結構重要なのかも
wisdom.sakura.ne.jp/system/java/swing/swing4.html

353のソースは、まあ、よくできてるんじゃね?
俺も初心者レベルなんで詳しいことはよくわからんがw
あとは…

ifが連なってるところはswichi にしたほうがいいとか(一般的には条件分岐よりも
ジャンプのほうが速いはず…だけどこれはコンパイラ依存か)、
女の子の画像は裸のほうがいいとか、そのくらいしかわからん。

個人的に、画像の直貼り付けは遅そうな感じがするけどどうなんだろうね。
(もちろん、速度を気にしないなら直貼り付けで全く問題ないけど)
画像データを配列に読み込んで、その配列を処理したほうが速い気がするんだけど、
それをやるとかなりソースが複雑になりそうだなあ。

372 名前:334 [2010/03/27(土) 22:06:05 ]
連続書き込みすまん

swtgridlayoutで見た目は完全に改善された。かなりオススメ

で、とりあえず俺はJavaもSwingも上級レベルで使えると自負してるけど

これで(公開できるほど)まともなアプリをつくるのは
不可能または、並々ならぬ努力が必要と思うので
本気でみんなが何をつくっているのか気になる。
何かまともなもん作ったって事例があったら教えてくれ。

373 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 22:08:09 ]
>>371
あまり関係ないけど、コンパイラ依存じゃなくてVM依存だと思うw



374 名前:353 mailto:sage [2010/03/27(土) 22:55:33 ]
おぉ!沢山のレスありがとうございました!
こんなに沢山アドバイス貰えるとは思ってなかったよ
知らない単語も出てきてるし、参考URLまで貼ってくれてるしで、
いろいろ調べて勉強してみます。
ありがとうございました

ちなみに、トップの絵書いてくれた友達にも、
JAVA質問スレと、このスレで絵についてのレスされてる事を教えた所すごく喜んでましたw

375 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 00:03:48 ]
>>364
で、あんたは>>347のうちどれなの?

376 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 00:05:46 ]
バカでも出来るコードレビューには食いつきが良いのなw

377 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 00:05:59 ]
>>370
> 別にこまってないし
じゃあなんで>>198から1ヶ月もこのスレで頑張ってるの?

378 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 00:07:45 ]
>>376
で、あんたは>>347のうちどれなの?

379 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 00:10:32 ]
>>378
誰と勘違いしてるの?バカなの?

380 名前:デフォルトの名無しさん [2010/03/28(日) 00:21:39 ]
また猛牛が暴れだしたようだな

381 名前:353の友達 mailto:sage [2010/03/28(日) 00:21:55 ]
>>361さんのために300点クリア絵を描きました><*
皆さんのレス嬉しかったです><*
ありがとうございました><*

ttp://a-draw.com/contents/uploader2/src/up19034.gif

382 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 00:24:27 ]
うpするにしてもレベル低いソースの方が食い付きがいいよね

383 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 00:29:38 ]
>>381
なんだコイツ
受け狙いのつもりなのだろうか



384 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 00:31:30 ]
くだらねぇ話でスレ延びてんな。Swing 関係ねぇじゃん。
もう Java 総合スレで統一したらどうだ。


385 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 02:36:03 ]
嫌あっちで反応悪くて、こっちでうpしたら、みんな気合い入れてコメント下から、当人らが興奮したってだけだろ。
どうせswingスレは普段過疎ってるから有効利用なんじゃねw

386 名前:334 [2010/03/28(日) 04:26:13 ]
>>377
おおおぉ、凄いチェック力。>>198書いたのすっかり忘れてた
このスレで頑張ってるというか、グチ&みんなが何つくってるのか興味で書き込みしてるだけなんだけど

.NETが性能も開発効率も見た目も圧倒的に良いのに、
いまだSwingにこだわる君たちの思考に興味がある


387 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 04:33:39 ]
>>386
.NET って UNIX 系 OS や Mac とかでも動いたっけ?

388 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 10:43:44 ]
春だなあ
java.netでもsf.netでもいいからSwingアプリ探してみなはれ。

389 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 15:31:24 ]
monoの再現度がまだまだ。
というかwinでMS製言語使うにしてもVC++だと思う。

390 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 00:42:14 ]
Swing と比べるなら .NET ではなくて
Windows Forms や WPF じゃなかろうか。

391 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 21:15:04 ]
JDK1.5なのでSwingWorkerが使えません。
この場合

1秒間隔でTimer起動→スレッド起動→バックエンド処理→待ち受け画面表示→イベント処理終了でswingスレッドを戻す
 →バックエンド処理終了→Timerのstaticに終了フラグセット(継承して持たせた)
  →Timer起動で呼ばれる→フラグ立ってるので待ち受け画面非表示

こんなことしないといけないんすかね…
あ〜1.6で書きたい。ただ1.5以上サポートなんで1.6依存でかけない…

392 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 21:42:41 ]
ライセンスとかに問題がなければ
SwingWorkerをパッケージに含めてしまうというのも可能かも。
あるいは似たようなクラスを自分で書くとか。


393 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 00:33:05 ]
>>370
1000x1000程度のJTableなら、全セルにイメージ貼り付けても、
スカスカ動くがな。
大方、全セルにJLabelをnewしてつっこんだとかだろ。




394 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 01:36:30 ]
>>391
https://swingworker.dev.java.net/
This project is a backport of SwingWorker included into 1.6.

395 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 10:10:40 ]
>>394
1.5で使えるとかって書いてないんですけど使えるものなんですかね?

396 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 10:20:14 ]
たいていの質問回答スレには、最初の一行しか読まずに回答始めるあわてんぼさんが常駐してる。

397 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 11:09:30 ]
This project is a backport of SwingWorker included into 1.6.
を訳してみろ…

398 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 11:17:06 ]
あ… もし backport の意味がわからなかったら用語辞典とかで調べるといいよ
e-words.jp/w/E38390E38383E382AFE3839DE383BCE38388.html

399 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 11:35:50 ]
意味が分かりました。すみません。躍起になって1.5ばかり探してました・・・

400 名前:334 [2010/03/30(火) 19:48:53 ]
>>393
newなんてするかい・・そこだけはりつけちゃる
public Component getTableCellRendererComponent(JTable table, Object data,
boolean isSelected, boolean hasFocus, int row, int column) {
MapTable mapTable = (MapTable) table;
if (!(mapTable.enableStartColumn <= column && column < mapTable.enableStartColumn
+ mapTable.enableLength)) {
this.setIcon(null);
} else {
if (data != null) {
int item = (Integer) data;
if (item != -1) {
PalletTableItem pi = palletTable.getValueAt(item);
if (pi != null) {
this.setIcon(pi.icon);
} else {
this.setIcon(null);
}
} else {
this.setIcon(null);
}
} else {
this.setIcon(null);
}
}
if (isSelected) {
this.setBorder(lineBorder);
} else {
this.setBorder(emptyBorder);
}
return this;
}

401 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 00:40:49 ]
きったねー

402 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 01:14:53 ]
>>400
動作には関係ないが、ソースは少し見やすくなったかもしれない。

public Component getTableCellRendererComponent(JTable table, Object data,
boolean isSelected, boolean hasFocus, int row, int column) {
MapTable mapTable = (MapTable) table;
Icon icon = null;
Integer item = (Integer) data;
if (mapTable.enableStartColumn <= column
&& column < mapTable.enableStartColumn + mapTable.enableLength
&& item != null && item != -1) {
PalletTableItem pi = palletTable.getValueAt(item);
if (pi != null) {
icon = pi.icon;
}
}
this.setIcon(icon);
this.setBorder(isSelected ? lineBorder : emptyBorder);
return this;
}

403 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 04:22:34 ]
>>393 は逃げたか…



404 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 05:24:22 ]
単に図星だったから、慌ててソース書いただけだろw

405 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 06:55:43 ]
そう思いたいんですね

406 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 08:45:49 ]
最初から示さなかった時点で負けとしか。
後だし乙。

407 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 15:31:23 ]
JTreeの要素の並び順ってJtreeの機能で設定することができるでしょうか?
それとも登録の前にソートして、ソートされた順番で登録しないといけないでしょうか?

408 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 16:07:36 ]
>>407
TreeNodeに対して children() を呼んだときにソート済みで返ってくればよいと思う。
UIよりはモデル側の問題。


409 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 20:20:00 ]
>>406
誰と戦ってんのおまえw

410 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 02:39:22 ]
>>409
お前だろ、粘着乙www

411 名前:デフォルトの名無しさん mailto:sage [2010/04/06(火) 23:17:26 ]
javafx を始めたいんだけど、入門書ってありますか?

412 名前:デフォルトの名無しさん mailto:sage [2010/04/07(水) 04:06:16 ]
javafxは辞めておいたほうが。

413 名前:デフォルトの名無しさん mailto:sage [2010/04/07(水) 04:32:26 ]
入門レベルは英語ばっかだね。



414 名前:デフォルトの名無しさん mailto:sage [2010/04/08(木) 03:31:16 ]
LaboBrowser っての使ってみたけど全然ダメだの。
マトモに表示できるのは Google トップくらいだ。

415 名前:デフォルトの名無しさん mailto:sage [2010/04/08(木) 03:56:42 ]
Lobo? あれは JEditorPane よりもマシという程度

416 名前:デフォルトの名無しさん mailto:sage [2010/04/08(木) 04:05:08 ]
一般的なブラウザ >> [実用性の壁] >>> Lobo >> Swing >>>> HotJava

417 名前:デフォルトの名無しさん mailto:sage [2010/04/08(木) 07:42:00 ]
JWebPaneまだ〜?

418 名前:デフォルトの名無しさん mailto:sage [2010/04/08(木) 22:47:25 ]
Flying Saucerの出番か!?

419 名前:334 [2010/04/11(日) 12:07:15 ]
おひさしぶり!

んでもって君らが何つくってんのか教えてくれんの?

420 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 22:24:28 ]
JaneStyleとかすごい恥ずかしいUIだけど公開されてんぞ?

421 名前:デフォルトの名無しさん mailto:sage [2010/04/12(月) 20:46:27 ]
a

422 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 13:09:55 ]
window自体に最優先のキーイベントを登録したいのですが、
要は、どのパネル、どのコンポーネントを開いていても呼ばれるイベントです。
WindowにWHEN_IN_FOCUSED_WINDOWのイベントをgetActionMap().put(action, action)するみたいな感じです。

423 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 13:10:50 ]
ほほう。それでそれで?



424 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 10:17:51 ]
>>422
KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventPostProcessor(new KeyEventPostProcessor() {
    public boolean postProcessKeyEvent(KeyEvent e) {
        if (e.getID() == KeyEvent.KEY_PRESSED)
            System.out.println(e);
        return false;
    }
});

このサンプルコードのようにすると出来るようです。
あとはKEY_PRESSEDの所と、System.out.println(e)の所を適切に変えればOKです。
1日掛けて調べました。。。

もし宜しければ、私のブログの応援クリックをしてもらえませんか?
study-blog.jugem.jp

425 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 10:21:33 ]
間違えました。

KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(new KeyEventDispatcher() {
    public boolean dispatchKeyEvent(KeyEvent e) {
        if (e.getID() == KeyEvent.KEY_PRESSED)
            System.out.println(e);
        return false;
    }
});

426 名前:デフォルトの名無しさん mailto:age [2010/05/01(土) 20:59:02 ]
JTableに行ヘッダを追加しようとJScrollPane#setRowHeaderView()でJListのインスタンスを渡しました。
行ヘッダは追加されたのですが、
行ヘッダのJListでカーソル移動やマウスドラッグをするとJTable側がついてこず
JListだけがスクロールします。

JTable側も連動させるにはどうすればよいのでしょう??

427 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 21:41:40 ]
>>426
scrollPane.getRowHeader().addChangeListener(new ChangeListener() {
    public void stateChanged(ChangeEvent e) {
        scrollPane.getViewport().setViewPosition(scrollPane.getRowHeader().getViewPosition());
    }
});

これで、カーソル移動とマウスドラッグはOKでした。たぶん他も大丈夫かと思います。
もしよろしければ>>424のクリックをお願いします。

428 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 09:12:47 ]
>>424
削除ガイドライン違反

8. URL表記・リンク
宣伝・罠・実行リンク
・明らかに宣伝を目的としたリンク・クリックや訪問で課金が発生するもの等は、宣伝掲示板以外では削除します。


429 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 13:13:52 ]
こんなところで宣伝したら馬鹿に突撃されるぞ。

430 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 14:48:00 ]
専門板なら平気だよ。

431 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 23:02:19 ]
>>428
悪気はないんですけどね。
まぁ無職で時間にゆとりがあるので、色々やっとるという訳です。
とりあえずクリックした人はいないようですw

どうにかやっていく方法はないものでしょうか。

1.質問が出る。
2.アフィリエイトをクリックしてもらう。(1クリック数円)
3.解答をする。

という形式にしたいなぁと思っております。

>>429,430
基本的にプログラム板は過疎っていますからね(^^;

432 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 23:03:37 ]
↑スレ違い。適切なスレでやってください

433 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 23:33:06 ]
>>432
そこを何とかお願いします。



434 名前:228 mailto:sage [2010/05/04(火) 07:47:44 ]
じゃあ俺は>>424のブログ?のコメントをエロサイトの宣伝に使わせてもらうよ。
だめ?そこを何とかお願いします。

435 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 09:07:07 ]
>>434
あ、おはようございます。Give&Takeの精神でお願いします。

436 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 12:46:21 ]
宣伝嵐報告してきておk?

437 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 12:53:21 ]
>>436
>>422,426にも意見を聞きたいところですけど。

438 名前:426 mailto:age [2010/05/05(水) 12:40:32 ]
>>427
できました!つたない質問で的確な回答を頂けてとても感謝しています。
クリックしておきましたよ(^^

439 名前:427 mailto:sage [2010/05/05(水) 20:19:49 ]
>>438
こちらこそ、ありがとう。
迷惑でなければ今後も質問があれば調べて回答したいと思います。

440 名前:デフォルトの名無しさん mailto:sage [2010/05/10(月) 22:39:00 ]
1つのJPanelのインスタンスを、複数のJFrame上に同時に描画するにはどうすればよいですか?

441 名前:デフォルトの名無しさん mailto:sage [2010/05/10(月) 23:05:40 ]
シリアライズしてネット越しに垂れ流してデシリアライズとか

442 名前:デフォルトの名無しさん mailto:sage [2010/05/10(月) 23:57:41 ]
>>441
それじゃ「1つのインスタンス」にはならないじゃん。
>>440
共有すべきはmodelであってviewじゃない。

443 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 00:04:46 ]
          ____
       / \  /\ キリッ
.     / (ー)  (ー)\    共有すべきはmodelであってviewじゃない
    /   ⌒(__人__)⌒ \
    |      |r┬-|    |
     \     `ー'´   /
    ノ            \
  /´               ヽ
 |    l              \
 ヽ    -一''''''"~~``'ー--、   -一'''''''ー-、.
  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒))



444 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 00:33:59 ]
巣に帰れw
pc12.2ch.net/test/read.cgi/tech/1178723829/

445 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 22:36:26 ]
>>443-444
ワロタ。

446 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 17:37:21 ]
>>440
描画する数だけインスタンスが必要。


447 名前:デフォルトの名無しさん mailto:sage [2010/05/14(金) 00:08:32 ]
なんでviewじゃ駄目なんですか?

448 名前:デフォルトの名無しさん mailto:sage [2010/05/14(金) 01:29:42 ]
>>447
GUIコンポーネントは親を1つしか持てないから、複数のコンポーネントで1つの子を共有することができない。
参考: java.awt.Component とか java.awt.Container のソース。


449 名前:デフォルトの名無しさん mailto:sage [2010/05/14(金) 01:31:59 ]
てっきりイベントがらみで駄目なのかと思った

450 名前:デフォルトの名無しさん mailto:sage [2010/05/14(金) 10:36:09 ]
>>449
それもあるから親を1つしか持てないようになってるんだろう

451 名前:デフォルトの名無しさん mailto:sage [2010/05/25(火) 10:07:14 ]
ルックアンドフィールは、複数同時には使えない?

JFrame 2つつくって、片方は、javax.swing.plaf.metal.MetalLookAndFeel
もう片方は、UIManager.getSystemLookAndFeelClassName() でとってきたやつを
適用する、みたいなことはできないようになってるってことでいい?

452 名前:デフォルトの名無しさん mailto:sage [2010/05/25(火) 10:14:23 ]
JFrame を表示する前に都度 UIManager#setLookAndFeel()、
SwingUtilities#updateComponentTreeUI() で指定してやれば
見た目は別々になるんじゃないの。全くお勧めは出来ないが。

453 名前:デフォルトの名無しさん mailto:sage [2010/05/25(火) 10:28:24 ]
MetalLookAndFeelで1.1や1.2のころの昔の紫色のUIに変更するにはどうするんですか?



454 名前:デフォルトの名無しさん mailto:sage [2010/05/25(火) 10:32:22 ]
JFrame.setDefaultLookAndFeelDecorated(true);
JDialog.setDefaultLookAndFeelDecorated(true);
の事か?

455 名前:デフォルトの名無しさん mailto:sage [2010/05/25(火) 18:33:26 ]
>>440
www.javakb.com/Uwe/Forum.aspx/java-setup/11894/Copying-the-View-of-a-JPanel

このページの2番目のサンプルコードがとても参考になると思います。

>>451
VMを2つ起動という手も・・・ないか。

456 名前:デフォルトの名無しさん mailto:sage [2010/05/25(火) 20:26:49 ]
>>451
できるけど挙動が狂うって話があった気がする。


457 名前:デフォルトの名無しさん mailto:sage [2010/05/25(火) 20:33:23 ]
>>452 >>456
基本できないよな 少なくともAPI作り手はそんなこと想定しなていようだな
サンキュー

458 名前:デフォルトの名無しさん mailto:sage [2010/05/25(火) 23:53:25 ]
>>453

LookAndFeel laf = new javax.swing.plaf.metal.MetalLookAndFeel();
MetalTheme theme = new javax.swing.plaf.metal.DefaultMetalTheme();
MetalLookAndFeel.setCurrentTheme(theme);
UIManager.setLookAndFeel(laf);

多分これのことかな?


459 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 00:19:25 ]
>>443
あたりに関連して、
frame1 : JFrame --- button1 : JButton
frame2 : JFrame --- button2 : JButton
みたいに、なってて、button1とbutton2が同じモデル buttonModel0をsetModelされてるとき、
frame1をクローズして、frame1がGCで回収された後でも、button1は、buttonModel0からリスナ経由で
参照されてるから残る。
もちろん、button1を再利用したいときもあるけど、そのままメモリリークになりやすい。
どこかのタイミングでプログラマの責任で、button1.setModel(null)して、モデルへの参照を切るべきなんだろうけど、
なんか、定石みたいな書き方ありますかね?


460 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 00:27:38 ]
>>459
frame1 のクローズイベントで切り離す。

461 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 22:28:00 ]
JTable でセルをdbl clickだんどするとそのセルをエディットできますよね。
これを無効にしたいんですがどのAPIでしょうか。
それにしてもJTableは複雑ですよね・・・

462 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 22:53:53 ]
日本語でおk

463 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 23:12:24 ]
JTableは本当に複雑ですけど1つのコンポネントにあれこれ機能を詰め込みすぎって感じがします。
dbl clickやF2でセルを編集できるようになりますがこれをoffにするにはどうするんですか?



464 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 23:49:21 ]
JTable.setDefaultEditor()にnullを渡しておくのはどうだろう。
本来は自作TableModelを作るべきだと思うが。

465 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 00:33:23 ]
>>464
javadocみるとそれしかないかなって思ってましたけど、一番単純な方法はやはりそれでしょうね。
javaはclassの継承を中心とした言語設計なのに、swingはDIというかMVCというかプラグインというか、java langにとってswinの設計思想はまったく異質なので非常に複雑なライブラリとなっています。

愚痴を言うわけではないですが複雑な割にこの程度の機能(それもtableとして当たり前のような機能)しかないswing.tableなら、
少なくともhtml,dom,xmlやgridbag + cellの自作コンポでほとんど用が足りると思います。
javascript.prototypeのような考えならまた違ったのかもしれませんが、それをいうとあとの祭りなのでしょうね。
それと日本語のswingを扱ったHPは皆無ですね。グーグルでもこのスレがよくヒットします。

466 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 00:41:38 ]
ああ、誤解を招きかねないですが、spiなら問題ないですがswingのようなui,skinableではspiや
plubableじゃなくてcssや、顧客一人一人に合わせたskin(script)のようにもっと軽く設定できない
(つまりskin,look,feelingについては固定の設定は存在しないという設計思想)と、UI開発者は敬遠するかなって思います。
webクリエーチャ達の髪の毛の軽さと同じく、JEditorPaneのhtmlエディタもしかりです。

467 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 05:26:11 ]
>>465-466
SwingはJavaプログラマのためのライブラリです。
htmlやcssの方が得意な人のためのライブラリではありません。
SwingにhtmlやcssでUIを設定できないと文句を言うのはお門違いだと思います。

468 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 13:05:58 ]
正確に言うとjavaじゃ無くてjvmプラットのUI

469 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 15:55:54 ]
xmlならsynthがある。
JEditorPaneは最初はやる気満々だったけど扱おうとするドキュメントが方言だらけで投げた。
というかここら辺のフォローはSwing labの管轄なんだが。

まあ俺々思想が強すぎて>>465の意図がよく分からんが。

470 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 16:02:48 ]
synthはswing uiに新しい機能を定義したり追加したりするものじゃないですよね・・・

471 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 16:19:01 ]
swin sets 3も見てみましたけど、ただ高機能にしただけってところじゃないですかね。
それら機能の追加などカスタムなことをユーザ(開発者)が簡単にできるようにしないと汎用コンポでもないし汎用ライブラリ(javax swing)としても意味ないです。

少なくともjava,c++(qt3,qt4),dotnet,gameライブラリを当たり前のように使える開発者は時間があればそれぐらいのコンポネントは普通に作れますよ。
swing labのコンポネントはnetbeans apiに組み込んじゃったほうがいいんじゃないかと思います。
今はjavafxでしょうし、lgplのようですし、せっかく有用なコンポなのでswtと同じ感じでnetbeansを特に使う人達への特権ってことで。

472 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 16:42:55 ]
ブログでやれ

473 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 11:39:06 ]
キーバインドの変更だけならInputMap使うほうが素直では。



474 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 21:52:13 ]
htmlしかコーディング出来ないスキルでguiやろうってのが無謀。

475 名前:デフォルトの名無しさん [2010/06/26(土) 19:50:11 ]
ahe

476 名前:デフォルトの名無しさん [2010/07/02(金) 10:14:55 ]
低速だとはおもわない

477 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 13:15:39 ]
伝統だから付いてるだけだよ。
# 「Java 高速 GUI SWT」に対する皮肉も込めて…

478 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 02:29:19 ]
教えてください。
JFrame→JDialog(モーダル)→JDialog(モーダル)の画面遷移で、
最後のJDialogをdispose()すると、最後のJDialog残像が残るんですが、(何回かやってると)
dispose()した後、2番目のJDialogをrepaint()しないといけないもんですか?

実際はもうちょっと複雑で、
2番目のJDialogの中にtableがあってTableのセル内のボタンを押した時に、
3番目のJDialogが開くようになってます。
そこで、選択した物をテーブルに表示するという処理になります。

3番目のJDialogを引数無で作成すると残像は起こらないんですが、
オーナー(2番目のJDialog)を指定してJDialogを作成した場合のみ問題が発生します。


479 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 09:30:08 ]
hideしてからdispose

480 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 18:04:51 ]
1.5以降ではhide()は推奨されないメソッドになっているため、
JavaDocの通り、setVisible(false)をしてからとか、
windowクラスのtoBack()をしてからdispose()をするなど、
色々と試してみたんですがうまくいきません。(モーダルなのでtoBack()は効くかもわかりませんが(汗))

あとは、windowsの問題かと思い、VM引数のnoddraw=trueでやってみたりもしたんですがダメでした・・

奥が深いですね・・・

481 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 18:19:52 ]
それが再現出来るような説明を付けてバグ報告

482 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 23:55:02 ]
3番目のJDialogをEventQueue.invokeAndWait()経由で開いてみるのはどうだろう。

483 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 18:14:32 ]
先回りエスパーでinvokeLaterと修正してみるテスト



484 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 23:58:22 ]
SwingUtilsですね
確認してみます。

色々と助言ありがとうございます。

解せないのは、
オーナーを指定した場合と、していない場合の動作ですが
まだわからないことが多いので勉強してみます。

485 名前:デフォルトの名無しさん mailto:sage [2010/07/09(金) 12:48:41 ]
Apache pivotのWTKって、Swingの補完に使えんのかな。






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

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

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