Java低速GUI Swing 9
..
331:デフォルトの名無しさん
10/03/25 18:49:37
Swing 自体がフレームワークじゃねぇの。
あと自分とこの要件向けにドメインフレームワーク作るだけだろ。
332:デフォルトの名無しさん
10/03/25 18:52:46
>>331
ドメインフレームワーク?
333:デフォルトの名無しさん
10/03/25 21:52:33
SwingはToolKit
334:デフォルトの名無しさん
10/03/26 00:41:08
ホント、マジで教えて欲しいんだが、
おまいらSwingで何つくってんだ?
ゲームのマップエディタつくったんだが、遅くて、見た目もイビツで
恥ずかしくて公開できやしない。
335:デフォルトの名無しさん
10/03/26 01:00:44
>>334
それ Swing のせいなの?
336:デフォルトの名無しさん
10/03/26 02:24:50
センスが無いと何やっても駄目な典型。
337:デフォルトの名無しさん
10/03/26 04:36:59
速い言語で作ったら今度は Segmentation Violation が出まくりの糞言語とか言ってそう。
338:デフォルトの名無しさん
10/03/26 10:27:46
テキストボックス入力中に、ボックス直下に入力でマッチした候補をインクリメンタルで表示する部品はあるでしょうか?
googleの入力補てんみたいなものです。
自作の必要あり?
339:デフォルトの名無しさん
10/03/26 10:45:21
>>338
標準にはない。
原理的にはコンボボックスのエディターが持っているテキストが変更
されるたびに、その時点のテキストに応じてモデルが返す候補一覧を
変化させればよい。
例(ソース付き): URLリンク(terai.xrea.jp)
340:デフォルトの名無しさん
10/03/26 13:24:56
>>334
Swing以外で、サクサクで見た目も良いツールつくれるなら、そっち使えば良い。
無能ほど他人のせいにしたがる。
しかも無能は自分の無能さに気づく能力も無い。
341:デフォルトの名無しさん
10/03/26 22:37:45
>>334
オープンソースにして公開すれば、
誰かが高速描画仕様に修正してくれるんじゃないかな。
ここには有能な人も多いみたいだし。
俺は嫌だけどね。
342:デフォルトの名無しさん
10/03/27 04:10:43
価値有るものじゃないと弄る気にも成らないけどな。
金払ってプログラマに拘束化してもらうのが確実。
343:デフォルトの名無しさん
10/03/27 07:36:53
他人を無能呼ばわりする奴が、
どの程度描画を高速化できるのか興味あるね。
さぞかし有能なコードを書いてくれるんだろうよ。
まずはソースをうぷだ。
344:デフォルトの名無しさん
10/03/27 09:19:03
俺は、この前このスレじゃないがソースうpしたけど、
ソースについて何の評価も貰えなかった・・・
そんな俺は腐ったミカンですか?
345:デフォルトの名無しさん
10/03/27 09:21:54
2ch ではマジレス・ソースうpするとまともにコメントつかないのが常識
346:デフォルトの名無しさん
10/03/27 09:27:07
ヒットアンドアウェーの チンカス ばっかだしな。
347:デフォルトの名無しさん
10/03/27 10:29:57
ソースをうぷったのにコメントを戴くことができなかった7つの理由
1.閲覧者のレベルが低かった
2.閲覧者の得意分野が違っていた(学校、仕事、趣味、ゲームetc.)
3.問題のある部分は見当たらなかった
4.ソースが巨大すぎて読む気が失せる
5.あまりにも低レベルすぎて指摘のしようがない
6.誰も見てくれなかった
7.その他
>>344
もう1度ここでうぷってみたら?有能者が応えてくれるんじゃないの
348:デフォルトの名無しさん
10/03/27 10:59:18
有能な人のソースを見てみたい
凄く速いのかな
349:デフォルトの名無しさん
10/03/27 11:03:42
宿題スレでお礼がくると
あぁネタだったんだなぁ
と思ってしまう
350:デフォルトの名無しさん
10/03/27 11:16:44
>>347
1、3、4、6はありえないと思う。
5は、そこまでひどくないとは信じたい
JAVAの勉強で作ったゲームなんだけど・・・
何度も晒すのは、ちょっと気が引ける・・・
ゲームは、まぁまぁおもしろいとは言ってくれたけど
351:デフォルトの名無しさん
10/03/27 11:25:43
まずはソースをうぷだ
話はそれからだ
352:デフォルトの名無しさん
10/03/27 11:25:53
あえて本気を出さないソースがうけるのか
353:デフォルトの名無しさん
10/03/27 11:46:16
これがうpしたゲームだけど・・・
URLリンク(toku.xdisc.net)
かなり不器用な処理してると思うけど、
まだまだ勉強中なので
いろいろ教えてもらえると嬉しい
354:デフォルトの名無しさん
10/03/27 12:20:48
スネークゲームか。
implements Config はやめて static import
NyoroArrayは事実上双方向リストなので、LinkedListあたりを利用
できないか考える。
Foodのもつ画像は、 static イニシャライザを使って、クラス全体で
10個持てばよいと思う。
今はノーマルエサがダイエットエサの出現状態まで管理までしている
ようだけど、ノーマルエサとダイエットエサは同時に各1つしか出な
いみたいなので、ゲーム世界側でそれぞれ1つずつ持つのがよいのでは
ないだろうか。
では、ごはんー。
355:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/03/27 14:18:47
ゲームの出来ない(コンピュータにも余裕で負けるよ)、俺にはさっぱりルールが分からなかったorz
可愛い女の子の絵だけで、お腹が一杯です
357:デフォルトの名無しさん
10/03/27 14:20:09
ゲーム本体の良し悪しはともかくとして、
問題にしてるのはマップエディタの方では?
358:デフォルトの名無しさん
10/03/27 14:44:25
uploaderはこちら
URLリンク(toku.xdisc.net)
359:デフォルトの名無しさん
10/03/27 14:49:47
>>353
向こうのスレで「面白い」とだけコメントしてたものです…
ぱっと見て気になったのは>>354で書かれてる最初のものですね。
あと全般的に、定数は自分だったらEnum使うかな。
Enum使うと振る舞いを持たせられるので夢がひろがりんぐ。
Nyoro2のメインメソッドの中身はSwingUtilities.invokeLater使ってEDTで呼ぶべきでしょうね。
URLリンク(java.sun.com)
それとJava関係ないですけど、NetBeansのnbproject/privateディレクトリ以下は
配布しない方が良いかもです。
URLリンク(netbeans.org) の"NetBeans プロジェクトファイル"
360:デフォルトの名無しさん
10/03/27 14:53:18
>>357
ゲームの人とマップエディタの人は別人じゃないの?
361:デフォルトの名無しさん
10/03/27 15:00:44
ゲームクリアしたら女の子とのセクロスシーンが出てくる、
なんてことになったらウレシくてティンコ旅立ち
362:デフォルトの名無しさん
10/03/27 15:03:27
マッポエディッタがうぷられて、マッポvs有能人の壮絶なバトル、ってなことになったら面白いのになあ
363:デフォルトの名無しさん
10/03/27 16:18:30
マップのセルが全部JButtonとか、グリッドがJTableとか、
そんなとこをエスパー予想。
…いや、Wizardryレベルのマップならそれで十分なんだけどさ
364:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/03/27 21:11:34
誰か、statusという名前が駄目でpressedならオケという理由を教えてくれまいか
ていうか、変数名に動詞を使うのにはめちゃくちゃ違和感がある
俺の場合、動詞から始まる名前はメソッドにしか使わないからなぁ
366:デフォルトの名無しさん
10/03/27 21:20:09
>>365
status = true とか return status とか見てもなにしてんのかわかりにくいだろ。
あと、 pressed は動詞じゃないから。
367:デフォルトの名無しさん
10/03/27 21:28:38
statusでは「何の」状態なのか分からない
pressedなら押したかどうかなんだなと分かる
まあキーなら押したかどうかしか状態がないだろという話もあるが
メソッドと命名の方向性は合わせた方がいいと思う
368:デフォルトの名無しさん
10/03/27 21:48:11
そういうことか…レスサンクスコ。
369:デフォルトの名無しさん
10/03/27 21:54:16
とりあえずJavaコーディング規約おいときますね。
URLリンク(www.objectclub.jp)
これ以上の命名法の話題は命名系のスレでやった方がいいんじゃないかな。
370:334
10/03/27 21:56:30
別にこまってないし、ソースupする気なんてないよ
遅い理由はJTableのレンダラにJLabelを使っているからなんだけど手を抜こうとしたらこれが都合よかったのでそうしてるだけだし。
にしても、あとはSwingのせい。
DataGridView@C#でやったらどんだけ高速だったことか。
見た目がいびつなのは、レイアウトマネージャーの動作がキチガイだから。
SWTのGridLayoutが神レイアウトだと思うんだけど、これのSwing版発見したのでつかってみて
URLリンク(code.google.com)
掲示板添付のzipが使えた。
正式にはどこで公開されているのか知らん。英語わからんし。
371:デフォルトの名無しさん
10/03/27 22:01:10
俺はSwingを使うときは無条件でSwingUtilities.invokeLater()を使ってたけど、
よくよく考えると結構重要なのかも
URLリンク(wisdom.sakura.ne.jp)
353のソースは、まあ、よくできてるんじゃね?
俺も初心者レベルなんで詳しいことはよくわからんがw
あとは…
ifが連なってるところはswichi にしたほうがいいとか(一般的には条件分岐よりも
ジャンプのほうが速いはず…だけどこれはコンパイラ依存か)、
女の子の画像は裸のほうがいいとか、そのくらいしかわからん。
個人的に、画像の直貼り付けは遅そうな感じがするけどどうなんだろうね。
(もちろん、速度を気にしないなら直貼り付けで全く問題ないけど)
画像データを配列に読み込んで、その配列を処理したほうが速い気がするんだけど、
それをやるとかなりソースが複雑になりそうだなあ。
372:334
10/03/27 22:06:05
連続書き込みすまん
swtgridlayoutで見た目は完全に改善された。かなりオススメ
で、とりあえず俺はJavaもSwingも上級レベルで使えると自負してるけど
これで(公開できるほど)まともなアプリをつくるのは
不可能または、並々ならぬ努力が必要と思うので
本気でみんなが何をつくっているのか気になる。
何かまともなもん作ったって事例があったら教えてくれ。
373:デフォルトの名無しさん
10/03/27 22:08:09
>>371
あまり関係ないけど、コンパイラ依存じゃなくてVM依存だと思うw
374:353
10/03/27 22:55:33
おぉ!沢山のレスありがとうございました!
こんなに沢山アドバイス貰えるとは思ってなかったよ
知らない単語も出てきてるし、参考URLまで貼ってくれてるしで、
いろいろ調べて勉強してみます。
ありがとうございました
ちなみに、トップの絵書いてくれた友達にも、
JAVA質問スレと、このスレで絵についてのレスされてる事を教えた所すごく喜んでましたw
375:デフォルトの名無しさん
10/03/28 00:03:48
>>364
で、あんたは>>347のうちどれなの?
376:デフォルトの名無しさん
10/03/28 00:05:46
バカでも出来るコードレビューには食いつきが良いのなw
377:デフォルトの名無しさん
10/03/28 00:05:59
>>370
> 別にこまってないし
じゃあなんで>>198から1ヶ月もこのスレで頑張ってるの?
378:デフォルトの名無しさん
10/03/28 00:07:45
>>376
で、あんたは>>347のうちどれなの?
379:デフォルトの名無しさん
10/03/28 00:10:32
>>378
誰と勘違いしてるの?バカなの?
380:デフォルトの名無しさん
10/03/28 00:21:39
また猛牛が暴れだしたようだな
381:353の友達
10/03/28 00:21:55
>>361さんのために300点クリア絵を描きました><*
皆さんのレス嬉しかったです><*
ありがとうございました><*
URLリンク(a-draw.com)
382:デフォルトの名無しさん
10/03/28 00:24:27
うpするにしてもレベル低いソースの方が食い付きがいいよね
383:デフォルトの名無しさん
10/03/28 00:29:38
>>381
なんだコイツ
受け狙いのつもりなのだろうか
384:デフォルトの名無しさん
10/03/28 00:31:30
くだらねぇ話でスレ延びてんな。Swing 関係ねぇじゃん。
もう Java 総合スレで統一したらどうだ。
385:デフォルトの名無しさん
10/03/28 02:36:03
嫌あっちで反応悪くて、こっちでうpしたら、みんな気合い入れてコメント下から、当人らが興奮したってだけだろ。
どうせswingスレは普段過疎ってるから有効利用なんじゃねw
386:334
10/03/28 04:26:13
>>377
おおおぉ、凄いチェック力。>>198書いたのすっかり忘れてた
このスレで頑張ってるというか、グチ&みんなが何つくってるのか興味で書き込みしてるだけなんだけど
.NETが性能も開発効率も見た目も圧倒的に良いのに、
いまだSwingにこだわる君たちの思考に興味がある
387:デフォルトの名無しさん
10/03/28 04:33:39
>>386
.NET って UNIX 系 OS や Mac とかでも動いたっけ?
388:デフォルトの名無しさん
10/03/28 10:43:44
春だなあ
java.netでもsf.netでもいいからSwingアプリ探してみなはれ。
389:デフォルトの名無しさん
10/03/28 15:31:24
monoの再現度がまだまだ。
というかwinでMS製言語使うにしてもVC++だと思う。
390:デフォルトの名無しさん
10/03/29 00:42:14
Swing と比べるなら .NET ではなくて
Windows Forms や WPF じゃなかろうか。
391:デフォルトの名無しさん
10/03/29 21:15:04
JDK1.5なのでSwingWorkerが使えません。
この場合
1秒間隔でTimer起動→スレッド起動→バックエンド処理→待ち受け画面表示→イベント処理終了でswingスレッドを戻す
→バックエンド処理終了→Timerのstaticに終了フラグセット(継承して持たせた)
→Timer起動で呼ばれる→フラグ立ってるので待ち受け画面非表示
こんなことしないといけないんすかね…
あ〜1.6で書きたい。ただ1.5以上サポートなんで1.6依存でかけない…
392:デフォルトの名無しさん
10/03/29 21:42:41
ライセンスとかに問題がなければ
SwingWorkerをパッケージに含めてしまうというのも可能かも。
あるいは似たようなクラスを自分で書くとか。
393:デフォルトの名無しさん
10/03/30 00:33:05
>>370
1000x1000程度のJTableなら、全セルにイメージ貼り付けても、
スカスカ動くがな。
大方、全セルにJLabelをnewしてつっこんだとかだろ。
394:デフォルトの名無しさん
10/03/30 01:36:30
>>391
URLリンク(swingworker.dev.java.net)
This project is a backport of SwingWorker included into 1.6.
395:デフォルトの名無しさん
10/03/30 10:10:40
>>394
1.5で使えるとかって書いてないんですけど使えるものなんですかね?
396:デフォルトの名無しさん
10/03/30 10:20:14
たいていの質問回答スレには、最初の一行しか読まずに回答始めるあわてんぼさんが常駐してる。
397:デフォルトの名無しさん
10/03/30 11:09:30
This project is a backport of SwingWorker included into 1.6.
を訳してみろ…
398:デフォルトの名無しさん
10/03/30 11:17:06
あ… もし backport の意味がわからなかったら用語辞典とかで調べるといいよ
URLリンク(e-words.jp)
399:デフォルトの名無しさん
10/03/30 11:35:50
意味が分かりました。すみません。躍起になって1.5ばかり探してました・・・
400:334
10/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:デフォルトの名無しさん
10/03/31 00:40:49
きったねー
402:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/03/31 04:22:34
>>393 は逃げたか…
404:デフォルトの名無しさん
10/03/31 05:24:22
単に図星だったから、慌ててソース書いただけだろw
405:デフォルトの名無しさん
10/03/31 06:55:43
そう思いたいんですね
406:デフォルトの名無しさん
10/04/01 08:45:49
最初から示さなかった時点で負けとしか。
後だし乙。
407:デフォルトの名無しさん
10/04/01 15:31:23
JTreeの要素の並び順ってJtreeの機能で設定することができるでしょうか?
それとも登録の前にソートして、ソートされた順番で登録しないといけないでしょうか?
408:デフォルトの名無しさん
10/04/01 16:07:36
>>407
TreeNodeに対して children() を呼んだときにソート済みで返ってくればよいと思う。
UIよりはモデル側の問題。
409:デフォルトの名無しさん
10/04/01 20:20:00
>>406
誰と戦ってんのおまえw
410:デフォルトの名無しさん
10/04/02 02:39:22
>>409
お前だろ、粘着乙www
411:デフォルトの名無しさん
10/04/06 23:17:26
javafx を始めたいんだけど、入門書ってありますか?
412:デフォルトの名無しさん
10/04/07 04:06:16
javafxは辞めておいたほうが。
413:デフォルトの名無しさん
10/04/07 04:32:26
入門レベルは英語ばっかだね。
414:デフォルトの名無しさん
10/04/08 03:31:16
LaboBrowser っての使ってみたけど全然ダメだの。
マトモに表示できるのは Google トップくらいだ。
415:デフォルトの名無しさん
10/04/08 03:56:42
Lobo? あれは JEditorPane よりもマシという程度
416:デフォルトの名無しさん
10/04/08 04:05:08
一般的なブラウザ >> [実用性の壁] >>> Lobo >> Swing >>>> HotJava
417:デフォルトの名無しさん
10/04/08 07:42:00
JWebPaneまだ〜?
418:デフォルトの名無しさん
10/04/08 22:47:25
Flying Saucerの出番か!?
419:334
10/04/11 12:07:15
おひさしぶり!
んでもって君らが何つくってんのか教えてくれんの?
420:デフォルトの名無しさん
10/04/11 22:24:28
JaneStyleとかすごい恥ずかしいUIだけど公開されてんぞ?
421:デフォルトの名無しさん
10/04/12 20:46:27
a
422:デフォルトの名無しさん
10/04/13 13:09:55
window自体に最優先のキーイベントを登録したいのですが、
要は、どのパネル、どのコンポーネントを開いていても呼ばれるイベントです。
WindowにWHEN_IN_FOCUSED_WINDOWのイベントをgetActionMap().put(action, action)するみたいな感じです。
423:デフォルトの名無しさん
10/04/13 13:10:50
ほほう。それでそれで?
424:デフォルトの名無しさん
10/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日掛けて調べました。。。
もし宜しければ、私のブログの応援クリックをしてもらえませんか?
URLリンク(study-blog.jugem.jp)
425:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/05/01 20:59:02
JTableに行ヘッダを追加しようとJScrollPane#setRowHeaderView()でJListのインスタンスを渡しました。
行ヘッダは追加されたのですが、
行ヘッダのJListでカーソル移動やマウスドラッグをするとJTable側がついてこず
JListだけがスクロールします。
JTable側も連動させるにはどうすればよいのでしょう??
427:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/05/03 09:12:47
>>424
削除ガイドライン違反
8. URL表記・リンク
宣伝・罠・実行リンク
・明らかに宣伝を目的としたリンク・クリックや訪問で課金が発生するもの等は、宣伝掲示板以外では削除します。
429:デフォルトの名無しさん
10/05/03 13:13:52
こんなところで宣伝したら馬鹿に突撃されるぞ。
430:デフォルトの名無しさん
10/05/03 14:48:00
専門板なら平気だよ。
431:デフォルトの名無しさん
10/05/03 23:02:19
>>428
悪気はないんですけどね。
まぁ無職で時間にゆとりがあるので、色々やっとるという訳です。
とりあえずクリックした人はいないようですw
どうにかやっていく方法はないものでしょうか。
1.質問が出る。
2.アフィリエイトをクリックしてもらう。(1クリック数円)
3.解答をする。
という形式にしたいなぁと思っております。
>>429,430
基本的にプログラム板は過疎っていますからね(^^;
432:デフォルトの名無しさん
10/05/03 23:03:37
↑スレ違い。適切なスレでやってください
433:デフォルトの名無しさん
10/05/03 23:33:06
>>432
そこを何とかお願いします。
434:228
10/05/04 07:47:44
じゃあ俺は>>424のブログ?のコメントをエロサイトの宣伝に使わせてもらうよ。
だめ?そこを何とかお願いします。
435:デフォルトの名無しさん
10/05/04 09:07:07
>>434
あ、おはようございます。Give&Takeの精神でお願いします。
436:デフォルトの名無しさん
10/05/04 12:46:21
宣伝嵐報告してきておk?
437:デフォルトの名無しさん
10/05/04 12:53:21
>>436
>>422,426にも意見を聞きたいところですけど。
438:426
10/05/05 12:40:32
>>427
できました!つたない質問で的確な回答を頂けてとても感謝しています。
クリックしておきましたよ(^^
439:427
10/05/05 20:19:49
>>438
こちらこそ、ありがとう。
迷惑でなければ今後も質問があれば調べて回答したいと思います。
440:デフォルトの名無しさん
10/05/10 22:39:00
1つのJPanelのインスタンスを、複数のJFrame上に同時に描画するにはどうすればよいですか?
441:デフォルトの名無しさん
10/05/10 23:05:40
シリアライズしてネット越しに垂れ流してデシリアライズとか
442:デフォルトの名無しさん
10/05/10 23:57:41
>>441
それじゃ「1つのインスタンス」にはならないじゃん。
>>440
共有すべきはmodelであってviewじゃない。
443:デフォルトの名無しさん
10/05/11 00:04:46
____
/ \ /\ キリッ
. / (ー) (ー)\ 共有すべきはmodelであってviewじゃない
/ ⌒(__人__)⌒ \
| |r┬-| |
\ `ー'´ /
ノ \
/´ ヽ
| l \
ヽ -一''''''"~~``'ー--、 -一'''''''ー-、.
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
444:デフォルトの名無しさん
10/05/11 00:33:59
巣に帰れw
つ スレリンク(tech板)
445:デフォルトの名無しさん
10/05/11 22:36:26
>>443-444
ワロタ。
446:デフォルトの名無しさん
10/05/12 17:37:21
>>440
描画する数だけインスタンスが必要。
447:デフォルトの名無しさん
10/05/14 00:08:32
なんでviewじゃ駄目なんですか?
448:デフォルトの名無しさん
10/05/14 01:29:42
>>447
GUIコンポーネントは親を1つしか持てないから、複数のコンポーネントで1つの子を共有することができない。
参考: java.awt.Component とか java.awt.Container のソース。
449:デフォルトの名無しさん
10/05/14 01:31:59
てっきりイベントがらみで駄目なのかと思った
450:デフォルトの名無しさん
10/05/14 10:36:09
>>449
それもあるから親を1つしか持てないようになってるんだろう
451:デフォルトの名無しさん
10/05/25 10:07:14
ルックアンドフィールは、複数同時には使えない?
JFrame 2つつくって、片方は、javax.swing.plaf.metal.MetalLookAndFeel
もう片方は、UIManager.getSystemLookAndFeelClassName() でとってきたやつを
適用する、みたいなことはできないようになってるってことでいい?
452:デフォルトの名無しさん
10/05/25 10:14:23
JFrame を表示する前に都度 UIManager#setLookAndFeel()、
SwingUtilities#updateComponentTreeUI() で指定してやれば
見た目は別々になるんじゃないの。全くお勧めは出来ないが。
453:デフォルトの名無しさん
10/05/25 10:28:24
MetalLookAndFeelで1.1や1.2のころの昔の紫色のUIに変更するにはどうするんですか?
454:デフォルトの名無しさん
10/05/25 10:32:22
JFrame.setDefaultLookAndFeelDecorated(true);
JDialog.setDefaultLookAndFeelDecorated(true);
の事か?
455:デフォルトの名無しさん
10/05/25 18:33:26
>>440
URLリンク(www.javakb.com)
このページの2番目のサンプルコードがとても参考になると思います。
>>451
VMを2つ起動という手も・・・ないか。
456:デフォルトの名無しさん
10/05/25 20:26:49
>>451
できるけど挙動が狂うって話があった気がする。
457:デフォルトの名無しさん
10/05/25 20:33:23
>>452 >>456
基本できないよな 少なくともAPI作り手はそんなこと想定しなていようだな
サンキュー
458:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/05/30 00:27:38
>>459
frame1 のクローズイベントで切り離す。
461:デフォルトの名無しさん
10/06/06 22:28:00
JTable でセルをdbl clickだんどするとそのセルをエディットできますよね。
これを無効にしたいんですがどのAPIでしょうか。
それにしてもJTableは複雑ですよね・・・
462:デフォルトの名無しさん
10/06/06 22:53:53
日本語でおk
463:デフォルトの名無しさん
10/06/06 23:12:24
JTableは本当に複雑ですけど1つのコンポネントにあれこれ機能を詰め込みすぎって感じがします。
dbl clickやF2でセルを編集できるようになりますがこれをoffにするにはどうするんですか?
464:デフォルトの名無しさん
10/06/06 23:49:21
JTable.setDefaultEditor()にnullを渡しておくのはどうだろう。
本来は自作TableModelを作るべきだと思うが。
465:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/06/07 00:41:38
ああ、誤解を招きかねないですが、spiなら問題ないですがswingのようなui,skinableではspiや
plubableじゃなくてcssや、顧客一人一人に合わせたskin(script)のようにもっと軽く設定できない
(つまりskin,look,feelingについては固定の設定は存在しないという設計思想)と、UI開発者は敬遠するかなって思います。
webクリエーチャ達の髪の毛の軽さと同じく、JEditorPaneのhtmlエディタもしかりです。
467:デフォルトの名無しさん
10/06/07 05:26:11
>>465-466
SwingはJavaプログラマのためのライブラリです。
htmlやcssの方が得意な人のためのライブラリではありません。
SwingにhtmlやcssでUIを設定できないと文句を言うのはお門違いだと思います。
468:デフォルトの名無しさん
10/06/07 13:05:58
正確に言うとjavaじゃ無くてjvmプラットのUI
469:デフォルトの名無しさん
10/06/07 15:55:54
xmlならsynthがある。
JEditorPaneは最初はやる気満々だったけど扱おうとするドキュメントが方言だらけで投げた。
というかここら辺のフォローはSwing labの管轄なんだが。
まあ俺々思想が強すぎて>>465の意図がよく分からんが。
470:デフォルトの名無しさん
10/06/07 16:02:48
synthはswing uiに新しい機能を定義したり追加したりするものじゃないですよね・・・
471:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/06/07 16:42:55
ブログでやれ
473:デフォルトの名無しさん
10/06/08 11:39:06
キーバインドの変更だけならInputMap使うほうが素直では。
474:デフォルトの名無しさん
10/06/08 21:52:13
htmlしかコーディング出来ないスキルでguiやろうってのが無謀。
475:デフォルトの名無しさん
10/06/26 19:50:11
ahe
476:デフォルトの名無しさん
10/07/02 10:14:55
低速だとはおもわない
477:デフォルトの名無しさん
10/07/02 13:15:39
伝統だから付いてるだけだよ。
# 「Java 高速 GUI SWT」に対する皮肉も込めて…
478:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/07/03 09:30:08
hideしてからdispose
480:デフォルトの名無しさん
10/07/03 18:04:51
1.5以降ではhide()は推奨されないメソッドになっているため、
JavaDocの通り、setVisible(false)をしてからとか、
windowクラスのtoBack()をしてからdispose()をするなど、
色々と試してみたんですがうまくいきません。(モーダルなのでtoBack()は効くかもわかりませんが(汗))
あとは、windowsの問題かと思い、VM引数のnoddraw=trueでやってみたりもしたんですがダメでした・・
奥が深いですね・・・
481:デフォルトの名無しさん
10/07/03 18:19:52
それが再現出来るような説明を付けてバグ報告
482:デフォルトの名無しさん
10/07/03 23:55:02
3番目のJDialogをEventQueue.invokeAndWait()経由で開いてみるのはどうだろう。
483:デフォルトの名無しさん
10/07/04 18:14:32
先回りエスパーでinvokeLaterと修正してみるテスト
484:デフォルトの名無しさん
10/07/04 23:58:22
SwingUtilsですね
確認してみます。
色々と助言ありがとうございます。
解せないのは、
オーナーを指定した場合と、していない場合の動作ですが
まだわからないことが多いので勉強してみます。
485:デフォルトの名無しさん
10/07/09 12:48:41
Apache pivotのWTKって、Swingの補完に使えんのかな。
最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5395日前に更新/117 KB
担当:undef