Java 高速GUI SWT 3

■ このスレッドは過去ログ倉庫に格納されています
2006/11/30(木) 18:03:19
とりあえず、前スレ落ちてから時間たつけど、立ててみた。

前スレ

Java 高速GUI SWT 2
http://pc8.2ch.net/test/read.cgi/tech/1068349883/
2007/12/13(木) 20:15:47
>>311
ひょっとして、読んでも理解できないのか?
2007/12/13(木) 20:29:25
>>312
おー。理解できんよ。

HWNDがSwingから利用できるところにあるって情報だけじゃん。

SwingのウィンドウがHWNDもってるか、とかまったく書いてないのに、
どうやってSwingのウィンドウにSendMessage()できるかどうかわかるんだ?
2007/12/13(木) 20:34:57
>>313
教えてほしいなら AWTスレか JNIスレで質問してくれ。
とりあえず SWTスレで続けるのはスレ違いだから。
2007/12/13(木) 20:41:01
はいはい。使い物になるSendMessage()はSwingでは無理、ということで落着。
2007/12/13(木) 20:54:13
sunのドキュメントを読んでも理解できない程度の技術力の奴が
よく結論出せるなー。
2007/12/13(木) 21:17:15
なんだ、勘違いに気づいたバカが無理やり仕様広げて自分に有利な結論導いたのかw

「それでは使い物にならない」

しかもバカがまったく隠せてないというオチ
2007/12/13(木) 21:40:24
言い負かされた老害エンジニアがよく使う手。
2007/12/13(木) 22:11:41
何だコリャ。実証コードが出たとたんに必死の自演叩きかw
sage と半角使い分ければ他人になれるとでも思ったのか。
2007/12/13(木) 23:13:28
で。
ネイティブAPIをちょっと使うだけならJNIとかでバインディングぐらいさっさと書けばいいものを、SWTをフル実装するような話に膨らませてるのは結局何が主張したかったんだ?
そもそもSWTのSendMessageなんて非公開クラスのメソッドだろうに。
2007/12/13(木) 23:35:12
キチガイが粘着してるだけなんだからスルーしろよ…
2007/12/14(金) 02:26:09
なあ、SWTの存在意義ってSendMessageだけになってしもたん?
2007/12/14(金) 04:25:11
他になにか?
2007/12/14(金) 04:47:22
それすら隠し API 扱いだし。
2007/12/14(金) 10:17:00
>>322
なんちゃってじゃない、ネイティブL&Fだろう。

326デフォルトの名無しさん
垢版 |
2007/12/14(金) 21:03:58
public 宣言されてるのに 隠しAPI とはバカまるだし。

さぁ早く早く。>>299 のコードを利用して "Hello World" をウインドウに表示してみろやクズども!
2007/12/14(金) 21:23:14
>>281,291,294,296,302,305,307,326
そのままコテハンでも付けてくれると無視しやすくて嬉しい。
328デフォルトの名無しさん
垢版 |
2007/12/15(土) 07:27:33
ほんと不毛だな
2007/12/17(月) 12:10:43
「SendMessage 使える」ってのを、
「SWT のコントロールは Windows のウィンドウだから SendMessage でメッセージ送って
いろんなことができる」じゃなくて、文字通り「SendMessage API が呼び出せる」と解釈して
しまった人がいた、というだけのことでそ・・・

Windowsあまり使わない人が読めば後者の意味にしかとれないだろうし。
2007/12/17(月) 12:22:32
SendMessage ベースのメッセージドリブン設計が好きなら素直に VB でも使っとけよと。
2007/12/17(月) 15:18:11
>>329
いや、Windows使ってた奴が >>310 の文書読んで理解できないって事はないでしょ。
2007/12/17(月) 15:21:21
×Windows使ってた奴
○Win32 API使ってた奴

>>301 も Win32 API 使ってた奴の発言とは思えんし……
2007/12/19(水) 15:25:31
>>205
亀レスだけど。
BrowserにSWT.V_SCROLLスタイルけると、2重にスクロールバー付いたりして、うまく動かないねえ。

import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.browser.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.events.*;

public class SimpleBrowser {
public static void main(String[] args) { new SimpleBrowser(); }
public SimpleBrowser() {
Display d = new Display();
Shell shell = new Shell(d);
shell.setLayout(new FillLayout());

Browser browser = new Browser(shell, SWT.V_SCROLL);
browser.setUrl("http://www.google.co.jp");
browser.getVerticalBar().addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) { System.err.println(e.y); }
});

