Java標準低速GUI 6 AW ..
[2ch|▼Menu]
635:デフォルトの名無しさん
07/12/15 19:19:05
ソラリスのMotifはそれなりにさまになってる感じもあるけど
Winでみるとダサイ・・・ってまったく同じMotifというわけでもなくMotif風というべきか。

636:デフォルトの名無しさん
07/12/15 19:25:33
MacでCtrl+クリックで右クリということは、WinでCtrl+左クリに機能を割り当てていると、
Macでは困ったことになる・・・のだろうな・・・

637:デフォルトの名無しさん
07/12/15 19:28:20
実機が手元にないから、あれだけど。
SolarisのMotifは、Sunのハードの色のグレーと紫と一緒になって、
初めて調和する感じがする。
だから、他のハードで単体でMotifのLAFだけを見るとかっこ悪さしか感じない。


638:デフォルトの名無しさん
07/12/15 19:43:52
LAFというか視覚デザイン系は深入りすると底なし沼だからなぁ・・・・
3Dソフトも今はなき?シリコングラフィックのあの癖のある筐体でみるのと、
DOS/Vの筐体でみるのではやっぱ違ってみえるよねw

639:デフォルトの名無しさん
07/12/15 19:44:18
いろいろ考えるとInputMapはFactoryクラスとかで一括管理すべきなんだろうなと思ってきた。

640:デフォルトの名無しさん
07/12/15 19:44:55
そういえばJTableはCtrl+左クリで複数選択機能があったはずだけど、Macだとどうなるんだっけ。

641:デフォルトの名無しさん
07/12/15 19:49:16
>シリコングラフィックのあの癖のある筐体でみるのと、
>DOS/Vの筐体でみるのではやっぱ違ってみえるよねw
それはありますねー。
Sunのマシンにsunの4つつながったロゴがないだけでも、
Motifは別物に見えそうだし。

データセンターでMacのハードやUIがあったりしたら、
違和感ありそうだし。。。

642:デフォルトの名無しさん
07/12/15 23:39:08
>>619
質問 ↓のコードでもmacとwindowsで兼用できなかったの??
KeyStroke.getKeyStroke(KeyEvent.VK_C, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask());

643:デフォルトの名無しさん
07/12/16 02:36:30
619です。
>質問 ↓のコードでもmacとwindowsで兼用できなかったの??
>KeyStroke.getKeyStroke(KeyEvent.VK_C, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask());
Toolkit#getMenuShortcutKeyMask()メソッドは初めて知りました。
ありがとうございます。

興味本位で聞いただけです。
実際にやってみていない。というかmac環境がないので。試せません。。

URLリンク(tinyurl.com)のあたりをざっとみると、
Ctrl+Cとかコピペ、Ctrl+F(検索),Ctrl+S|Oあたりは同じようですが。
Ctrl+Y(やり直し(Windows))の記載が見あたりません。
ちょっと前に、どこかでWindowsのCtrl+YはmacでCtrl+Shift+Zと見たんですが、
記憶違いかガセだったのでしょうか。
でも、macにはUndoの反対のキーバインドがないとは思えませんけど。

でも仮にmacにCtrl+Shift+Zがあるとすると、
Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()だと、
引数と戻り値的に適切な値が取得できるとは考えられないですが。

それとgetMenuShortcutKeyMaskで適切な値が取得できるのであれば、
UIクラスのinstallUI()(すくなくともJTextComponentのサブクラスのUI)では、
InputMapにデフォルトで登録しておいて欲しいところです。

macをさわれる人にgetMenuShortcutKeyMask()の結果を聞きたいです。
いつになるか分かりませんが、私がmacを実行できる機会があれば、
結果を報告します。

644:デフォルトの名無しさん
07/12/16 03:30:19
Mac OS X 10.5.1 です。

% uname -a
Darwin dorado.local 9.1.0 Darwin Kernel Version 9.1.0: Wed Oct 31 17:46:22 PDT 2007; root:xnu-1228.0.2~1/RELEASE_I386 i386 i386 MacBook2,1 Darwin

% java -version
java version "1.5.0_13"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_13-b05-237)
Java HotSpot(TM) Client VM (build 1.5.0_13-119, mixed mode, sharing)

System.out.println(Toolkit.getDefaultToolkit().getMenuShortcutKeyMask());
System.out.println(Event.ALT_MASK);
System.out.println(Event.CTRL_MASK);
System.out.println(Event.META_MASK);
System.out.println(Event.SHIFT_MASK);

結果は

4
8
2
4
1

Metaキーってことですかね。


645:デフォルトの名無しさん
07/12/16 03:36:27
Mac OS XではCommand+Cとかになるからね。

getMenuShortcutKeyMaskの戻り値はEvent.META_MASKになる。

CommandキーはWindowsだとWindowsキー。

646:デフォルトの名無しさん
07/12/16 17:50:37
619です。
macの結果を教えてくださりありがとうございます。

macのショートカットキー一覧を見ると
「コマンド + C →「編集」メニュー コピー」と記載されているので、
つまり、getMenuShortcutKeyMask()を使用できそうということでしょうか。

ところで、macにはWindowsでいう「やり直し(Ctrl+Y)」
(元に戻すのを戻す?)は、ないのでしょうか。
私の言っている「Ctrl+Shift+Z」ショートカットキーは誤りですか?
たびたびすみませんが、時間がありましたら教えてください。

647:デフォルトの名無しさん
07/12/16 18:11:03
HIG(Human Interface Guidelines)
URLリンク(developer.apple.com)

Keyboard Shortcuts
URLリンク(developer.apple.com)

テキストエディット(メモ帳・ワードパッド)
GarageBand(作曲)
Pages(ワープロ)
Keynote(プレゼン)
Numbers(スプレッドシート)
BathyScaphe(2ちゃんねるブラウザ)
で見たら、「やり直す」はCommand+Shift+Zだった。


648:デフォルトの名無しさん
07/12/16 18:17:26
ちょっと古いけど
URLリンク(developer.apple.com)

やり直しはShift+Command+Zだね。

649:デフォルトの名無しさん
07/12/16 18:36:01
うお、Leopardでは「取り消す(cmd+Z)」と「やり直す(shift+cmd+z)」に変わったんだね。

プレビューではファイルメニューに、最後に保存した状態に戻す「元に戻す」があったりする。

