トップページ⇒tech
803コメント252KB

Java 高速GUI SWT

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
SWTはJavaでOSのネイティブAPIを直接呼び出し、高速に動作する
GUIツールキッドです。

配布時に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
0412デフォルトの名無しさんNGNG
SWTで、table以外にSwingのもんより遅くなるもんはないんかえ
0413デフォルトの名無しさんNGNG
GoogleAPIでなんか面白いことできないかな。
今の制約じゃだめか。
0414デフォルトの名無しさんNGNG
>>413
SWTと何の関係が・・・?SOAPスレでも立てて言うならともかく・・・。
0415デフォルトの名無しさんNGNG
>>414

>>411の記事の同じページに書いてある。
SWTと何の関係が?(笑
0416デフォルトの名無しさんNGNG
>>413-415
クライアントサイドJavaのプラットフォームとしてのSWT、ってことだろう。

俺もTableさえなんとかなれば、SWTでクライアントアプリ作ってもいいと思う。
0417デフォルトの名無しさんNGNG
4219行のJVM
ttp://homepage2.nifty.com/rohizuka/ka/pa_003_a.htm
0418デフォルトの名無しさんNGNG
>>417
おまえこっちにも貼ってんのかよ
悲鳴サイト注意報
0419デフォルトの名無しさんNGNG
>>413
SWTと関係ないだろうけど、どこで言えばいいのか判らん
これと似たようなプロキシクラスAPIを配布してるようなサイト
・・・(WEBサービスをしてるサイトっていうの?)
を他に何か知ってる?興味あるんだけど
0420デフォルトの名無しさんNGNG
>>419
アマゾンは?
0421デフォルトの名無しさんNGNG
>>419
ちと違う気もするが web サービスってなら ttp://www.xmethods.net なんかどう
0422デフォルトの名無しさんNGNG
>>419
まずぐぐれ。いくつかリンク集にたどり着ける。
http://www.google.com/search?hl=ja&ie=UTF-8&oe=UTF-8&q=SOAP+Web%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
で、前もこのスレで質問して無視されたんだからもうちょっと
話の振り方かんがえたほうがいいんじゃねーの?
0423デフォルトの名無しさんNGNG
>>421-422
ありがとう、探ってみます
素人目には既に.NETのサービスの方がかなり普及しているように見えるのですが・・てスレ違いなので去ります
0424デフォルトの名無しさんNGNG
http://dev.eclipse.org/viewcvs/index.cgi/~checkout~/platform-swt-home/dev.html
に
SWT for Qt/E will be included in the next release of the IBM
WebSphere Micro Environment and WebSphere Customer Environment
products. We are currently working on determining the feasibility
of releasing SWT for Qt/E to the Eclipse project.
って書いてあったから、この前出たWebSphereDeviceDeveloper Ver.5
の中をのぞいてみたらちゃんと libswt-qt-2104.so なんてのがあった。
x86向けのしかなかったけど、Linuxザウルス向けJ9とか出ると
面白そうだななんて思ってみたり。
0425デフォルトの名無しさんNGNG
Qt版ってもう出来てるの?KDEで使いたいんだけど.
0426デフォルトの名無しさんNGNG
>>425 QtがGPLとQPLのダブルライセンスだから
公開できないみたい。上のライブラリもバイナリだけでソースは
見当たらなかった。WSDDは商用アプリだし直接TrollTechから
別にライセンスとってんじゃないかな。ちなみにダウンロードは
こちら。
Free download of WebSphere Studio Device Developer 5.0 is now available!
http://www-3.ibm.com/software/pervasive/products/wsdd/download/
0427デフォルトの名無しさんNGNG
age.
>Mac is back in town. Eclipse on Mac OS X has returned to the regular
>builds. Many of the changes to SWT originally planned for M3 are still in
>progress and will be released as soon as they are ready.
>
>Improved GTK widgets. SWT now makes use of up-to-date native GTK 2 widgets
>for tables, trees, and text.
>
>DBCS support on Motif. SWT now supports double-byte characters on Motif
>window systems.
0428デフォルトの名無しさんNGNG
JETって金払うの?
JETなきゃコンパイルできねーじゃん
0429デフォルトの名無しさんNGNG
>>428
Windows環境でフルネイティブな実行ファイル作りたいならそうだね。
JET 買うしかない。ただ、クライアントJavaが遅いといわれている原因の
大部分は Swing によるものだから、SWT にするだけで十分速くなるよ。
だから全体をネイティブコードにする必要はないんじゃないかな?
0430デフォルトの名無しさんNGNG
>>429
じゃあAWTにしても速くなるんかいな。
0431デフォルトの名無しさんNGNG
1.4 の Swing は早くなったと言われてるけど、実際のところどうなのよ?
ハードウェアアクセラレーションの効果のほどはどうなのよ?
0432 NGNG
なにもネイティブコンパイルせずとも、

JRE込みで配布して、配布したそのJREを利用してJavaアプリを起動するWin32アプリ
をくっつける形じゃだめかな。JREを別途インストールする必要はないし、環境も変更
しないし、JREのそういった形での配布も認められていると思う。

難点はサイズが大きくなることだが。
0433デフォルトの名無しさんNGNG
>>431
そんぐらい自分で試せ。
0434デフォルトの名無しさんNGNG
>>431
体感できるくらいは速くなったよ。
0435デフォルトの名無しさんNGNG
>>434
GC のタイミングも安定してる。
ループぶん回してもカクカクしない。
0436デフォルトの名無しさんNGNG
>>432
Eclipseはまさにそういう配布が想定されているよ。インストールフォルダにJREがあると
そっちがネイティブのラウンチャから呼ばれる。
だからIBMの製品版だと自分でJREを入れる必要がない。
0437デフォルトの名無しさんNGNG
どーでもいいんだけど、どうせNativeAPI使うん
だったら,はじめからWindowsAPIだけでガリガリ
書いたほうが手っ取り早くないか?
あえてJava使う意味あんの?
0438 NGNG
もちろんあるよ。適材適所だよ。
0439デフォルトの名無しさんNGNG
SWTは、まだ過渡期だと思うが、過去のJavaのGUIフレームワークを考えると、
今後の主流となるアプローチかもね。
FreeLicenseで使えるクロスプラットフォームGUIとしては、最強かも。
GTK+はビジネス向けには不安だし、Qtは金がかかる(笑)
AWTは過去の遺物だしSwingはLook&Feelがモッサリしすぎ。
0440デフォルトの名無しさんNGNG
Ruby >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> SWT
0441デフォルトの名無しさんNGNG
>>440
スレ違いだが、Rubyのネイチブコムパイラって無いの?
0442デフォルトの名無しさんNGNG
>>437 一部インラインアセンブラが必要なプログラムを
お前は全部アセンブリで組むのか?
0443デフォルトの名無しさんNGNG
本家のmailing listでvirtual tableに関して興味深い話が。

<1 second to display a table with over 150000 rows.

だって。
0444デフォルトの名無しさんNGNG
キタ━━━━(゚∀゚)━━━━!!!!!!
0445 ◆HLp.OhmimI NGNG
monalipseはやっぱりTableの遅さがネック.
なので,VirtualTableを作ってみた.
https://sourceforge.jp/projects/monalipse/
動かし方はリリースメモ参照.

カラムヘッダだけはTableを利用して,
テーブル本体はフルにカスタムドローする.
とりあえず表示とユーザ操作だけはできるけど,
未実装機能多数でまだ実用には足りない.

多少トリッキーな実装になってるのだけれど,
うちはWindows環境しかないので,他の環境での動作を確認できない.
誰かMotifとかAquaとかで確認してくれると嬉しいのだけれど,どうだろ.
表示が崩れないかってのもあるけど,見た目自体がWindowsのそれを
模倣した形になっているので,他の環境との相性もちょっと心配.

安定してきたらmonalipseで使ってみようかと.
とはいえ,本家MLのLargeTableが完成したらお払い箱だな……
0446デフォルトの名無しさんNGNG
ハカ━━━━(゚∀゚)━━━━!!!!!!
0447デフォルトの名無しさんNGNG
>431
1.4.1xにした途端、漏れのlibretto/WinXPでは動かなくなった。
まあ、既知の問題みたいね。
こういうのが多発しているんじゃないの?
0448431NGNG
>>447
むぅ。そんな事がありましたか。
結局中途半端な Swing よりは SWT 使ったほうがいいのかもしれませんな。
自分でコードを書いてみた感じでも十分な速度を得られたし。
Swing は 1.3 系までしか触れてないけど、ストレスたまるだけだったし。
0449デフォルトの名無しさんNGNG
普通バージョンの付け方からすると
1.4.0は安定版で1.4.1は安定版じゃないと思うんだがどうか
0450デフォルトの名無しさんNGNG
1.4.0はバグだらけだったyo
0451デフォルトの名無しさんNGNG
1.3は開発版かよ
なんとかの一つ覚えって奴だな
0452デフォルトの名無しさんNGNG
まだ1.4は現場では使われてない気がするけど・・・どうでしょ
0453デフォルトの名無しさんNGNG
1回書いたらどこでも動くんだろ?
現場で使われてようと使われていまいと気にすんなよ。
0454デフォルトの名無しさんNGNG
バリバリ1.4使ってまふ
0455デフォルトの名無しさんNGNG
>>447
もしRadeonだったら最新のドライバにすれば直るとおもうよ。
0456デフォルトの名無しさんNGNG
1.4.0は3月でサポート切れです
0457デフォルトの名無しさんNGNG
とてつもなく基本的な質問になってしまうのですが、、

子の widget を削除する Composite のメソッドっでどこにあるんですか。
(java.awt.Component#remove(Component c) にあたるメソッド)

0458デフォルトの名無しさんNGNG
>>457
dispose すりゃその widget は消えるよ。
0459デフォルトの名無しさんNGNG
統合しました。


【統合】Java開発環境スレ

  http://pc3.2ch.net/test/read.cgi/tech/1038118138/

0460デフォルトの名無しさんNGNG
>455
ATI Mobility Radeonだけれど、東芝のサイトでダウンロードできる最新のものだけれどダメだね。
ATIのサイトからはダウンロード出来ないしね。

swing系のアプリを使うと100%の確率であぼ〜ん。
0461デフォルトの名無しさんNGNG
ある Widget のスクリーン上の絶対座標を取得したいです。

どうすればいいですか。
0462デフォルトの名無しさんNGNG
org.eclipse.swt.widgets.Control#toDisplay()
0463デフォルトの名無しさんNGNG
>>460
たぶん、東芝のサイトのは古い。
0464デフォルトの名無しさんNGNG
最近、JAVAの勉強を始めたのですが
背景用のPNGファイルと透過するPNGファイルを
合成して表示するという処理で詰まってしまっています。

それぞれラベルにsetImageしても2つ並んで表示してしまうのですが
こういう時には他のクラスを使うのでしょうか?
それとも、Shell、Layout、Image、Labelとかを正しく設定すればできる
ことなのでしょうか?
0465デフォルトの名無しさんNGNG
swing? awt?
0466デフォルトの名無しさんNGNG
>>464
そういうときはLabelを2つ使うよりカスタムウィジェット作ったほうがいい.
http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-swt-home/dev.html
のSnippetsが参考になるだろう.

もしくはImageDataかImageの段階で重ねてしまう手もあるが.
どっちがいいかはデータ構造によりけり.
0467464NGNG
>>466
ありがとうございます。
勉強がてら、よく読んで色々とやってみます。



0468デフォルトの名無しさんNGNG
464じゃないけど、初心者質問です。

Shell(中身はデフォルトのGridLayout)にツールバー・リスト・カスタムウィジェットを
この順で貼り付けた後に、ツールバーだけを非表示にするには?
swingのようにsetVisible(false)とするだけではツールバー分のスペースが
空いたままになってしまいます。ShellのレイアウトをFormLayoutにする、などしか
ないのでしょうか?
0469デフォルトの名無しさんNGNG
>>468
toolbar.setVisible(false);
shell.layout(true);
しる.

というか,やっぱりこれもSnippets見りゃわかると思うが.
0470デフォルトの名無しさんNGNG
SWTはパフォーマンスいいけど、作るのは苦痛・・・なのは俺だけ?
0471デフォルトの名無しさんNGNG
C#, VB よりはいいよ
0472468NGNG
>>469
素早いレスありがとうございます
0473468NGNG
…出来ませんでした…
GridDataの指定が影響する?
0474デフォルトの名無しさんNGNG
>>473
んじゃsetVisibleじゃなくてdisposeしなきゃだめぽ.
disposeしたくない場合,reparentableならどっかの
Compositeに退避させておけるかも.reparentableとは限らないが.
0475468NGNG
素直にdispose()してみます。
0476464NGNG
おかげさまで透過画像の合成をSWTを使ってできました。

重ねて表示するのは>>466の英文とソースを見て色々試してみたのですが、英文が理解し切れていない
部分もあって、コンポジット2つ作ってsetImageしたラベルを貼り付ける格好になりました。
「Labelを2つ使うよりカスタムウィジェット作ったほうがいい」とのことなのでラベルを貼り付けないで
処理する方法はは引き続き調べているところです。

上記の僕がやった方法だと画像が透過部分がグレーになった矩形で合成されてしまいます。
コンポジットやラベルにSWT.TRANSPARENCY_ALPHAとかを指定しても、上手いことできませんでした。
(このへんの指定とかで、下側の画像を透過してくれるような方法がみつけられませんでした。
もしかして、Bacgroundカラーしか透過できないのでは…とも思ったりしたのですが、どうなんでしょう)

そこのところはGCで下になっている画像の部分を切り出しImage化して、上になっている画像、
マスク、切り出した下側の画像のそれぞれのImageDataからbyte[]型のデータを
とってきて合成し、もとの上になってるラベルのImage書き換えるようにしました。

なんか、むりやりって感じもしますが、いい勉強になりました。
どうも、ありがとうございますた。
0477デフォルトの名無しさんNGNG
>>476
これまた英文になっちゃうけど,
http://www.eclipse.org/articles/Article-Writing%20Your%20Own%20Widget/Writing%20Your%20Own%20Widget.htm
これ見るのもいいかも.
PictureLabelの改造でいけるんでは.

SWT.TRANSPARENCY_ALPHAはウィジェットスタイルじゃないでしょ.
スタイルに関しては各クラスのJavaDocに載ってる.
Labelに関しては,背景透過の制御はできないっぽいけど.

で,どう解決したのか今ひとつわからないのだけど,
もしかして既にLabelを重ねる必要がなくなってたりしない?
サイズが違うにしてもなんにしても,1つのImageにまとめることができてるなら,
それを表示する1つのLabelで用が済んでるんじゃ.
0478464NGNG
>>477
情報ありがとうございます。
PictureLabelというのも試してみます。ざっと読んでみた感じでは
たしかに使えそうな予感。まずは、読むのをがんばるです。
直接ImageDataのbyte[]を書き換えるよりは良さ気です。

それと言われてみれば確かLabel1つで済みそうです。
これも練習がてら、やってみます。


ちなみにXXXXXが透過画像のImageDataだとして、8ビットPNGでは以下のように
書いても透過マスクデータが取得できないんですが、そういうものなんでしょうか?
Image mask = new Image(display,XXXXX.getTransparencyMask());
(GIFだとできるんで、読み込んでいるPNGファイルの方が悪いのかも)
0479デフォルトの名無しさんNGNG
0480デフォルトの名無しさんNGNG
0481デフォルトの名無しさんNGNG
0482デフォルトの名無しさんNGNG
保守
0483デフォルトの名無しさんNGNG
>>24 のeclipsecolorerをDLしてみたんだけど、
これってどうやって実行するの?
eclipseのplug-inなのにplugin.xmlがzipに無いし…。
bat叩いても、実行出来ない…。

誰かDLして動作確認した人っています?
0484デフォルトの名無しさんNGNG
追記です。
test_designer.batを実行すると
Exception in thread "main" java.lang.NullPointerException
at org.eclipse.jdt.core.JavaCore.getDefaultOptions(JavaCore.java:1151)
at org.eclipse.jdt.core.dom.AST.<init>(AST.java:76)
at ru.nlmk.swt.designer.TSWTDesigner.run(TSWTDesigner.java:254)
at ru.nlmk.swt.designer.TSWTDesigner.main(TSWTDesigner.java:451)
ってエラーが出るんだけど、回避方法が分かりません・・・。
0485483NGNG
自己レスです。
jdtcore.jarのバージョンが悪かったみたいです。
旧バージョンのものと置き換えたら上手く実行されました。
0486デフォルトの名無しさんNGNG
http://www.eclipse.org/documentation/html/plugins/org.eclipse.platform.doc.isv/doc/reference/api/index.html
から読めるオンラインドキュメントをまとめてダウンロードしたいんですが、
どこかにまとまって置いてないですかね?

最終手段はwgetか…
0487デフォルトの名無しさんNGNG
SWTのTextで質問させてください。

通常、Endキーでキャレットが最後に移動すると思いますが、
これを無効にすることってできますか?
0488デフォルトの名無しさんNGNG
KeyListenerでもいじれば
0489デフォルトの名無しさんNGNG
インターネッツを食い尽くしてやる。
0490デフォルトの名無しさんNGNG
>>488
KeyListenerでは無効にはできないのでは?

ソース見てたんだけど、
SWTってデフォルトキー操作の変更でできなさそうじゃない?
0491デフォルトの名無しさんNGNG
>>486 なぜまず自分のパソコンのなかのオンラインマニュアルを探さないのか...
0492デフォルトの名無しさんNGNG
>>491
感謝

\plugins\org.eclipse.platform.doc.isv_2.0.0\doc.zip
の中にありました。
0493デフォルトの名無しさんNGNG
>>490
Textに以下のようなKeyListenerをつければ?ってことね

KeyEventからキーコードをとってきてEndのときは無視、
それ以外のときはしかるべき動作をする
0494デフォルトの名無しさんNGNG
>>493
違う。
SWTはデフォルトのキー操作を変える方法は持ち合わせていないと思う
ということ。
0495デフォルトの名無しさんNGNG
340 名前:デフォルトの名無しさん :02/12/31 15:23
Java厨も哀れだよな。
100% Pure Java(プ の思想に反するSWTで無理矢理盛り上がってるんだもんな。
そんなのだったら初めからMSのWFC使ってれば良かったじゃん。
0496デフォルトの名無しさんNGNG
WFC って Liunx でも動く?
0497デフォルトの名無しさんNGNG
>>495
まったくだ。SWTってWFCとなんら変わらんね。
0498デフォルトの名無しさんNGNG
WFCがクロスプラットフォームだったら、そっちが盛り上がってたかもね。
0499デフォルトの名無しさんNGNG
>>498
クロスプラットフォームかつ、ライセンスがオープンなら盛り上がってたかもな。
0500デフォルトの名無しさんNGNG
>>499
> ライセンスがオープン
ライセンスがオープン?
0501デフォルトの名無しさんNGNG
>>500
ロイヤリティフリーで自由に使える。
0502IP記録実験NGNG
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/

1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。

27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?

38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。

73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
0503デフォルトの名無しさんNGNG
>>584
グッジョッブ
0504デフォルトの名無しさんNGNG
僕の肛門のAPも記録されそうです
0505デフォルトの名無しさんNGNG
>208 名前:すきやきっち@似非学者 ◆a2T922RdeA

お前が2ちゃんねる型の掲示板群をつくれ。

そこで実験しろ。
0506デフォルトの名無しさんNGNG
ニュー速を閉鎖しないのは、やはりニュー速住人が他に行く事で2chから人がゆっくり離れていってしまう事を警戒してるのでは
ないだろうかと物凄い偏った邪推してみるテスト。
0507デフォルトの名無しさんNGNG
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 138720人 発行日:2003/1/9

年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。

そんなわけで、年末に予告したIP記録ですが実験を開始しています。

「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0508デフォルトの名無しさんNGNG
おぺら6.05からテスト
書けてるよ〜
0509デフォルトの名無しさんNGNG
ほら!

うんこしないよ
うんこしないよ
うんこしないよ

ほら!
0510デフォルトの名無しさんNGNG
>>22 内容証明が届いた日からの利子もつけて、賠償汁!って判決なんだから、
内容証明による削除要請があり次第、片っ端から消せ!ってことでしょ?
0511デフォルトの名無しさんNGNG
誤った内容である
>内容証明による削除要請があり次第、片っ端から消しなさい。
という部分。及び、それを根拠とするデンパな判決という結論。
■ このスレッドは過去ログ倉庫に格納されています