shell.open();
while(! shell.isDisposed()) if(! d.readAndDispatch()) d.sleep();
d.dispose();
}
}
2008/01/22(火) 16:52:01
Shellクラスを作成するときにSWT.CLOSEを指定しなくても閉じるボタンがでます。
閉じるボタンを無効化するにはどうすればいいのでしょうか?
335デフォルトの名無しさん
垢版 |
2008/01/22(火) 21:01:45
Display display = new Display();
Shell shell = new Shell(dislay, SWT.TITLE);
shell.setText("hoge");
shell.open();
2008/01/23(水) 16:50:45
>>335
SWT.MINやSWT.MAXを指定すると自動で閉じるボタンがついてしまうようでしたが、
SWT.TITLEだけにしたらできました。
ありがとうございます。
2008/02/01(金) 19:54:37
いきなりですけど、C++からSWTを使う方法ってありますか?
調べた範囲ではJNIを使えばできそうかなと思うんだけど、
もっと簡単に使う方法とかないかな。
338デフォルトの名無しさん
垢版 |
2008/02/01(金) 20:50:33
C++からSWTって無理なんじゃないの?
できたとしても、マルチプラットフォームにならず、
特定のプラットフォームに依存したものになりそう・・。
2008/02/01(金) 21:31:28
素直にC++ベースのGUIライブラリ使えよ。
マルチプラットホームにしてもQtとかwxWidgetsとかあるんだから…

# とか書いておいてなんだけどぐぐったらこんなの出てきた。動くかどうかは知らんが。
# http://www.pure-native.com/swtcpp/swtcamp.html
340デフォルトの名無しさん
垢版 |
2008/02/24(日) 22:01:02
Swingスレとマルチで失礼します。