650:デフォルトの名無しさん
07/12/16 20:20:32
>647さん
>648さん
>649さん
ありがとうございます。
URLリンク(developer.apple.com)
のTable 7-5を見ると(Redo(やり直し))Command-Shift-Zってことですね。

頂いた情報を総合すると、getMenuShortcutKeyMask()の戻り値が
Event.META_MASK(Commandキー)である。
やり直しはCommand-Shift-Zということですので、
コピーのキーバインディングに
KeyStroke.getKeyStroke(KeyEvent.VK_C, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask());
は、良いけど
undo,redoに
KeyStroke.getKeyStroke(KeyEvent.VK_Y, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask());
KeyStroke.getKeyStroke(KeyEvent.VK_Z, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask());
はNGということですね。

ということで、やはりプラットフォームごとにInputMapを用意する
必要があるということですね。
実装する予定はありませんが、勉強になりました。
面白かったです。





651:デフォルトの名無しさん
07/12/16 21:00:00
Swing標準のキーバインドってなかったっけ?
あったらそれで良いと思う。

あれはLAFで決まるんだっけ?

652:デフォルトの名無しさん
07/12/16 21:36:45
619です。

>Swing標準のキーバインドってなかったっけ?
swing.plaf配下のUI委譲のInputMap登録コードでは、
JListでの上下移動、JComboBox等の選択等の細かいものを除けば、
基本的に選択(JTableのセル選択,JTextComponentのテキスト選択)、
移動系(セルの選択位置移動、キャレットの移動)の
キーバインドしか登録されないのです。

undo,redoをはじめ、Ctrl+S,Ctrl+O等の、機能が実装されていないものに
関しては仕方がないにしても、JTable,JTextComponentでは、
printを実装しているにも関わらず、Ctrl+Pも登録されません。
ですから、標準のキーバインドはないのでは?と思っています。

まぁ、個別のOSのアプリケーションを熟知してませんが、
Gridやテキストエディタでの選択、移動のショートカットキーは、
各OSともほぼ共通なため、そのあたりは登録できるものの、
undo,redo等は、上記のような例があり、標準として登
録できないという事情があるのかもしれません。

でもSwing標準のキーバインドなんてあったとしても、
個人的には、ショートカットキーをバリバリ使う人にはストレスフルで
使いたくないし覚えたくないだろうと思いますが。

ちなみにLAF毎に、キーバインドを登録するようなコードが
それぞれのUIクラスのソースに無いのは先述のとおりです。


653:デフォルトの名無しさん
07/12/16 21:48:11
>>633

654:_
07/12/19 14:53:45
combodata = {"a", "b", "c","d"};

       ・
       ・
private void Combo1ActionPerformed(java.awt.event.ActionEvent evt) {


if (Combo1.getSelectedItem().equals("a")||Combo1.getSelectedItem().equals("b")){
Combo2.setEnabled(true);
}
else{
Combo2.setEnabled(false);
}

}

Combo1でaかbが選択された場合はCombo2が有効で
Combo2でcかdが選択された場合はCombo2が無効になるようにしたいのですが

上のやり方だとaを選ぶとCombo2は有効になるんですがaを選んだ後にcに変更すると
Combo2は無効にならずに有効のままになってしまいます.
同じようにcを選ぶと無効になるんですがその後にaを選ぶと無効のままになってしまいます.

これを直す方法を教えていただけないでしょうか?お願いします.

655:デフォルトの名無しさん
07/12/19 15:17:46
いくつか突っ込みどころがあるから最初からやり直した方が早い。

656:デフォルトの名無しさん
07/12/20 03:59:56
最初からやり直すというか、紙の上で状態遷移を考えた方がいい。
自分の言ってる矛盾に気付けるから。

657:デフォルトの名無しさん
07/12/20 08:13:43
>Combo1でaかbが選択された場合はCombo2が有効で
>Combo2でcかdが選択された場合はCombo2が無効になるようにしたいのですが

下のCombo2はCombo1の間違えだよね?

658:デフォルトの名無しさん
07/12/20 08:46:01
Combo1の間違えでした.

Combo1の状態に応じてCombo2の有効,無効が変化する
物をつくりたいんですが教えていただけないでしょうか

659:デフォルトの名無しさん
07/12/20 09:23:02
combo2.setVisible(false);
これでは駄目なの?

660:_
07/12/20 11:53:34
上のやり方だとaを選ぶとCombo2は有効になるんですがaを選んだ後にcに変更すると
Combo2は無効にならずに有効のままになってしまいます.
同じようにcを選ぶと無効になるんですがその後にaを選ぶと無効のままになってしまいます.
最初の選択では上手くいくんですが選択を変更すると変化してくれないんです。

661:デフォルトの名無しさん
07/12/20 12:45:54
まず、そもそもCombo1ActionPerformedメソッドが実行されてるのかどうかを確かめるんだ。
実行されてるなら、そのときCombo1.getSelectedItem()の値が実際は何になっているのかを確かめるんだ。

662:_
07/12/20 13:07:41
Combo1でaを選ぶとCombo1ActionPerformedメソッドが実行されてCombo1.getSelectedItem()の値は
aになっているんですがその後にCombo1でcを選んでもCombo1ActionPerformedメソッドが実行されてません

続けて選んだ場合にもCombo1ActionPerformedメソッドが実行されるようにするにはどうすればよいのでしょうか?

663:デフォルトの名無しさん
07/12/20 13:44:37
>>662
実行されてないのをSystem.out.println文で確認した?

664:_
07/12/20 16:00:32
確認しました
コンボボックスを変更してもActionPerformedにいってくれないようです

665:デフォルトの名無しさん
07/12/20 17:13:44
ActionListenerをやめて、ListDataListenerでComboBoxModelの変更を捕らえてみたらどう

666:デフォルトの名無しさん
07/12/20 19:48:40
おい、おまいら。
SwingApplicationFramework使ってますか?

667:デフォルトの名無しさん
07/12/20 19:57:08
使ってません。
あれって便利なの?

668:デフォルトの名無しさん
07/12/20 20:00:15
使ってみようと、Netbeansでプロジェクトを作った。
でも、どうするものかいまいちピンときていない。
Actionの管理をしてくれるのはいいんだけどちょっと縛りがきついなぁと感じた。
IDE無しでは複雑過ぎる気がする。

