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/11(火) 20:48:04
バカが出たぞー
2007/12/11(火) 21:34:00
時代はバカアゲ!とか言い出しそう。
2007/12/11(火) 22:45:11
おお、SWTスレがあがってる!
と思って見にきてみたら・・・・・
2007/12/11(火) 22:53:19
久しぶりに盛り上がり(?)ネタが 「SWT 使うほどじゃネェんじゃね?」 じゃな…
2007/12/12(水) 00:18:02
釣りだろ?常識的に考えて・・・
2007/12/12(水) 09:53:28
>>285
いやいや、アンチの言い分がわかって面白かった。
2007/12/12(水) 18:05:41
>>281の発言は永久保存だな。
2007/12/13(木) 00:49:39
>>266
>一回作ればほぼ変更不要。

ほんとうに一回作れば変更不要だったらいいんだがな
2007/12/13(木) 00:51:13
それはビビリすぎ。
291デフォルトの名無しさん
垢版 |
2007/12/13(木) 01:14:40
で?
>>270 は尻尾を巻いて逃げたのかい?
大風呂敷を広げてみっともないねぇ。
2007/12/13(木) 01:16:47
バカが出たぞー
2007/12/13(木) 01:18:49
>>291はまだ自分のバカさに気付いてないのか
気付いたら恥ずかしくて帰ってこれないだろうに
294デフォルトの名無しさん
垢版 |
2007/12/13(木) 01:51:02
ねぇまだ?
2〜3時間でできるんだろ?
2007/12/13(木) 01:53:35
どこまでがんばれるか、彼の今後の活躍にご注目ください。
296デフォルトの名無しさん
垢版 |
2007/12/13(木) 02:14:18
どう頑張ってもSWTを2〜3時間で作るのは無理だろ。
2007/12/13(木) 08:07:28
SWTを2〜3時間で作るなんていう話がどこででてるんだよw
2007/12/13(木) 11:47:15
SendMessageはSWTの肝だろ。そんなものを2〜3時間で作れるっていうなら見せて欲しい
2007/12/13(木) 14:59:41
JNIは全く使ったことがなかったんでJNIの入門HP見ながら書いたけど
ホントにSendMassage呼び出すだけのコードだけど20分ぐらいで出来たよ?
まぁこのままじゃマトモには使えないんでSendMassageで何をしたいのかの用途に合わせてコーディングした方がよさそうだけど

--WindowsAPI.java
public class WindowsAPI{
 static{
  System.loadLibrary("WindowsAPI");
 }
 public WindowsAPI(){
 }
 public native int SendMessage(int hwnd,int msg,int wparam,int lparam);
 }
--

--WindowsAPI.c
#include <windows.h>
#include <jni.h>
#include "WindowsAPI.h"
#include <stdio.h>
JNIEXPORT jint JNICALL Java_WindowsAPI_SendMessage(JNIEnv *env, jobject obj, jint hwnd, jint msg, jint wp, jint lp){
 return (jint)SendMessage((HWND)hwnd,(UINT)msg,(WPARAM)wp,(LPARAM)lp);
}
--
2007/12/13(木) 15:01:09
つか書いてる時間よりも入門HP読んで勉強してる時間の方が長かった
2007/12/13(木) 15:04:24
Swingが自前で描画している、OSにはウィンドウと認識されていないような子ウィンドウに
SendMessage()を送ったときの効果を再現してくれるアダプタだかなんだかは?
302デフォルトの名無しさん
垢版 |
2007/12/13(木) 18:05:50
>>299
で?
たったそれだけでWindowsアプリが書けるとでも思うの?
何の役にも立たんゴミ書いて満足?
2007/12/13(木) 18:20:48
>>299
SendMessageを使う部分がJavaアプリケーションのどれくらいの部分になると思ってるんだ??
Windowsガチイガチアプリが書きたきゃ、C#で書いた方が楽だろう?
2007/12/13(木) 18:28:05
そんな、3時間過ぎたからって、みんなして責めなくても。
3日くらい待てば、>>299はきちんとした仕様と実装を作ってくれるんだよ。きっと。
305デフォルトの名無しさん
垢版 |
2007/12/13(木) 19:19:30
>>299
それ使って Hello world! って表示できるの?
2007/12/13(木) 19:24:52
納得できないなら納得できないやつが納得できるまで自分で書けばいいんじゃね?
取り合えずSendMessageを呼び出すだけなら確かに呼び出してるし
307デフォルトの名無しさん
垢版 |
2007/12/13(木) 19:37:40
書く必要無いよ。だって既に完成品があるんだもん。SWTが。
とりあえず、じゃやなくて、役に立つか立たないか、が問題だね。
学生が学習の為に実験的に書いたのを誇らしげに「どうぞ使ってください」って言われてもねぇ・・・
2007/12/13(木) 19:40:02
役に立つかどうかの前に、スレ違いかどうかを問題にしてくれ。
2007/12/13(木) 19:55:47
>>306
SWTではSendMessage()使える → SendMessage()くらい自分で用意してSwing使え
→ そんなの作れるのか?という流れだから、
SwingでGUIを作ったときに、そのウィンドウにSendMessage()できなきゃだめ。
2007/12/13(木) 20:04:56
>>309
http://java.sun.com/javase/ja/6/docs/ja/technotes/guides/awt/AWT_Native_Interface.html
2007/12/13(木) 20:13:35
>>310
ポインタを示すんじゃなくて、自分の言葉で言えない?
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上で動くことの利点はなんだ?
ブラウザ上でアプレットで動かして、共同作業とかできたりするの?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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