RTF文章を何らかの形で表示(編集できなくてもOKです)させたいと思い、SWT_AWTを経由してSwingのJEditorPaneを使ってみたのですが、
実装があまりにも古すぎてJREに同梱されているLICENSE_ja.rtfすらマトモに読めない、という情けないことになっています。
一応他に何らかの代替/回避方法はないかSwingスレで聞いてみましたが、SWT側でなんらかの形でRTFを表示させる方法はないでしょうか?
多少ググって見たのですが、どうも一字毎に文字列・書式を解釈する、という方法しか引っかかってこないようです
2008/02/25(月) 11:25:25
>>340
sourceforge.netでjava rtf libraryで検索かけたら
いろいろ出てきたので有用なのもあるかもしれん
342340
垢版 |
2008/02/26(火) 10:25:50
>>341
お返事ありがとうございます。
うーん、この辺を利用or参考にして、自分でパースしていくしかないのかなぁ……。
単にRTF文章をSWT上で表示させたいだけなんですけどね(苦笑)
343デフォルトの名無しさん
垢版 |
2008/02/28(木) 23:04:26
SWTでComposite内にGroupを作成し、Tab順を指定するプログラムを作っているのですが
Compositeのコンストラクタ内にthis.setTabList(new Control[]{ボタン,テキスト}の
ようにしてもComposite内に配置してあるコンポーネントはTab順が決めれるのですがGroup内の
コンポーネントをControl[]の配列に入れるとエラーが出てしまいます・・・・
何か良い方法ないでしょうか・・?
宜しくお願いいたします
344デフォルトの名無しさん
垢版 |
2008/02/29(金) 00:06:06
このケースは親子関係のないコントロールを指定しているために
エラーが発生します。
Compositeに関してsetTabList()メソッドを指定して引数にGroupを要素に含む配列を
指定し、再度、Groupに関してもこのメソッドを使用しそのGroup内の
コントロールを指定します(GroupクラスはCompositeクラスを
継承しているのでこのメソッドが使用できます)。そうすれば、
もしもGroupにTab
のトラバーサルが来たときにはGroupはコントロールの性質上フォーカスを
もてないので、その子のコントロールにフォーカスが移ります。その順序は
Groupに対してメソッドで指定した順序、メソッドを使用していなければ
OSでのデフォルトの順序になります。
2008/03/11(火) 09:55:36
CoolBarの前回の使用状態を復元したいのですがどのような方法をとるのが適切でしょうか?
346デフォルトの名無しさん
垢版 |
2008/03/11(火) 17:55:08
使用状態とは?
復元とは?
具体的にどう復元したい?
2008/03/11(火) 18:05:56
位置のことです。
移動ができるのでその移動した状態に復元したいのです。
348デフォルトの名無しさん
垢版 |
2008/03/11(火) 19:06:41
CoolBarクラスの
getItemOrder(), getItemSizes(), getWrapInduces()
setItemLayout()
を使用すると保存と復元は可能。
2008/03/11(火) 19:45:16
自分で保存しないといけないんですね。
XMLEncoder,Decoder的な便利なものがないのかなと思ったのですがそうもいかないですか。
ありがとうございました。
2008/03/11(火) 23:00:25
SWT & JFaceの必須ライブラリって今変わってるんでしょうか?
かなりの時間かけてほぼ総当たりで調べてようやく分かったのですが他に分からない人が出てきた場合のために・・・

/plugins/org.eclipse.swt.win32.win32.x86_3.3.3.v3349.jar
/plugins/org.eclipse.jface_3.3.2.M20080207-0800.jar
/plugins/org.eclipse.equinox.common_3.3.0.v20070426.jar

JFaceのソース
/plugins/org.eclipse.rcp.source_3.3.3.r33x_r20080129-8y8eE9UEUWI6qujeED0xT7bc/src/org.eclipse.jface_3.3.2.M20080207-0800/src.zip

優しさと見せかけて自分メモでした。
すみません。
2008/03/12(水) 00:46:27
Mavenで取ってこれないか?
2008/03/12(水) 04:01:49
>>350
いや、こうやって記録残してくれると助かるよ。
例え助かる人間が一人や二人でも、それに掛かる時間がすごい短縮できるから。
俺もウザがられつつも、残すようにしてる。
2008/03/15(土) 12:02:18
JiglooのSWTエディタ使ってる人いる?
使い方が悪いのかもしれないけど、Swingに比べてバグが非常に多くない?
354デフォルトの名無しさん
垢版 |
2008/03/26(水) 01:47:07
JDesktopPane に対応する SWT のコンポーネントって何?
2008/03/28(金) 03:09:48
メッセージループなんて 10 年ぶりだよ!
ちょっと感動。
2008/04/08(火) 19:35:01
ネット証券で提供してるjiniツール。winとmacで動くって聞いたからlinuxでも動くかと思ったらSWT使ってて動かないでやんの
まったく厄介なものを作ってくれたぜ
とりあえず愚痴ってみる
2008/04/08(火) 20:25:52
Jini とは珍しいもの使ってるな。ウヤラマシイ
2008/04/08(火) 20:38:08
うはjnlpと間違えてた
2008/04/11(金) 02:37:57
よくわかんないのですが、SWTってLinuxでも動くんじゃないんですか?
2008/04/11(金) 10:57:42
JavaでWORAが実現するんだ、と目を輝かせていたあの頃……
2008/04/11(金) 11:05:34
>>360
騙されやすい人もいたもんだ……
2008/04/11(金) 12:50:10
具体的に何が動かねぇのよ?
どこまで Java が吸収してどこまでプログラマが意識しなきゃいけないか
分かってない奴が、自分のバグと無知識の言い訳にしてる事の方が多いんだが。
2008/04/11(金) 13:41:33
知識は囲い込むべきではない
2008/05/05(月) 13:28:45
>>360
少なくともWebアプリの分野では完全に実現されてるぞ。
Winで開発、Linuxで運用とか当たり前のようにしてるからな。

まぁ、PHPやRubyでも簡単に実現されてるが。
2008/05/13(火) 03:20:17
まあ、デバイスも扱わずスレッドも使わないならできて当然でもある。
それでもファイルの扱いとか、どこでも同じ環境というのにJavaには及ばないな。
366デフォルトの名無しさん
垢版 |
2008/05/13(火) 16:42:50
しかし、JavaはGUIに弱いことは明らか。
Swingのファイルダイアログは遅すぎ・・。
やはり、Swingの最大の失敗はlook & feelと
ネイティブリソースを使えないことだな。
Windows Vistaが出たことで決定的になった。
2008/05/13(火) 16:49:15
ファイルダイアログが遅くなったのはJava6SEでFileが遅くなったからなので、look&feelとネイティブリソースとは関係ない話だね。
GUIに弱いことをあらわす事例にならんね。
2008/05/13(火) 17:11:21
>>367
GUIに弱い事例になるだろ。
u2から悪化していまだに放置だけど、u1までは普通に動いていたのだから。

ネイティブとは関係ないけど。
とはいえSwingで問題になりやすいのはそれくらいか。java.awt.Desktopのバグバグ問題はどーしようもないけど。
2008/05/13(火) 17:59:06
> java.awt.Desktopのバグバグ問題
具体的にどーぞ
2008/05/13(火) 18:07:31
>>366
スレ違い。ここはSWTスレ。
371366
垢版 |
2008/05/13(火) 23:17:00
要するに、
Swingとは違い、SWTのファイルダイアログは優れているということを
言いたかったのだ。
http://www.eclipse.org/swt/R3_4/new_and_noteworthy.html
SWT3.4でもフファイルダイアログに関する上書き確認のAPIが実装されるらしい。

SWTがSwingを追い越す日も近そうだ。
2008/05/13(火) 23:34:13
SWTはWindowsで使うぶんには使いものになるよな
2008/05/14(水) 03:58:12
使えるけど、開発する側にはまわりたくないのがSWTってところかと
374あぼーん
垢版 |
NGNG
あぼーん
2008/05/24(土) 13:20:07
Windowsだけってのはねぇ・・・・
>>366
Swingのチェックもしてますか?SWTだけだと厳しいぞ、この先生きてくの。
SWTは、eclipseではうまく動いてるけど、アプリ作って配信して動かすとかまで考えると
PureJavaの方が・・・・っていう話もあるんだぞ・・・

UIが弱いというのは否定しないがね、SWTも含めてになっちまうが。
376デフォルトの名無しさん
垢版 |
2008/06/14(土) 01:42:48
SWTってアンチエイリアシングできないの。
2008/06/18(水) 03:01:35
わたしもSWTのアンチエイジングで肌年齢が13歳若返りました
378あぼーん
垢版 |
NGNG
あぼーん
379デフォルトの名無しさん
垢版 |
2008/06/20(金) 09:57:17
2chで住所晒されてるなんて悲惨だな
380デフォルトの名無しさん
垢版 |
2008/06/23(月) 22:05:16
>>67,70,71
だいぶ前の話になるけど、ProjectionViewerをスタンドアロンで
使用するのは、WorkbenchPartとかを継承してる時点で無理なんじゃないかな。

WorkbenchPartはUIをXMLとかで定義するので、SWT/JFaceのスタンドアロンアプリとは
作りが全然違うしね。
381使用書無しさん
垢版 |
2008/06/23(月) 23:48:14
おいぼんくらswt廚
swtでこれ http://jdrafter.sakura.ne.jp
に匹敵するプログラム作ってみろ。これswingベースだ出来るかばか
頭でっかちのswt廚のばか
2008/06/25(水) 01:27:35
>>381
おお、swingでこれは頑張ったな。
お前つくったん?

でもこの手のツール作るなら、やっぱRCPでやってみたいな。
SWT選んで、Draw2DとGEFか。
描画の非力さと、GEFのメタボ設計には泣かされるだろうな。
こっそり裏でGraphics2Dは使わざるを得ないだろうな。

うん、やりたくない。

で、Swing上で動くことの利点はなんだ?
ブラウザ上でアプレットで動かして、共同作業とかできたりするの?
2008/06/25(水) 12:36:10
>>382
Swingスレでもおなじのはってけなしてるから
SWTだからとかはかんけーねーぞ

GKのいつもの手だ
2008/06/25(水) 12:40:48
>>382
釣られすぎ
385使用書無しさん
垢版 |
2008/06/26(木) 22:54:53
>>383 >>381はswingベースだよ。
描画と編集を受け持つクラスもJComponentのサブクラスだから、アプレットでも
簡単に表示と画像編集が可能だよ。

2008/06/27(金) 04:14:24
>>385
日本語理解しろ
2008/06/28(土) 11:42:19
>>386

何興奮してるんだ?
388デフォルトの名無しさん
垢版 |
2008/06/28(土) 16:35:29
超初心者で申しあけございませんが、
画像を複数枚表示させたら画像がちらつきます。
repain();でもちらつきます。
どの言語を打ったら直るのでしょうか?
2008/06/28(土) 20:53:51
>>387
糞コテハン乙
2008/06/28(土) 23:30:03
ProjectionViewerをスタンドアロンで動かせるようになったよ。
ただ、折りたたみをしようとするとおそらく描画スレッドで
例外(NullPointerExceptionだったかな)が発生して
普通のエディタとしてしか使えないんだけど、一応報告まで。
391あぼーん
垢版 |
NGNG
あぼーん
392使用書無しさん
垢版 |
2008/06/30(月) 00:54:26
>>388
javaのバージョンはいくつ?
componentと同じサイズのVolatileImageつくってそれのGraphicsをクリエートして
それに画像書き込んだあと、コンポーネントにdrawImageするっていう古典的な方法
を試してみたら。
393あぼーん
垢版 |
NGNG
あぼーん
394デフォルトの名無しさん
垢版 |
2008/07/09(水) 22:58:04
SWTってOS依存だっけ?
2008/07/10(木) 02:04:58
うむ
396あぼーん
垢版 |
NGNG
あぼーん
2008/07/14(月) 23:46:42
うむ
2008/07/20(日) 22:07:38
http://pc11.2ch.net/test/read.cgi/tech/1164877399/381
2008/07/21(月) 01:14:00
クソコテ
400デフォルトの名無しさん
垢版 |
2008/07/22(火) 21:26:28
TextSS
401デフォルトの名無しさん
垢版 |
2008/07/27(日) 02:33:28
SWTでwindows向けに作成されたGUIアプリは、Linuxでは動作しないという理解でOKですかね?
2008/07/27(日) 04:15:09
いやうごくだろ。
OLEとか使ってなければ。
2008/07/27(日) 05:25:34
Windows向けということはSWT汎用ではないだろうから動かないのは当たり前かと

あとLinuxでも動くといってもSWTがサポートしてある環境じゃないとダメ
すべてのLinuxで動くわけじゃない
2008/09/12(金) 17:30:57
SWT を使ったサーブレットを作ったのですが、シェルを表示しようとすると
落ちてしまいます(Tomcat ごと)。

ディスプレイ関係なのかなんなのか分からないのですが、この様な症状に
陥った方、いらっしゃいますか?

ちなみに落ちちゃうのでエラーメッセージとかはないです…。
405デフォルトの名無しさん
垢版 |
2008/09/12(金) 18:25:42
ニュースサイトなどで定期的に更新される画像を指定した時間ごとに取得して、
保存・蓄積していくようなものを作りたいんです。
その上で、ブラウザ上でのクリックなどで画像を指定すれば取得できるようにしたいんです。

SWTのBrowserウィジェットは
javaとのデータの受け渡しを行うメソッドが無いという情報を見たので、
OLEを使ってIEコンポーネントを呼んでるんですけどこの方法ってどうですかね?

現在表示されているサイトのHTMLを取得するところまで作成したんですけど
初心者に毛が生えた程度のレベルなので
ほんとにこの方法が最善なのか分からなくて・・・。
ブラウザ上のクリックされた画像のファイル名を検出したりとか
そういうことできるのかなー?
漠然としててすいませんが、どなたかアドバイスよろしくお願いします。
406デフォルトの名無しさん
垢版 |
2008/09/12(金) 21:08:05
>>404

Display display = new Display ();
Shell shell = new Shell (display);
Label label = new Label (shell, SWT.NONE);
label.setText ("ほげ");

shell.pack();
shellopen();

while (!shell.isDisposed ()) { // ← !がないと落ちる
if (!display.readAndDispatch ()) display.sleep ();
}
display.dispose ();
}


2008/09/12(金) 21:09:57
>>406
すみません、語弊がありました。

落ちるというのは Java のプロセスが異常終了する、という意味です。
2008/09/13(土) 02:57:47
>>404
OSも書かないし、JavaやSWTやTomcatのバージョンも書かない、サンプルコードもない。
エスパーの存在を信じてるんだな…
2008/09/13(土) 17:22:42
なんでサーバ上にGUIを表示させようと思ったのか気になる
2008/09/14(日) 10:58:46
なんでサーバ上にGUIを表示させようと思ったのか気になるのかが気になる
2008/09/14(日) 12:20:25
>>404がなにをしたいのかわからん
2008/09/14(日) 22:21:37
>>408
MacOS 10.5、Tomcat 5.5、SWT 3.3 になります。

サンプルコードは…本当に単純にシェルを表示しようとしているだけです。
単体で Eclipse 上からアプリケーションとして実行すると表示できるのは
確認しています。

Tomcat 上で実行した時だけ落ちてしまいます。

何でサーバー上でダイアログを出したいかと言うと、ライセンス認証を
行いたいためです。

すみません、すぐ出かけなければならないのでまた今度もう少し詳しく
書きます。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況