669:デフォルトの名無しさん
07/12/20 20:57:09
IDEなしでの比較だとアクションイベントを書くのはフレームワーク使ったほうが楽

アプリケーションの起動時と終了時に処理が書けるようになるとかはまぁあればあったでいいという程度

ただアノテーションつかってそれの名称を文字列で記述ってのは実行時エラーの可能性が増えるから
静的言語としてはどうかなぁというのが多い

Web方面のフレームワークもだけどね
Springとか最新版ですら1.4とか過去の互換性のために文字列を使うことが多すぎ
enumきっちりつかってくれよと思うことは多いかな

670:デフォルトの名無しさん
07/12/21 00:39:19
IDEなしということはGUIエディタも使わずにSwingのアプリを作るってこと?
本で紹介するサンプルコードならともかく、本格的なもの作るなら論外だと思えるけど。

671:デフォルトの名無しさん
07/12/21 00:42:07
別に普通に行われてることですが

672:デフォルトの名無しさん
07/12/21 00:42:42
そりゃお気の毒

673:デフォルトの名無しさん
07/12/21 00:47:11
本格的なものを作るならフォームエディタなんて使わないと思うが。

674:デフォルトの名無しさん
07/12/21 00:58:40
>>670
逆じゃないの?

675:デフォルトの名無しさん
07/12/21 01:00:16
IDEサポートなしと読めばいいじゃない。

676:デフォルトの名無しさん
07/12/21 01:02:26
>>673-674
はいはいwノシ

677:デフォルトの名無しさん
07/12/21 01:04:17
最近Javaから離れて久しいが、GroupLayoutはツールなしで使うのは
辛いと聞いたことがあるな。


678:デフォルトの名無しさん
07/12/21 07:36:04
670にとって本格的なものってのは
テキストフィールド2つにボタンひとつ。

679:デフォルトの名無しさん
07/12/21 08:34:45
IDEなしじゃ何もできないって人は、素のHTMLをいじれない人と「使えない」って点で似てる

680:デフォルトの名無しさん
07/12/21 11:03:39
ここでは何もできない人の話はしてないね。

681:デフォルトの名無しさん
07/12/21 11:05:03
>>678の煽りの程度の低さに絶望した
もっとまともな指摘があるのかと思った。

682:デフォルトの名無しさん
07/12/21 11:10:10
仕事でレイアウトマネージャって使っています?

683:デフォルトの名無しさん
07/12/21 11:12:54
使うよ

684:デフォルトの名無しさん
07/12/21 11:45:21
やっぱ普通使うよね
絶対座標ばっかだ・・・

685:デフォルトの名無しさん
07/12/21 12:29:53
>>679
効率よく出来るかどうかだから。
仕事ならDreamWeaverとか使わないでHTML生成してるアホはいらんね。

ペイントあればフォトショップ等いらないでしょ?とか
テキストエディタでPDF作れるでしょ?といってるのとかわらんな。

>>684
せめてNetBeansに付属の伝統のAbsoluteLayout使ってね。
Nullはだめだぞ。

686:デフォルトの名無しさん
07/12/21 12:52:28
親切な香具師だな。
土を手で耕したいという土民なんかほっとけばいいのに。w

687:デフォルトの名無しさん
07/12/21 12:57:29
なんかバカがいるな。

688:デフォルトの名無しさん
07/12/21 13:33:04
仕事ではGridBagLayoutが基本かな・・・
NetbeansのGridBagLayoutのエディタが無いと仕事にならんね・・・・
もうちょっと進化してくれても恨まないけど・・・・

複数のレイアウトマネージャを組み合わせて、
がちっと作り込むのは実はむしろ趣味のほうだったりする。
それでも、GridBag,Groupを手で書くのは調整くらいはできても、まぁ正直無理。

689:デフォルトの名無しさん
07/12/21 13:37:50
レイアウトマネージャの組み合わせはわりと普通に使う

ただ、GropuLayoutがでてしまったおかげでほとんどそれ1本でいけるようになっちまった

690:デフォルトの名無しさん
07/12/21 13:47:57
GropuLayoutはいいよね。使いたい。
でもそのためにはJavaのバージョンを6にしないとだめなんだよなー
まだ1.4だしなー
先は長いな・・・

691:デフォルトの名無しさん
07/12/21 13:50:37
GropuLayout

692:デフォルトの名無しさん
07/12/21 13:58:22
パッケージが違っていいのなら1.4から使えた希ガス。
5.0からだったかな?

来年登場予定のJavaSE7がでると1.4は保守されなくなるから。
保守契約結んでいるなら5.0以上でも動くようにしていったほうがいいね。

693:デフォルトの名無しさん
07/12/21 16:55:49
1.4はとっくにEOL。jdk7が出てから死ぬのは1.4.2

694:デフォルトの名無しさん
07/12/21 19:39:20
GroupLayoutが出たときにEclipseからNetBeansに乗り換えようかなと考えたけど
GroupLayoutが、考え方が非常に明快な上に
頭で考えたことを素直に反映できる優秀なレイアウトだったので、やめた

695:デフォルトの名無しさん
07/12/21 19:40:22
なんじゃそりゃ

696:デフォルトの名無しさん
07/12/21 19:45:29
難読化

697:デフォルトの名無しさん
07/12/21 19:50:41
IDEなしじゃGUIも扱えない奴ってどうなん?
JTableとかテキストフィールドで再現してそう

698:デフォルトの名無しさん
07/12/21 19:56:51
それはないだろ

699:デフォルトの名無しさん
07/12/21 20:16:43
無知の自覚がない無知は無知のまま放置がベスト

700:デフォルトの名無しさん
07/12/21 21:17:20
>>670
GUIエディタは便利だけど、業務アプリでそういうのでサックリ作っちゃうと
後々火を吹くから俺のPjでは使わない。

>>685
イタイな

701:デフォルトの名無しさん
07/12/21 21:46:14
GroupLayoutってさ、vGroupとかhGroupとか使ってコンポーネントのレイアウトを決めるわけだけど、
なんか冗長な記述だよな。これは仕方ないのか?

702:デフォルトの名無しさん
07/12/21 21:46:20
>>700
GUIに頼らずにどこまでできるかで、決定的な差が出る場面ってあるからね。
このスレではアマチュアが多いのか、あまり良く分かってない人が多いようだけど。

