Java 高速GUI SWT
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGGUIツールキッドです。
配布時にOS依存のライブラリを同梱する必要がありますが、
アプリケーションコードはOS非依存で書くことができます。
当初はIBMが開発していましたが、現在ではオープンソースで
Eclipse.orgによって開発が進められています。
なお、ライセンスはCPLという、商用利用に寛容な
オープンソースライセンスです。
"JAVA/C++開発環境"eclipse"スレッド2
http://pc3.2ch.net/test/read.cgi/tech/1023103421
SWT FAQ
http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-swt-home/faq.html
Component Development Resources
http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-swt-home/dev.html
API Reference
http://www.eclipse.org/documentation/html/plugins/org.eclipse.platform.doc.isv/topics_Reference.html
0685680
NGNGあう・・・。コードですか・・・。
メソッドの引数がfinalで、なおかつ直後のSystem.out.print()では表示されるので、
データが書き換わってることは無いと思うのですが・・・。
void appendLog(final String text, final Color color) { // Colorはそのうち色をつけようと思って
shell.getDisplay().asyncExec(new Runnable() {
public void run() {
logText.append(text); // こっちは時々NG
System.out.print(text); // こっちはOK
}
});
}
ちなみに、asyncExec()、syncExec()両方ともダメでした。
で、SWTの中までステップ実行してみようと思ったら、
「ソースがねぇよ」って画面が現れただす・・・。
環境整えてから試して、再度結果報告させてもらいます。
さんきゅうでした。
0686デフォルトの名無しさん
NGNGそれならtextが書き換わってるってことはないね.
ステップインはswt.jarにソースアタッチしないと.
plugins\org.eclipse.platform.win32.source_2.1.0\src\org.eclipse.swt.win32_2.1.0\ws\win32\swtsrc.zip
とかね.
まぁ,"時々NG"を捕まえるのは大変だろけど.
あとはappendの前後でlogText.getText()をprintln()してみると,どーだろうね.
0687680
NGNG普通に実行させても再現できなくなりました。
何度も複数のスレッドから大量にStyledTextに書き込ませて、
一件ずつログを追って確認してみたのですが、全て表示されてました。
ここに至って原因は「勘違い」であると断定しました。
>>684様をはじめ、考えてくださった方々、どうも申し訳ありませんですた。
おかしかったのは、DisplayでもasyncExec()でもStyledTextなく私の頭でした。
0688デフォルトの名無しさん
NGNGSWTのTableクラスを利用してウィンドウにテーブルを張っつけてます。
テーブルヘッダを作成する為に下記のようなコードを書きました。
TableColumn col = new TableColumn(table, SWT.LEFT);
col.setText("hoge");
で、一度作成したテーブルヘッダを動的に削除する方法が分かりません。
ご存知の方が居ましたらアドバイス宜しくお願いします。
0689デフォルトの名無しさん
NGNGSWT始めてみますた。
eclipse内でSWTアプリ作ってますが、swt-win32-2133.dllを認識してくれまへん。
システム環境変数PATHで通してるはずなんですけど・・・・・。
java.lang.UnsatisfiedLinkError: no swt-win32-2133 in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1403)
at java.lang.Runtime.loadLibrary0(Runtime.java:788)
at java.lang.System.loadLibrary(System.java:832)
at org.eclipse.swt.internal.Library.loadLibrary(Library.java:108)
at org.eclipse.swt.internal.win32.OS.<clinit>(OS.java:46)
at org.eclipse.swt.widgets.Display.internal_new_GC(Display.java:1291)
at org.eclipse.swt.graphics.Device.init(Device.java:547)
at org.eclipse.swt.widgets.Display.init(Display.java:1310)
at org.eclipse.swt.graphics.Device.<init>(Device.java:96)
at org.eclipse.swt.widgets.Display.<init>(Display.java:291)
at org.eclipse.swt.widgets.Display.<init>(Display.java:287)
at com.sat.sample.HelloSWT.main(HelloSWT.java:21)
Exception in thread "main"
てぃなみに、swt.jarはプロジェクトのビルドパスに変数追加してまふ。
何故swt-win32-2133 が見えないのでしょうか?
-Djava.library.path=ほげほげでswt-*.dllがあるフォルダにパス通す。
なども試してみますた。
0690デフォルトの名無しさん
NGNG>>458
>>689
コマンドプロンプトから実際のコマンド行をコピペしたら何かわかるかも.
どっちにしてもSWTとは関係ないJNIのレベルの話だかが.
0691デフォルトの名無しさん
NGNGgcjって使ってる人います?
http://pc2.2ch.net/test/read.cgi/tech/1046627795/50-51
だけど、同じ症状かもね。
0692デフォルトの名無しさん
NGNG-Djava.library.path=dllへのパス
してみれば?
0693デフォルトの名無しさん
NGNGだからそれは試したって書いてあるだろ?
0694デフォルトの名無しさん
NGNGありがとーございます。
table.getColumns()で取得したTableColumn[] に対して
dispose()したら上手く行きました。
感謝感謝っす。
0695デフォルトの名無しさん
NGNG0696デフォルトの名無しさん
NGNGうまくいきません。
swt.jar などの設定もきちんと設定を行っているので、コード上で、エラーらしき個所は指示されません。
しかし実行をすると以下のようなエラーが出ます。
java.lang.UnsatisfiedLinkError: no swt-win32-2052 in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1410)
at java.lang.Runtime.loadLibrary0(Runtime.java:772)
at java.lang.System.loadLibrary(System.java:832)
こんな感じでズラズラと・・・
くだらない質問なんだと思うので、もし、ここでの質問が不適当でしたら、どこで質問して言いか教えて頂けないでしょうか?
よろしくお願いします。
0697デフォルトの名無しさん
NGNG>http://game3.2ch.net/mmominor/dat/1052667275.dat
0698デフォルトの名無しさん
NGNG> java.lang.UnsatisfiedLinkError: no swt-win32-2052 in java.library.path
java.library.path で指定されているディレクトリに
swt-win32-2052.dll がないというエラーなんで
1. swt-win32-2052.dll を java.library.path で指定されたディレクトリに置く
2. swt-win32-2052.dll があるディレクトリを java.library.path に指定する
のどちらかで対処してください。
0699デフォルトの名無しさん
NGNGsystem32に放り込め。確実に逝ける。
0700デフォルトの名無しさん
NGNG>696は、忘れたころにPC換えて、また同じエラーで悩むと思われ。
0701デフォルトの名無しさん
NGNG>>699
>>700
ありがとうございます。swt-win32-2052.dll はコンパイル後実行する時に、必要と書いてあったのは覚えていたんですが、
よく考えたら、ビルドした時点で実行してるんですよね。
くだらない質問に答えていただいてありがとうございます。
0702デフォルトの名無しさん
NGNGあんたの思い込みが正しいとしたら、
な ん の た め の ダ イ ナ ミ ッ ク リ ン ク かと小一時間。
0703デフォルトの名無しさん
NGNG今のところIEコンポーネントOLEを呼び出すのしか例を見た事無いから、
できればどんな感じでAPIを呼び出してるのか教えてちょ
0704SWT厨房
NGNGいつの間にか(一月前からみたいだけど)、eclipse公式で、
SWT単体でダウンロードできる様になってたよ。
0705デフォルトの名無しさん
NGNGhttp://chrriis.brainlex.com/swtswing/
0706デフォルトの名無しさん
NGNGClientGUIもJavaが制覇「もう誰にも止められない」
http://girlcom.ghostsp.com/swttop.html
0707デフォルトの名無しさん
NGNGhttp://219.96.231.242/wizonline/
2chスレ
http://game3.2ch.net/mmominor/dat/1053536167.dat
0708デファルトの名無しさん
NGNGっていうのをやりたいんですが、うまくいきません。
KeyListener#keyPressed()の中で、
前の画面のCompositeをdisposeして、
新しいCompositeを作成ってしてるんですが、
新しい画面でイベントが拾えなくなります。
(CompoisteはShellの子の子に配置しています)
何かいい方法、サンプル、デバッグ手段等あったら、教えてください。
0709デフォルトの名無しさん
NGNGIStructuredContentProviderやITableLabelProviderなどの
Providerを実装したクラスのメソッド内で例外が発生すると、
org.eclipse.core.internal.runtime.AssertionFailedException: assertion failed: The application has not been initialized.
at org.eclipse.core.internal.runtime.〜・・・がだらだら続いて、
at MyClass$1.selectionChanged(MyClass:74)・・・すごーく前の呼び出し元
というクソみたいなスタックトレースを吐きやがります。
Window.IExceptionHandler#handleException(Throwable)も試してみたのですが、
このメソッドが呼ばれたときにはすでに上記の意味不明な例外に置き換えられたあとでした。
多分、ClassCastExceptionだとかArrayIndexOutOfBoundsだとかの実行時例外だと思うのですが、
何が起きてるのかを知るいい方法はないでしょうか?
というか、どのContentProvider内のどのメソッドで発生した例外なのかだけでも分かれば助かるのですが・・・。
0710デフォルトの名無しさん
NGNG何がクソで何が意味不明なの?
> at org.eclipse.core.internal.runtime.〜・・・がだらだら続いて、
の最初の要素が直接の発生場所を示してるわけでしょ.
デバッガで覗けばいいじゃない.
0711デフォルトの名無しさん
NGNG基本的なことだけれど,
Listenerはちゃんと新しいCompositeに登録しなおしてる?
0712709
NGNG>何がクソで何が意味不明なの?
何が起きようともAssertionFailedExceptionに置き換えられてしまうところが・・・。
>の最初の要素が直接の発生場所を示してるわけでしょ.
いえ、JFace内で全ての例外をキャッチして、
新しいAssertionFailedExceptionを投げているので、直接の原因が分からないままなのです。
今はデバッガで追うのも大変なので、全てのメソッド内をtry〜catchブロックでくくって、
一度スタックトレースを表示してから再度投げるようにしてますが、
実装したProviderのメソッドでnullを返してしまったがために、
JFace内で起きたNullPointerExceptionとかには対応できません。
というわけで、何とか元の例外を知る方法は無いものかと・・・。
0713デフォルトの名無しさん
NGNG>いえ、JFace内で全ての例外をキャッチして、
そのcatch節でブレークできる場合,
たとえばcatch(Exception e)なら,
Displayビューでe.printStackTrace();をDisplayすれば
ソースをいじらずに元の例外のスタックトレースが見られる.
catch節がからっぽでブレークできないなら,ソースいじるか,
その手前で毎回止めて地道に追いかけてくしかないかな……
0714デフォルトの名無しさん
NGNG例外チェーンって言葉を勉強しなおせ。
>713
例外を置き換えてる、って言ってるんだから、その処理がどこかのcatch節に必ず書いてあるはず。
そこでブレークできる。
普通はThrowable#getCause()すればそんなもん探す必要無いんだけどなあ。
0715713
NGNGうん,それは期待できるんだけど,
catch節の外で投げなおしてる可能性もゼロではないので,
保険として書いておいたのだ.
eclipseのAssertionFailedExceptionは
例外チェインみたいな仕組みには対応してないのがちょっとアレだよね.
別にJDK1.4じゃなくても独自に実装できるのだし.
0716デファルトの名無しさん
NGNG登録してます。
以下のプログラムは何かおかしいでしょうか?
---------------------------------(抜粋ここから)
public void create(Composite parent){
this.parent = parent;
Composite composite = new Composite(parent, SWT.NULL);
composite.setLayout(new FillLayout(SWT.HORIZONTAL));
Label label = new Label(composite, SWT.NULL);
label.setText("hoge");
composite.addKeyListener(new L1(composite));
}
class L1 extends KeyAdapter{
Composite composite;
L1(Composite composite){
this.composite = composite;
}
public void keyPressed(KeyEvent e){
System.out.println(e);
composite.dispose();
new TChangeView().create(parent);
}
}
---------------------------------(ここまで)
0717デファルトの名無しさん
NGNG補足
イベントリスナーの中でdisposeするってだめ?
画面切り替えってどうするものか、
いいサンプルあったら教えてください〜
0718709
NGNGいえ、例外チェーンになってたらすぐに分かるのですが、
本当に原因となった元の例外が失われてるですよ。
ちなみに、もしかしてと思ってThrowable#getCause()も試していました。
今までもデバッガで原因を探ってたりしたのですが、
もう少し簡単に分からないものかと思ったです。
>>713のDisplayビューを使う方法は初めて知ったので、試してみます。
少しは楽になりそうです。
ありがとうございました。
0719山崎渉
NGNGピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉
0720デフォルトの名無しさん
NGNG0721デフォルトの名無しさん
NGNG0722デフォルトの名無しさん
NGNG外からUIのパーツにアクセスするのに
いちいちUIスレッドと同期とってスレッド立てるのってめんどくさくねえ?
Layoutもウィジェットの追加もいちいちSwingと考え方が違うし、
コード書いてるとストレスがたまって暴れだしそうだ。。
SWTになれるころには、Swing が書けなくなっている罠。
誰か書いてたけど、
Swingの別実装とはできなかったんだろうか。。
0723デフォルトの名無しさん
NGNGまさかswingでイベントスレッド外から好き放題アクセスしてた?
0724デフォルトの名無しさん
NGNGイベントキューに放り込むようになってる。
Toolkitクラス見てみるよろし。
0725デフォルトの名無しさん
NGNG( ゚ Д゚)
0726722
NGNGうっ。やっぱりそういう話になる?
たとえばログをテキストエリアに書き出すのに、
それ用のクラス作ってそこにテキストエリアの参照をstaticで保持させて、
それ経由で各クラスからログを吐き出させてますた。
そこまででなくてもSwingだったら作ったフレームの参照渡せば
外から自由にいじれたじゃない?
SWTだととっても不自由に感じる。
とりあえずの解決として、UIのクラスにログ書き出し用のメソッド書いて、
そこでUIスレッドと同期したスレッドを立ててそれ経由で書かせてます。
でログ出力クラスにはUIクラスを保持させると。
でもこんな感じでボタンの有効/無効操作とかテールへの出力とかが
たくさんある。ある程度アクセスするクラスは絞ってるんだけど
さらに絞らんときついなあ。。
SWTだとどうするのが一番いいの?
UIアクセス用のクラスを作るとか?
>>724
それをいちいち書かされるのがイヤ。
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
とか書くのもめんどくさい。
主観的だけどどんどん可読性が落ちてく。。
テーブルさえ持ってれば、もうAWTでいいんだけど。
0727デフォルトの名無しさん
NGNG0728デフォルトの名無しさん
NGNGvoid log(String text) {
textWidget.appendText(text);
}
swing:
void log(final String text) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
textWidget.appendText(text);
}
});
}
SWT:
void log(final String text) {
Display.getCurrent().asyncExec(new Runnable() {
public void run() {
textWidget.appendText(text);
}
});
}
0729722
NGNGありがとー。
結局SWTでUIにアクセスするには
必ずUIスレッドに明示的に同期/非同期でRunnable投げろってことすね。
そのへん何で隠蔽してくれないんだろね。
そういう疑問は、
「なんでjavaって型を自動変換してれないの?」
ってのとおんなじかな。。
0730デフォルトの名無しさん
NGNGSWTでっていうかswingでもな
0731デフォルトの名無しさん
NGNG0732デフォルトの名無しさん
NGNG>そのへん何で隠蔽してくれないんだろね。
SWT自体は元々eclipseを構成する中の、比較的低レベルなライブラリィだから。
隠蔽したいならeclipseのソース全体を参考にしつつ、自分で書いてみ。
>>731
マルチスレッドでの同期問題を前提にしていないO/Sや言語のほうがダサい。
0733デフォルトの名無しさん
NGNGTabFolder tf = new TabFolder(shell, SWT.NONE);
TabItem ti1 = new TabItem(tf, SWT.NONE);
ti1.setText("1");
TabItem ti2 = new TabItem(tf, SWT.NONE);
ti2.setText("2");
こんな感じで作ったタブのうち、起動時に2番目のやつが前面に出ているようにしたいのですが。
0734デフォルトの名無しさん
NGNGtf.setSelection(1);
0735デフォルトの名無しさん
NGNG>SWT自体は元々eclipseを構成する中の、比較的低レベルなライブラリィだから。
IBMによるJ2ME/PersonalProfile for Linuxのβ実装見てると、
java.awt -> SWT -> Qt/gtk/motifなんてなってる。
IBMとかOTIの社内じゃほんと汎用的な低レベルライブラリとして
位置付けられているんだろうな。
0736デフォルトの名無しさん
NGNGなんかJavaらしくないな。
0737デフォルトの名無しさん
NGNGかなりの数のOS/Window Systemで動くけどね。
0738デフォルトの名無しさん
NGNGイチイチ書き直すなんてダサすぎ。
0739デフォルトの名無しさん
NGNGそもそも適用できるレイヤが違う物同士に”単一の書き方”を求めるのが間違い。
反論その二
”これで全てOK”な究極の書き方が数年そこらで出来るはずなし。GUIなら尚更。
0740デフォルトの名無しさん
NGNG>>731
0741デフォルトの名無しさん
NGNGあまりにアホすぎて涙が出てくる
0742デフォルトの名無しさん
NGNG>>741には説明できないんだろうな。かわいそう。
0743デフォルトの名無しさん
NGNG>>739
…理解できない事象は無視してしまうのか。プログラマーに向いてないからやめた方が良いよ。
0744デフォルトの名無しさん
NGNGなんでもかんでも全部理解しようとする奴はすぐ限界に直面する。
分からんことは他人に任せる奴がもっともプログラマ向きだよ。
でもまぁ、Javaはほか言語と比べてダサくないよ、全然。
素直な人間の発想と比べればJavaではまだまだダサいのでせう。
0745722
NGNGそのためのJFaceフレームワークみたいだね。
完全隠蔽してくれないけど、同期は意識しなくていいみたい。
結局、Tableの予想以上の遅さにSWT化を断念しました。
AWTにListでTableっぽいの作って使おうかな。。。
>>736
AWTとSwingは書き方がほぼ一緒。
コンセプトはAWTとSWTがほぼ一緒。(端的に言うと)
0746デフォルトの名無しさん
NGNGAWTとSwingじゃスレッド回りが全然違うと思うが……
0747デフォルトの名無しさん
NGNG0748デフォルトの名無しさん
NGNGAWTは当時PureJavaのGUIパーツを作ってる暇無かったから仕方なく、だろ?
SWTみたいに速度や機能のために割り切ってるわけじゃないと思うが。
0749722
NGNG勉強不足ですた。
0750デフォルトの名無しさん
NGNG0751デフォルトの名無しさん
NGNGこのスレの>>238あたりを読め
0752732
NGNG>AWTにListでTableっぽいの作って使おうかな。。。
@ITの新着記事でも遅いと書かれていたね。
Windowsプラットホームで言うと、SWTのTableはCommonControlの「ListView」で
無理やり実装されているんだけど、JNIのオーバーヘッド+Rowをオブジェクトで追加
していく方法であれば遅いのは止むなしかと。
私もいろいろ調べたけど、速いTableを使うにはCanvasクラスを継承して新たな
ウィジェットクラスを書くしかないみたい。
SourceForgeにModel/Viewが分離されているよさげなサンプルがあったので、
私はがりがりと書いてみるよ。
eclipse 3.xまでは待てないしね.....
0753デフォルトの名無しさん
NGNGhttp://www.atmarkit.co.jp/fjava/column/andoh/andoh19.html
0754デフォルトの名無しさん
NGNG602じゃないですが、Imageを使ってバッファを作ってそこに描画して、
それをShellに直接drawImageすると激しくちらつきます。
何かしなきゃいけないことがあるんでしょうか?
0755デフォルトの名無しさん
NGNGCPLで公開キボン.
>>754
とりあえずSWT.NO_BACKGROUNDとか.
0757デフォルトの名無しさん
NGNGだれかGridBag作って
0758直リン
NGNG0759デフォルトの名無しさん
NGNG0760デフォルトの名無しさん
NGNGage
0761デフォルトの名無しさん
NGNG0762こまちゃん
NGNG変わってしまいます。
よろしゅう。
0763デフォルトの名無しさん
NGNG自分で描画しる.
org.eclipse.swt.custom.TableCursorのソースが参考になる.
0764デフォルトの名無しさん
NGNGSWT と Swing を比較して Swing のほうが API が使いやすいって
よく聞くけど、Swing と API の使い勝手を比較するなら SWT じゃなくて
JFace じゃないの? スタンドアローンアプリケーションで
JFace 使ってる人の意見キボンヌ。
0765デフォルトの名無しさん
NGNG単なる感想だけどなかなか良さげ。
ただ、資料が少ないのでAPI、サンプル、ソースを読みながら出ないと、
呼び出すだけでいいのか、サブクラスで実装しなければいけないのか、とかがわかりにくい。
このページ見てやってみようかなと思ったんだけど、
必要なJarファイルとかが違っていたので要注意ね。
ttp://www-6.ibm.com/jp/developerworks/opensource/030328/j_os-ecgui1.html
0766デフォルトの名無しさん
NGNG使ってる人が少ない、資料が少ないという時点で「APIが使いやすい」の重要な条件からひとつ外れる。
0767デフォルトの名無しさん
NGNGそうかもしんない。
ただ、SWTをラップしてUIを作りやすくしてくれるので、
一度は使ってみると良いと思う。
フォント、イメージの破棄とか簡単になるし・・・。
0768デフォルトの名無しさん
NGNG0769山崎 渉
NGNG__∧_∧_
|( ^^ )| <寝るぽ(^^)
|\⌒⌒⌒\
\ |⌒⌒⌒~| 山崎渉
~ ̄ ̄ ̄ ̄
0770デフォルトの名無しさん
NGNGMultiPageEditorとかですかねぇ。
0771デフォルトの名無しさん
NGNGJEditorPaneに何を期待しているかによって違うと思う
・単純なテキスト編集 -> Text
・ちょっとした装飾のあるテキスト編集 -> StyledText
・HTML解析+表示 -> OLE or 3.0で出るとか出ないとか言う何か
0772デフォルトの名無しさん
NGNG別のクラスからMyFrameのインスタンスを何個も作りたいのだが
その場合
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
はどこに書けばいいんですか?
0773デフォルトの名無しさん
NGNGどういうShellを出したかろうと,
readAndDispatchのループを書く位置とは無関係.
0774デフォルトの名無しさん
NGNGHogeクラスからMyFrameのインスタンスを2つ同時に
new MyFrame().open();
new MyFrame().oepn();
で出力したい場合に、ループ処理をMyFrame側に書いてしまうと
2つ目のインスタンスは1つ目のインスタンスのループ処理を
抜けないと到達不可能になるのと思うんだけど、ほんとに無関係??
0775デフォルトの名無しさん
NGNG無関係.
"MyFrame側"というのが具体的に何なのかわからないが,
無関係というのはどこに書いてもいいという意味じゃないんだ.
アプリごとに適切なやり方でループする必要があるんだよ.
でもその適切なやり方はShellを何枚出すかには
基本的に関係ないということ.
new MyFrame().open();
new MyFrame().oepn();
で動かないならそもそものやり方が適切じゃないのだろう.
0776デフォルトの名無しさん
NGNGwhile (!shell1.isDisposed() || !shell2.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
ってやらんといけないのか?
0777デフォルトの名無しさん
NGNGそうしないといけないということはない.
ループを抜ける条件はアプリによって違う.
お決まりの書き方として捉えるのではなく,
そのコードが何をやっているのかを考えてほしい.
0778デフォルトの名無しさん
NGNGhttp://www.cbook24.com/bm_detail.asp?sku=4877830863
なんてものが出てるようだけど、既出ですか?
0779デフォルトの名無しさん
NGNGまだ実物見てないけど,大村タンなら悪くないかもね.
しかし何でそのページ著者の情報がないのだろう.
0780デフォルトの名無しさん
NGNGhttp://www.amazon.co.jp/exec/obidos/ASIN/4877830863/ref=sr_aps_b_3/249-7737806-4181927
0781デフォルトの名無しさん
NGNG雑誌の記事だとHelloWorldどまりだし。
0782デフォルトの名無しさん
NGNGhttp://www3.free-city.net/home/espresso/princess/pinkjelly.html
最高画質の無修正画像がたくさん集まってる!
http://www3.free-city.net/home/espresso/bigapple/queen.html
0783デフォルトの名無しさん
NGNG0784デフォルトの名無しさん
NGNG末期のOS/2Worldひとりで書いてたもんな・・・
種村さんはどこへ行ったのかな?
■ このスレッドは過去ログ倉庫に格納されています