Java 高速GUI SWT 3
■ このスレッドは過去ログ倉庫に格納されています
とりあえず、前スレ落ちてから時間たつけど、立ててみた。
前スレ
Java 高速GUI SWT 2
http://pc8.2ch.net/test/read.cgi/tech/1068349883/ ↑は ENTER 書き込みの話。日本語入力は関係なかったな。 何百個も列があるテーブルを作ったんだが、
各TableColumnの表示幅の合計が33500くらいを超えると
それ以降のテーブルヘッダが表示されなくなった・・・。
(表示幅33500以前のヘッダは表示される)
これって仕様なのかしら(´・ω・`)
解決方法知りませんか? StyledText って軽くてシンプルで便利だなw >>516
winのコントロール全般に、その幅で裁ち切られるんじゃなかったっけ。
あと、そもそも何百列も一度に表示するのは設計ミス。 >>519
そうなんですか(´・ω・`)じゃあどうしようもないってことなんですかね。
>あと、そもそも何百列も一度に表示するのは設計ミス。
一度に出してテーブル内のスクロールバー移動で
最後まで見えるようにしろと言われまして・・・ エクセルのピボットテーブルみたいなノリだなw
要求が馬鹿過ぎ。
表示だけvcで作ってjniで呼んだら? Shell をオープンするとどうしてもそっちにフォーカスが移動してしまうんだが
フォーカスを受けない Shell って作れないのかな? AWT でいう Window や Swing の JWindow みたいな。 JProgressBar の setIndeterminate(true) と同じ状態って ProgressBar でできませんか?
Mac の進捗バーのあのうねうねが出したいんですが。 >>522
Tooltipが参考になると思われ。
>>523
できた気がする。 Composer - SWT HTML Editor Widget swtのwysiwygエディタなんですけど
Composer - SWT HTML Editor Widget
http://sourceforge.net/projects/swt-composer/
これの使い方分かる人いませんか?
また、これ以外にswtのwysiwygエディタってなにかありますか?
>>528
「swtのwysiwygエディタ」じゃなくて、Eclipse用のHTML WysiWygエディタなのか。
もしそうだったら、このスレじゃなくて、Eclipseスレに行ったほうがよいよ。 Browser 上で選択されているテキストを取得したいんだけど何か良い方法はないかな? http://pc12.2ch.net/test/read.cgi/tech/1137771139/
【OLE】オートメーション総合スレ【ActiveX】
javaからは直接呼べないけどな。
vbかvcでもどぞ。 >>532
ActiveXコントロールをSWTアプリケーションへ統合する
ttp://www.ibm.com/developerworks/jp/opensource/library/os-activex/
そりゃ Browser じゃできないって事で良いですかね。 Mac だと TreeItem に 4x4 くらいの小さな画像設定した時に、勝手に 16x16 くらいに
引き延ばしやがるのかな。 >>537
SWTのバグではなく、OSの仕様だと思われ・・・
TreeItemの1番目にたとえば、16x16のイメージを設定している場合、
2番目、3番目それ以降に異なるイメージを設定しても、1番目のTreeItem
がデフォルトサイズとなり、勝手にOSが引き伸ばしたイメージを
作成し設定する。
これは、Treeだけではなく、TableやTabFolderでも同様。
1番目のTreeItemをあえて使わないとか、透過GIFで大きいイメージを
設定するとか試してみれば?
Browserクラスがサポートするブラウザとブラウザのバージョンが分かる
サイトってどこかにありますか? >>540
ttp://eclipse.org/swt/faq.php >>539
すみません、別の問題だったみたいです。
大きさの違う画像を再設定した場合、新しい画像が以前の画像の大きさにリサイズされてしまうという
話でした。画像の再設定後に layout() や computeSize() を試してみましたが、どうも以前のサイズが
残ったままのようです。サンプルソースおいておきます。何かうまい方法はないでしょうか?
http://tool-ya.ddo.jp/webfs/~enigma/IconSample.java
フォントサイズを変更したときにフォントに合わせてサムネールのサイズも変えるという処理を組んでいた
のですが、Windows で動かしたときにたまたま初期設定のフォントサイズが想定したサイズだったので
うまく動いているように見えただけでした。 ウィンドウバーの細いウィンドウって出せない?
Illustrator のツールウィンドウみたいなのが出したいんだけど。 SWTなんてgcjがawt&swing対応になったら、なんの価値もなくなるだろ。
土人だというアドバンテージしかないんだからSWTには。消えてなくなるよ。 ん? あのtomcatもgcjでコンパイルしてるんだろ? 印刷マージン列を例えば 100 に設定するとだいたい 100 カラムあたりに補助線が
出るじゃん (正確じゃないけど)。ああいったような縦線って StyledText でどう
やって出すの? setToolTip() で設定したツールチップをマウスのロールオーバーなしに
強制的に表示したいんだけど、ToolTip インスタンス作って自前で表示するしかない? ShellとかCompositeはGraphicsオブジェクトを取得して
その上でお絵かきできるんだろうか? paint()メソッドは
呼ばれるの? おおきに。
俺、netbeansのGUIビルダーでばっかりやってやから
自分でレイアウト手書き殆どしてないんだよな。
netbeansのnullLayoutで作ったソースを
もってきて、SWTはLayout使わずにsetBounds()で部品の
位置決めするのが楽そうだな。 >>543
new Shell(display,SWT.TOOL|SWT.TITLE); StyledText の setLineWrapIndent() って SWT 3.6 からか…
3.6 が正式リリースになるのっていつ頃になりそう? そりゃ、Eclipse 3.6が正式リリースされる頃、だと思うぞ。
ttp://www.eclipse.org/projects/project-plan.php?projectid=eclipse#release_milestones
''Our target is to complete 3.6 in late June 2010'' なんだもうすぐじゃねぇか。Milestone リリースとはいえ道理で安定しているわけだ。
どうもありがとうございました。 StyledText への画像埋め込みで Cocoa (32/64bit両方) だと Glyph に指定した
幅と高さの領域を取ってくれないのな。並べた画像が重なっちまう。
Win や Carbon ならちゃんと表示されるのに。 shell.setLayout(new FillLayout(SWT.VERTICAL));
composite1.setLayout(new FillLayout(SWT.HORIZONTAL));
composite2.setLayout(new FillLayout(SWT.HORIZONTAL));
として敷き詰めたパネルの中央部分をユーザーが
マウスのドラッグすることでサイズを変更出来るようにするには何を変えたら良いのでしょうか?
あまりに基本的な事柄でバカらしいと思われるかもしれませんが
教えていただけると嬉しく思います。 ドラッグのイベント拾って shell のサイズ変えれば良いんじゃね? マウスがウィンドウから出た時に自動的にクローズする処理を書いています
(Shell 上にはマージン 0px で 1 つのコンポーネントが乗っています)。
mouseExit() で Shell を dispose() する MouseTrackListener を Shell に仕掛けると
0 pixel の境界から出た時に通知されません。同じリスナを内包するコンポーネントに
仕掛けると、今度はタイトルバーやスクロールバーの上に行っただけで閉じてしまいます。
何か良い方法はないですか。 >>558
わかりにくい表現ですいません…。
SashFormを使えばやりたい事ができることがわかりました。 Jobsの気が変わらない限り、法的に不可能。
iPad/iPhoneでは、iPhone用のObjective-C以外でプログラムを作れないことになっている。 Java は動くんじゃねぇの。
まぁ下のネイティブライブラリを汚侮辱都市で書き直す必要があるが。 Javaランタイムの開発自体が禁じられているから、無理。 ああ、標準で Java 積んでんのは Android だったか。
しかし Apple はどうするつもりかね。バカもチョンも
デザイナに毛の生えた奴から組み込みのプロまで全員汚侮辱都市使えってか。 AndroidはJava言語で開発できるが、JavaVMじゃないから注意
JNI使ってるものは特に無理 AndroidはDalvik VM。
中間コードの形式も違う。 確かHotspotとかJITも無かったような気が。
普通のVMじゃ駄目だったのかな?良くわからん フットプリント軽くするためのレジスタマシンだからね
Javaと同じとは考えないほうがよい スタックマシンと何が違うのやら教えてエロい人"!
個人的にはコアライブラリとソースレベルでの互換性があれば何でもいいです。 >>559
マウスキャプチャして、
ムーブイベントで座標が範囲内かどうかみる。
text.setBackground(Color.gray);
とすると
The method setBackground(Color) in the type Control is not applicable for the arguments (Color)
というエラーメッセージが出たんですが、
「setBackground(Color) は (Color) を引数にとることができません。」
としか自分の英語力では理解出来ず解決策がわかりません。
どうすればこのエラーを無くすことができるでしょうか? SWT の Color と AWT/Swing の Color は別クラス。
text.setBackgroun(Display.getDisplay().getSystemColor(SWT.COLOR_GRAY)); >>574
ありがとうございます。
これで背景色の変更ができるようになりました。 Label で表示したテキストを選択可能にしたいのですが
該当のメソッドが見つかりませんでした。
Text でsetEditable(false) で代用するのが良いのでしょうか? 直接の解決策は知らないけど
EclipseのAboutダイアログをSWT Spy plug-inで調べてみたらどうかな? >>577
こんなプラグインがあるんですね、ありがとうございます。
調べてみたところAboutダイアログの文字が選択出来る部分は
StyledTextが使われてるようです。 SWT.READ_ONLY 付けた Text 使うでしょ。 C#でいうスプリッタ?みたいな、マウスでフレーム移動させるみたいなのはありますか?
SWT初心者がちょっと質問します。
ttp://wdsdx.com/node/41
このサイトに記述されているプログラムを参考にしているのですが、
作成したプログラムが物凄く重いので原因を探していると、
while (!self.sShell.isDisposed()) {
if (display.readAndDispatch()) {
display.sleep();
}
}
ここで常時if文を使っているので、物凄く重くなっていると思われます。
なにかいい解決方法はないでしょうか? ねぇよ。
イベント発生するまで待機する処理だからプロファイラで見たら時間かかってるように見えて当たり前。 >>583
勉強不足ですみませんでした。
回答ありがとうございました。 ラベルを大量に並べて、それをスクロールして見ることはできないんでしょうか?
下のコードにあるようにラベルを並べてスクロールで動かしたかったのですが
スクロールバーは現れるもののスクロール自体が効いていませんでした。
shell.setLayout(new GridLayout(1,true));
Composite composite = new Composite(shell,SWT.V_SCROLL);
composite.setLayout(new GridLayout(1,true));
for(int i=1; i<100; i++){
Label label = new Label(composite,SWT.NONE);
label.setText("ラベル" + Integer.toString(i));
}
動かす方法をご存じの方いましたら教えてください。 仕事でSWT使った事はないけど、趣味でSWT使った事はある。
がしかし、最近思うに、Eclipseプラグインの形で、新たなパースペクティブ
用意して作っちゃった方が早いという事に気づいた。 >>588
作る方が。UI周りも気の利いたのが便利に使えるし。 早いと速いをごっちゃに使う人もいるからあまり信用できない VisualStudioっぽくUIが作れるEclipseプラグインが
あったと思ったんだけど、最近聞かないね。
あれがもっと広まればSWT関連の書籍もたくさん出てたろうに。 >>592 これのこと?
2010-12-17 米Google、Java GUIビルダー「WindowBuilder」など2技術をEclipseに寄贈 - SourceForge.JP Magazine : オープンソースの話題満載
http://sourceforge.jp/magazine/10/12/17/0833235 >>593
以前にあったのはVisualEditorってやつだな。
その記事は知らなかったけど、Java関係の弱点って
UI周りの手軽さなので、助かりそうな気がする。 SWT初心者です。
Compositeをnewする時に親が必須なので、画面中の子Composite作成を別クラスに委譲しようとしても、
親を一々渡していかなきゃダメだと思いますが、疎結合にするいい案はないでしょうか? あるレイヤーやTier間の結合度を指して言うべきだということでしょうか。
リファクタリング時によく使う、結合度が低い状態のことを
疎結合と読びました。すみません。 複数のテキストフィールドにある値を一度に取得したり、一度に内容を消すというような場合は
どうすればいいのでしょうか?
単純にText[] txts みたいな感じで配列で宣言しておいて、ループで回すという感じでしょうか? なんで今になって>>393>>396があぼーんされてんだ… あるボタンを押すとViewFormが表示され、
表示されたViewForm上のあるボタンを押すと
ViewForm上で入力された値を元の画面に持ってくるというようなことをするにはどうしたら良いでしょうか? 自己解決しました。
JFaceのDialogを継承して、独自のダイアログが作れるようなので、これで対応します 色々なパソコンで動作確認してみましたが、AMD CPUだと動いてIntel CPU だと
動かない状況です。
何から疑えばよいかご意見いただきたいです。 >>604
https://bugs.eclipse.org/bugs/
ちょろっと見たところ、統合チップセットの問題がよく挙がってる感じ。 SWTのWinAPIを使ってWindowsメッセージ処理を行おうと思っているのですが、
SWTにおけるwndprocの取り扱いがよく分かりません・・・
SWTのinternal.win32.OSを見てもwndprocらしき関数が見当たらないので、
半分お手上げ状態です・・。
どなたかご存知の方いらっしゃいましたら、ご教授お願いします。 >>608
コメントありがとうございます。
swt.internalのCallbackクラスを用いてウインドウプロシージャを
ハンドラに登録するってことでしょうか?
SWTでEclipseのようなエディタを作りたいのですが、レイアウトの方法で迷ってます。
Swingでは東西南北配置のBorderLayoutを使ってたのですが、SWTにはそういのないですよね。
そこで、GridLayoutかFormLayoutの利用で迷ってるのですが、どちらの利用が適切でしょうか?
Eclipseのようにパネルの配置換えや非表示などができるくらいの柔軟性は持たせたいのですが。 Eclipseみたいなのを目指すのなら、
Eclipse RCP 使った方がはるかにはやいよ。
各種ビューの管理、エディタ向けのウィジェット、
ファイル等のリソース管理など、
必要な機能が一通りそろってるから。 >>611
そんな便利なフレームワークがあったんですか。
情報が少なそうですが、試してみます。ありがとうございます。 >>612
つか、プレーンなEclipseに、プラグイン開発の形で
開発した方が手っ取り早いよ。
■ このスレッドは過去ログ倉庫に格納されています