703:デフォルトの名無しさん
07/12/21 22:05:17
>>700
えぢたを使って火を噴くって例えばどんなの?

704:デフォルトの名無しさん
07/12/21 22:21:03
ロジックを画面実装で埋め込ませなければ大丈夫じゃないか?
ウチではハンドラをあとからインジェクションする仕組みで使ってるが・・・

705:デフォルトの名無しさん
07/12/21 22:24:13
>>704
確かにそうだね。
完全にGUI担当者がデザイナと化してくれれば問題はないよね。
あとは、GUI担当者が皆一様の作法を身につけてくれることが重要かな。
そのためにもGUIデザインのためのフレームワークみたいなものは欲しいね。

706:デフォルトの名無しさん
07/12/21 22:27:10
SwingApplicationFramework

707:デフォルトの名無しさん
07/12/21 23:59:58
デザイン関係ない

708:デフォルトの名無しさん
07/12/22 06:26:42
GUIエディタ使って火噴くって、どんだけ低レベルなんだよ

709:デフォルトの名無しさん
07/12/22 07:39:23
>>708
おまえ程低くないと思うよ。

710:デフォルトの名無しさん
07/12/22 08:06:29
煽りあいしかできないのか。ちょっとは期待してたんだが。

711:デフォルトの名無しさん
07/12/22 12:13:06
>>706
それはどっちかというとGUIアプリの処理手順をフレームワーク化してるよね
ちょっとわかりにくいかもだけど、俺がいいたいのは、「GUIデザイン」部分のフレームワーク。
そういうのがあったらいいなぁなんてオモタわけ。
うーん伝わらないか。。。

712:デフォルトの名無しさん
07/12/22 12:45:00
>>700をはじめとして釣りがまざってるので注意

713:デフォルトの名無しさん
07/12/22 15:44:41
IDEがないと何も出来ません><ってやつが大勢を得る事なんてないから黙ってようね

714:デフォルトの名無しさん
07/12/22 16:01:58
原因不明のバグが出たらとりあえず全部調べるんじゃね

715:デフォルトの名無しさん
07/12/22 16:22:38
IDEていうかGUIビルダみたいなRADのこと言ってんだろ湧いて来る厨は。

716:デフォルトの名無しさん
07/12/22 16:26:24
せいぜいメインウィンドウのメニューや、そこから辿れる設定ダイアログまでだな。
3ペインアプリとかは手書きじゃないと満足いくものはできないだろ

717:デフォルトの名無しさん
07/12/22 16:32:42
3ペインなら今手書きで作ってるが・・・。

718:デフォルトの名無しさん
07/12/22 18:37:38
GUIエディタ使うってのは、業務アプリの画面とかダイアログだろ。

719:デフォルトの名無しさん
07/12/22 18:39:31
IDEじゃ何もできません><ってやつは使い物にならんよなぁ。
ツール使えばすぐできることを、なんだかんだいいながら手書きでやるんだけど、無駄に時間かかるし古い機能しか使ってなかったり。

720:デフォルトの名無しさん
07/12/22 18:46:41
>>718
なるほどね。業務アプリって画面びっしりコントロールをつけるからなw

721:デフォルトの名無しさん
07/12/22 19:00:30
>>719
まともなコードが書けるかどうかが重要であって、
IDEの使用経験の有無は大した問題じゃない気がする

IDE使ったことない奴には使い方を教えてやるだけで済むが、
プログラミングのセンスがない奴はいくら教えてもどうにもならん

722:デフォルトの名無しさん
07/12/22 19:10:38
もういいからVB使っとけよ。

723:デフォルトの名無しさん
07/12/22 19:11:51
VBにSwingってあるの?

724:デフォルトの名無しさん
07/12/22 19:15:21
>>721
でもIDEの慣れの差はやはり大きい
NetBeansを長年使ってきた人はさくさくつくれるけど、
Eclipseしか触ってこなかった人は開発効率が悪い

1,2年たつと違うんだろうけどね

725:デフォルトの名無しさん
07/12/22 19:17:27
>>724
結局それがいいたかっただけか。
マジレスしなくてよかった。

726:デフォルトの名無しさん
07/12/22 19:19:44
>>725
俺今日はじめて書きこんだんけど

727:デフォルトの名無しさん
07/12/22 20:00:38
業務アプリだと、こんな感じで入力項目があるからな。
URLリンク(www.epson.jp)

ツール使わずにやるのは非効率極まりない。

728:デフォルトの名無しさん
07/12/22 20:45:36
>>727
俺が仕事で作ってる業務アプリは、こんなもんじゃねーぞ・・・
タブで分かれて細かい設定項目が山のようにある。
あんなの手書きしてたら気が狂うわ。

729:デフォルトの名無しさん
07/12/22 20:48:02
普通に100個ぐらいコンポーネントあるよね

730:デフォルトの名無しさん
07/12/22 21:12:10
まだ言い合ってるのか。お前らも飽きないな

731:デフォルトの名無しさん
07/12/22 21:22:46
業務アプリじゃJTableやJTreeはめったに登場しないしな
そういう人らは使えばいいんじゃない?

732:デフォルトの名無しさん
07/12/22 21:24:25
JTableは使用しまくりだよ

733:デフォルトの名無しさん
07/12/22 21:32:13
>>731
JTable使いまくりだけど・・・
検索結果を大量に表示したりせんの?
まあ、めったにJTreeは使わんけど。

734:デフォルトの名無しさん
07/12/22 22:44:43
テーブルがでてこないアプリってあるか?
ツリーはあんまりないけど

735:デフォルトの名無しさん
07/12/22 22:53:20
個人開発だけどツリーの方がよく使う。JTableはスプレッドシートだから業務アプリでよく使うんじゃない?

736:デフォルトの名無しさん
07/12/23 01:19:09
アプリ毎で性格違うんだから、自分の携わったプロジェクトの経験だけあげてもしかたない。
でも、部品の利用のされ方ってのは興味深いな。

アプリで使われてる場面がどれくらいあるのか、
JTableなんかのレンダラとかもどうされてるか気になる。
デフォルトで行ける場面ってどれくらいあるのかとか。

Swingのデフォルト部品って、あと一味足りないみたいなとこあるからなぁ。
というか、特にJTableに感じるんだけど。
(表の真ん中にスクロールバー付けたいなぁ、とか)

737:
07/12/23 03:03:49
Swingでキャッチされない例外が起きてもプログラムは終了しませんよね。
エクリプスとかで走らせてるとoutputに表示されるけど、コマンドプロンプトから走らせるとキャッチされない例外が起きてるのが分かりません。
これを知るにはどうしたらいいのですか?
検出してログをとるなり、メッセージダイアログを表示するなりしたいんです。

738:デフォルトの名無しさん
07/12/23 05:31:30
sun.awt.exception.handler で検索汁

739:デフォルトの名無しさん
07/12/23 11:06:01
throwsして無けりゃなんか表示するとおもう

740:デフォルトの名無しさん
07/12/23 11:13:30
>>736
> 表の真ん中にスクロールバー付けたいなぁ
それは一味も二味も違うだろ w
それができるテーブルコントロールなんて他の言語でも見たこと無いけど。
まあ、俺なら二つのテーブルを並べて、スクロールを同期させるかな。

741:デフォルトの名無しさん
07/12/23 11:42:12
>>738
どうもありがとうございます!
>>739
jarにしてダブルクリックで起動したりもするので、windowsだと何も表示されないのです。

742:デフォルトの名無しさん
07/12/23 16:28:19
>>741
java -jar file.jar
と「ファイル名を指定して実行(R)..」すれば
例外は全部コンソールに表示される

743:デフォルトの名無しさん
07/12/23 19:40:17
というか例外はアプリケーションのどっかの層で拾って
ユーザーにGUIで見せて後は処理続けるかどうかは状況次第っていうように組むもんだが。

System.errにテキストコンポーネント突っ込んでやると楽。

744:デフォルトの名無しさん
07/12/24 00:02:41
>>743
その、「アプリケーションのどっか」にこないから問題っていってるんじゃねぇの?
738で解決するようだけど。

745:デフォルトの名無しさん
07/12/24 01:58:17
例外の対応は場所によって個別対応するしかないよ。
問題ない例外なのかそうでないのかは単純に判断できないし。

運用時ならテキストファイルにログを書き出しておいてそこをメールで添付させるように促すとか
画面のスナップショットを自動でとってdesktopに自動でbmp作ってそれを添付させるとか
まぁいろんな方法があるわな。

746:デフォルトの名無しさん
07/12/24 14:15:13
NetBeans6.0ってJTable使うのにほとんどの場合面倒な設定を直書きしなくてよくなったのな。
新機能であまり取り上げられていないけどこれはすごいな。

747:デフォルトの名無しさん
07/12/25 14:46:26
SwingでPopup形式でJPanelとかJTableとかを表示したいのですが、どう書けばよいでしょうか?

748:デフォルトの名無しさん
07/12/25 15:34:33
複雑なロジックの入ったものならポップアップよりダイアログにするほうがいいけど、ポップアップじゃないとダメ?
JDialogを普通に使うほうがいい場合もあると思うけど。

JPopupMenuは想定される素の状態だとメニューバーと同じくアクションボタンを並べるものだけど
例によって自由にカスタマイズできるので継承するといいかも。

749:デフォルトの名無しさん
07/12/25 15:41:53
>>748
JFrameの上に出せるWindowなら何でも良いというくらいの意味だったんですが、Dialogでやろうと思います。
JPopupMenuがカスタマイズできるとは知りませんでした。ありがとうございます。

750:デフォルトの名無しさん
07/12/26 00:00:31
Swing Application Framework でメニューバーとかツールバーを実装する場合の作法を教えてちょ。

751:デフォルトの名無しさん
07/12/26 00:26:58
>>750
NetBeansでデスクトップアプリケーションで作ると
メインフレームがメニューとか作られるから参考にするとよろし

752:デフォルトの名無しさん
07/12/26 00:29:32
>>751
サンクス。
いつもEclipseばっかり使ってたもんで、NetBeansには疎いんですが、
機能的には遜色ないですかね?
Eclipseでいうところの「呼び出し階層を開く」とかそういうのはありますかね?よく使う機能なので。

753:デフォルトの名無しさん
07/12/26 01:25:27
宣言をしてる場所にとんだりする機能?

CTRL+クリックでとぶよ
キー操作だけだとどこだったかはわすれたけどEclipseと同じキー設定もあったような気がする

乗換えとかじゃなくて参考に出来ればよいと考えるといいかも

でも、GUIアプリ開発とWebアプリ開発が目的なら乗り換えるほうが楽だと思う
Swing Application Framework対応していて、@Actionとかぜんぶやってくれるよ

754:デフォルトの名無しさん
07/12/26 08:37:12
>>753
そっちの機能じゃなくて、選択したメソッドがどこから呼び出されているかを一覧する機能。
かなり重宝してる機能なのであったらいいんだけど。

755:デフォルトの名無しさん
07/12/26 13:14:07
呼び出し元なら普通に昔からあるけど。

756:デフォルトの名無しさん
07/12/27 00:09:33
あるオブジェクトをある場所に移動させていきたい時に、
オブジェクトのxとyを少しづつ変化させているんですけど、どうやるのがベターですかね?
オブジェクトはいろんな場所に発生するので、
if (x > 行き先X) {


757:デフォルトの名無しさん
07/12/27 00:10:11
すいません 途中でした。
続き
if (x > 行き先X) {


758:デフォルトの名無しさん
07/12/27 00:13:28
すいません 途中でした。
続き
if (x > 行き先X) {
x -= 5;
} else {
x += 5;
}
if (y > 行き先Y) {
y -= 5;
} else {
y += 5;
}
こうやってるんですけど、こうするとxかyのどちらかが行き先に到達した場合に、
ぷるぷる震えた感じになっちゃうんですけど、なにかうまい方法ありますかね?

759:デフォルトの名無しさん
07/12/27 00:13:37
それはSwingの問題なのか??

760:デフォルトの名無しさん
07/12/27 00:15:21
単に行き先Xや行き先Yが5の倍数じゃないんじゃね?

761:758
07/12/27 00:18:36
>>760
そうですちょうど倍数じゃないときで、移動距離を1にしたくない場合、
どういうロジックが考えられますか?

762:デフォルトの名無しさん
07/12/27 00:34:37
>>761
それぐらい、自分で考えろよ・・・・
つかスレ違い。

763:デフォルトの名無しさん
07/12/27 00:40:10
Math.abs() 絶対値
差が5に満たない場合
差の分だけ移動
既に目的地に到達してたら チェックはしない。
移動距離の5は定数にしようかな

思った事を書いてみた。
俺は寝る、がんばれ。

764:758
07/12/27 00:41:06
そうですか
表示上の問題だと思ったんでここで聞いたんですが・・・
xflagとyflagを作って、&で到達チェックするとか考えたんですけど、
スマートじゃないんですよね
たとえばどんなのが考えられますかね?

765:758
07/12/27 00:43:12
>>763
ありがとうございます
とても参考になりました

766:デフォルトの名無しさん
07/12/27 00:45:01
>どういうロジックが考えられますか?

って自分で聞いてるぐらいだからSwingの問題じゃなくてアルゴリズムの問題だろ。

767:デフォルトの名無しさん
07/12/27 00:51:43
そうですね
javaのスレッドで聞いたほうが良かったですね
答えてくれた方ありがとうございました。

768:デフォルトの名無しさん
07/12/27 01:03:08
java関係ないし
問題の切り分けに注意しないと間違ったスレでは歓迎されないぞ

769:デフォルトの名無しさん
07/12/27 01:14:11
そうですか
初心者スレッドで聞けばよかったですか
いえばただの簡単なアルゴリズムの問題なのですが、
ここなら同じようなことをやっている人がいるかなと思ったんで、
ここで聞いたほうが早いかなと思ってしまいました。

770:デフォルトの名無しさん
07/12/27 01:17:26
初心者は初心者らしく初心者スレで聞こうな。
まあ、その前にこの程度のロジックは自分で考えられないと、
なにを作るにしても困ると思うぞ。

771:デフォルトの名無しさん
07/12/27 01:33:38
というか普通に高校の物理の問題じゃないかこれ?
そこまでのアルゴリズムじゃないけど。

772:デフォルトの名無しさん
07/12/27 01:36:47
物理?!

どう見ても小学生の算数レベルだろ。

773:758
07/12/27 01:39:19
強引にやろうと思えばできると思うんですが、
スマートにできないんですよね(馬鹿なんで)。
完璧を目指すのはキリがないと思うんですが、
ある程度きれいなコードが知りたいんですよ。

スレリンク(tech板)
ここに移動したんで良かったらいいサンプルコードお教えください。

774:デフォルトの名無しさん
07/12/27 01:43:05
>>769
>ここで聞いたほうが早いかなと思ってしまいました。
こんなのを自分で考えられないとしたら先は長い気がするが…
まぁ地道にがんばれ!

775:デフォルトの名無しさん
07/12/27 02:06:16
ベーマガとか初心者向き雑誌がないと大変なのかなーとかおもっちまった
こういうの当時の小学生は普通に作ってたもんね

776:デフォルトの名無しさん
07/12/27 02:18:59
HSP使ってる連中も普通に作ってるぞ。
というかゲームにSwing使ってるの?

777:デフォルトの名無しさん
07/12/27 02:20:55
Java2Dを使うことはあるかもしれないが、Swingはあんまつかわないだろうね
ただ、ここAWTと合流したからJava2D等も含むといえば含む

本気でやるならJOGLだろうけど

778:デフォルトの名無しさん
07/12/27 02:26:13
本当だ!!
いつの間にかスレタイにAWTが入ってた!!

779:デフォルトの名無しさん
07/12/27 02:32:45
JOGLの正式版が出たときプレイアブルな2DデモとGLCanvasに描画するJMFのレンダラを組んだけど
いまじゃJOGLはjava2Dとパイプラインが統合されてんだよね。

OpenGLの関数使いたいわけじゃないなら-DオプションでOpenGL使うようにした方が楽かね?
それならわざわざ2D描画に3Dtoolkit使う必要ないし。

バグさえ消えれば。


780:デフォルトの名無しさん
07/12/27 04:23:20
javax.swing.timerなんですけど
↓の様にやること多いじゃないですか
このタイマーをストップさせることって可能ですか?
public void startTimer() {
 int i = 0;
 Timer timer = new Timer(20, new ActionListener() {
  public void actionPerformed(ActionEvent e) {
   if (i > 100) {
    return;
   }
   i++;
 });
 timer.start();
}
いままで↑のような感じでiが100超えたらリターンするようにしてたんですが、
ずっとタイマーは動きっぱなしなんですよね。
timerはiが100を超えたらストップさせたいんですよ。
timer内から自分自身をstopさせることができればいいんですが...

781:デフォルトの名無しさん
07/12/27 07:13:18
まぁ、とりあえず読みなさい。
URLリンク(java.sun.com)

782:780
07/12/27 07:55:23
そこも含めていろいろググったんですが...
実際のコーディングを見てください

まずメインクラスでクラスAのインスタンスaを10個作る(略
pubilc void run { //メインループ
 for(int i=0;i<10;i++){    //a[0]からa[9]のxを増やしていき、xが10になったらstartTimer()をplay
  a[i].x++;
  if(a[i].x >= 10) {
   a.startTimer();
  }
  @
 }
}
pubilc class A {
 int x = 0;
 int size = 10;
 public void startTimer() {
  Timer timer = new Timer(20, new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    if (size> 20) {
     return;
    }
    size++;
  });
  timer.start();
 }
}
実際はa[0]が増分し終わったらa[1]にいったり、同時に動いたりするんですが...
@の部分で判定してtimer.stopさせようとしてもすぐストップしてしまうと困るし、
メインループからはtimerがいつ終わるのかわからないのでストップできないんですよね
なにか大きな間違いがあるんでしょうか?

783:デフォルトの名無しさん
07/12/27 08:37:43
Timer#stop()を呼べば止まると分かっているのなら、
後は変数のスコープの問題。
ローカル変数timerをクラスAのインスタンス変数にして、
こんなメソッドを作って
public void stopTimer(){
 timer.stop();
}
これをactionPerformed()内の適切な位置で呼べばいい。

ところでこのサンプルコード、Timerでやってる処理がi++だけなんだが、
これは単純化したサンプルコードなだけだよね?
ホントのコードでは、ちゃんとGUIスレッドですべき処理をしてるんだよね?

784:デフォルトの名無しさん
07/12/27 08:53:05
ああうまくいきました
GUIスレッドですべき処理というのがいまいちわかんないんですが、
ある条件でaのエフェクトを起こすみたいな感じなんですよ
とにかくこれで寝れます どうもありがとうございました

785:デフォルトの名無しさん
07/12/27 10:45:15
ボタンのイベント中にタイマーの時間が来たり、その逆も有ったりするって意味じゃね。

786:デフォルトの名無しさん
07/12/27 12:26:40
>>783
swing.TimerはEDTでactionPerformed呼ぶからそのへんは大丈夫と思

787:デフォルトの名無しさん
07/12/27 13:29:19
>>779
Java2Dだとαブレンディング/テストとか足りないものが多いから
2DであってもOpenGL使わざるを得ないのが現実

>>785が正解
あと注意すべきところはSwingTimerは定期処理にはいいけど、
長時間の流れがある処理には向かないというのもおぼえておくとよろし

あくまでも一定時間ごとにアクションイベントを発生させるだけ
詳しく見てないけどSwingFrameworkでjavax.swing.Timerも扱えるんかな?

788:デフォルトの名無しさん
07/12/27 22:23:18
Javaで動画を再生しようと思っているのですが(Macも含める)
・JMFだとMacで再生出来ない。
・QuickTime for JavaだとLinuxで再生出来ない。
という認識はあっていますでしょうか?

789:デフォルトの名無しさん
07/12/27 22:41:37
JMFのクロスプラットフォーム版を含めるなら間違ってる。
というかこれくらい人に聞かずとも分かるだろ。

790:デフォルトの名無しさん
07/12/28 00:08:21
>>789
URLリンク(www.animoids.com)
「JMF_2_1_1_mac.zip」の部分から、
もしかしてMac用がどこかで配布されているのかと勘違いしてしまいました。

791:デフォルトの名無しさん
07/12/28 03:27:55
検索するとそこヒットするんだよね。

JMFはjava動かすスペックと動画デコードするスペックを
ダブルで要求するからネイティブ版でもいろいろすると重いぞ。

単純なラッパーだからwin版はバグだらけだし。

792:デフォルトの名無しさん
07/12/28 08:46:22
>>790
こんなの見つけたぞ
URLリンク(www.sra.co.jp)

793:デフォルトの名無しさん
07/12/28 15:55:29
2004年から更新してないとか心配なんだけど、
なんでどこも投資して開発を続けないんだろう

794:デフォルトの名無しさん
07/12/28 16:06:51
こんなところでじゅんを見る事になるとは・・・。

795:デフォルトの名無しさん
07/12/30 16:40:20
JFileChooserにおいて、ダイアログ表示時のデフォルトの名前を指定するにはどうすればよいでしょうか?

796:デフォルトの名無しさん
07/12/30 16:55:09
setSelectedFile() で指定してから表示

797:デフォルトの名無しさん
07/12/30 16:57:49
JFileChooser#setSelectedFile(File)

798:デフォルトの名無しさん
07/12/30 17:14:41
ありがとうございました!

799:デフォルトの名無しさん
07/12/31 00:16:16
NetBeans入れたら超もっさり動作でがっかりした。
結局今はEclipseにもどりますた。
SwingアプリがSWTアプリみたいに比較的ストレスなく動いてくれる日はマダ来ないのかね。

800:デフォルトの名無しさん
07/12/31 00:25:30
もっさりとかストレスなく動くとかってのは主観的なものだから、
>>799の気分次第で明日にでも来るし、永遠に来ない事もありうる

801:デフォルトの名無しさん
07/12/31 00:57:01
>>799
マシンのスペックはいかほどで?

802:デフォルトの名無しさん
07/12/31 00:58:07
JavaはマイナーCPUに冷たいだろうし
マイナーGPUにも冷たいのかもしれんね

803:デフォルトの名無しさん
07/12/31 01:02:44
CやC++なら温かいともいえないんじゃね?

804:デフォルトの名無しさん
07/12/31 01:16:32
>>802
Java使ってるSWTもマイナーCPUやマイナーGPUに冷たいって事に?

805:デフォルトの名無しさん
07/12/31 01:17:10
>>802
SPARCにも冷たいって事に?

806:デフォルトの名無しさん
07/12/31 01:20:05
>>804はスルーするが、>>805は許せん。

807:デフォルトの名無しさん
07/12/31 01:42:32
今時はお世辞にもメジャーとは言い難い。

808:デフォルトの名無しさん
07/12/31 14:16:14
いまさらSPARCもねえだろ

809:デフォルトの名無しさん
07/12/31 15:29:10
金にいとめをつけずWinで最速のマシンもってくれば、Javaでもかなり高速動作するんじゃないの。

810:デフォルトの名無しさん
07/12/31 15:33:56
既存のコンポーネントにアクションを付加したい場合どのような手段を取るのが比較的単純に済むでしょうか?

例えば、JTreeでCtrl+Fで検索のアクションをさせたい場合などです。

811:デフォルトの名無しさん
07/12/31 17:44:54
>>810
適当なコンポーネントの ActionMap と InputMap に登録すればいいだろ。

812:デフォルトの名無しさん
07/12/31 18:07:49
JFileChooserののろさにガックリ

813:デフォルトの名無しさん
07/12/31 18:15:44
>>368 あたりで話題になってる不具合のせいかも?

814:>>810
07/12/31 18:36:09
InputMapを知りませんでした。
こんな簡単に実現できるなんてSwingは本当にすごいですね。
ありがとうございました。

815:デフォルトの名無しさん
08/01/01 02:16:39
>>799
いつものネガティブキャンペーン乙

6.0だとEclipseのほうが軽いとかってありえんだろ
SWTはスレ違いだからそっちでやってくれ

816:デフォルトの名無しさん
08/01/01 02:28:13
今更釣られるアホは寝てろ

817:デフォルトの名無しさん
08/01/01 08:17:29
たしかに起動に関してはnetbeansめっちゃ遅いよな

818:デフォルトの名無しさん
08/01/02 02:11:59
何もプラグイン入れなければ、Eclipseは軽いね。

819:デフォルトの名無しさん
08/01/02 02:17:51
Java EE フルセット入れた Eclipse のもっさりと不安定さはすさまじいものがある。
sysdeo の Tomcat プラグインと JSP, XML の構造化エディタ程度ならめちゃめちゃ軽い。
必要なものを選択できる人間だけが楽できる。

820:デフォルトの名無しさん
08/01/02 03:15:40
>>819
インストールしてもプラグイン無効にすればいいんじゃね?

821:デフォルトの名無しさん
08/01/02 22:26:40
swingのコピペを調べてたんだが。

CTRL+X -> CTRL+V で「切り取り -> 貼り付け」した時に、
貼り付け後に、余計なオブジェクトを削除するための後処理はexportDoneでいいんだろうか?
なぜか、CTRL+Xを押した瞬間に、exportDoneが実行されちゃうんだ。

exportDoneの説明には、
>データのエクスポート後に呼び出されます。このメソッドは、アクションが MOVE の場合に転送されたデータを削除します。
>MOVE はこの実装にサポートされるアクションでないため、このメソッドの実装では何も行われません。getSourceActions には MOVE が含まれません。

どっちやねんw

822:821
08/01/02 22:28:33
今のところ、対処方法が分らないので、exportDoneの中では何もせず、
importDoneの中で、貼り付け操作完了後に、
自分で削除操作を実行しようかなと思ってる。

823:821
08/01/03 00:34:28
なにをバカなことを!

切り取りの標準的な操作は、切り取りと同時に削除だろうが!

エクスプローラの動作が特殊なんだ!
新年早々はずかしぃぃぃぃぃぃぃぃぃぃぃぃ!!!!!!!!!!

824:デフォルトの名無しさん
08/01/03 03:16:52
エクスプローラの動作は、CUTというよりPREPARE-MOVEだからな。

825:デフォルトの名無しさん
08/01/05 20:53:44
>>817
終了はめっちゃ速いのだが。

826:デフォルトの名無しさん
08/01/06 23:23:28
jdk1.6.0u3
import java.awt.Frame;
これってバグなの?

827:デフォルトの名無しさん
08/01/06 23:33:55
      ___    ━┓
    / ―\   ┏┛
  /ノ  (●)\  ・
. | (●)   ⌒)\
. |   (__ノ ̄  |
  \        /
    \     _ノ
    /´     `\
     |       |
     |       |

           ___   ━┓
         / ―  \  ┏┛
        /  (●)  \ヽ ・
       /   (⌒  (●) /
       /      ̄ヽ__) /
.    /´     ___/
    |        \
    |        |

828:デフォルトの名無しさん
08/01/06 23:49:08
>>827
分かる人にはこれだけで分かる

829:デフォルトの名無しさん
08/01/06 23:53:32
>>827
>>828
バグってたのは俺のほうだったw
*.class 削除したらコンパイル通ったよww

830:デフォルトの名無しさん
08/01/07 00:55:29
どういう環境だよ・・・

831:デフォルトの名無しさん
08/01/07 01:26:16
>>830
スレリンク(tech板:646番)
だろう。

832:デフォルトの名無しさん
08/01/07 11:20:26
テストするならTestFrameとかにすべし

833:デフォルトの名無しさん
08/01/07 12:55:58
>>831
よくみつけてきたな

834:デフォルトの名無しさん
08/01/09 03:57:38
相変わらず質問スレは気持ち悪いな

835:デフォルトの名無しさん
08/01/09 17:58:19
import java.util.*;
import javax.swing.*;
public class NewJFrame2 extends javax.swing.JFrame {
List<String> dummyList = new ArrayList<String>();
JList jList;
public NewJFrame2() {
setDefaultCloseOperation( WindowConstants.EXIT_ON_CLOSE);
JScrollPane jScrollPane = new JScrollPane();
jList = new JList();
jScrollPane.setViewportView(jList);
getContentPane().add(jScrollPane, java.awt.BorderLayout.CENTER);
for ( int i=0; i<300; i++ ) {
StringBuilder sb = new StringBuilder();
int max = (int)(Math.random() * 100 + 1);
//int max = 20;
for ( int j=0; j<max; j++ ) sb.append("A");
dummyList.add(sb.toString() + " " + i);
}
jList.setModel(new AbstractListModel() {
public int getSize() { return dummyList.size(); }
public Object getElementAt(int index) {
return dummyList.get(index);
}
});
pack();
}
public static void main(String args[]) {
new NewJFrame2().setVisible(true);
}
}

836:デフォルトの名無しさん
08/01/09 18:01:42
JListのカーソルキーによるスクロールことで謎があるので投げてみる。

>>835のプログラムなんだけど、単純にJListの中に300個のダミーデータを入れている。

カーソルキーで下にスクロールしていき、数十行進んだら、こんどは上に10行くらい
スクロール。
そしたらまたカーソルキーで下に移動。
すると、選択されてる項目が一瞬で画面の下までジャンプしてしまう。
このプログラムで、maxを20とか一定の値にした場合はジャンプしない。
JListの各セルの文字列長をランダムに変えたものを入れるとこの現象が起きる。
こういう仕様なのかもしれないけど、一瞬で選択位置が飛ぶと、
目線がそれてしまうので操作感がよくない。
maxを固定したときのように動作してほしい。
なんとかする方法ないかなぁ?

837:デフォルトの名無しさん
08/01/09 19:57:24
>>836
解決法でないのだが、「ジャンプ」の条件について。
固定長かどうかではなく、Viewport の外に描画域があるかないか、ではないのか、と。

固定長で横スクロールが出るようにしたときは「ジャンプ」するし、
固定長でなくても、横スクロールが出ないときは「ジャンプ」しない。

JScrollPane で横スクロールを非表示にしても、見えない部分があるときは「ジャンプ」する。

838:デフォルトの名無しさん
08/01/10 16:05:46
フレームの横サイズを水平スクロールバーが出なくなるまで広げてやればジャンプはしないな。
しかしちょっと設定をいじくったぐらいでは解決しそうない。
オーバーライドして一部の機能を殺すとか。

839:デフォルトの名無しさん
08/01/10 18:27:36
↓このバグだと思うよ。7で直ってるらしい。
URLリンク(bugs.sun.com)
URLリンク(bugs.sun.com)

840:デフォルトの名無しさん
08/01/10 18:57:44
バージョンアップを待つのが一番楽そうだね

841:デフォルトの名無しさん
08/01/10 19:27:17
よく見つけてくるな。すげーよ。

842:デフォルトの名無しさん
08/01/10 21:33:46
有名なバグだぞ。
JListに512個要素突っ込むとバグるとか放置されてるし。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4902日前に更新/252 KB
担当:undef