Java低速GUI Swing 9
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2009/12/19(土) 23:13:39しかしながら、"Java"というだけで未だに敬遠されるのが現状。
そんなSwingと引き続き付き合っていくみんなのスレッドです。
Java低速GUI Swing 8
http://pc12.2ch.net/test/read.cgi/tech/1227234261/
Java低速GUI Swing 7
http://pc11.2ch.net/test/read.cgi/tech/1204155623/
Java低速GUI Swing 6
http://pc11.2ch.net/test/read.cgi/tech/1190807478/
Java低速GUI Swing 5
http://pc11.2ch.net/test/read.cgi/tech/1161139809/
Java低速GUI Swing 4
http://pc8.2ch.net/test/read.cgi/tech/1140533866/
Java低速GUI Swing 3
http://pc8.2ch.net/test/read.cgi/tech/1121700954/
Java低速GUI Swing 2
http://pc8.2ch.net/test/read.cgi/tech/1095398949/
Java低速GUI Swing
http://pc5.2ch.net/test/read.cgi/tech/1062271447/l50
0656デフォルトの名無しさん
2010/12/08(水) 17:03:21http://hibari.2ch.net/test/read.cgi/tech/1267796762/
★★ Java の宿題ここで答えます Part 69 ★★
http://hibari.2ch.net/test/read.cgi/tech/1290103530/
★★Java質問・相談スレッド142★★
http://hibari.2ch.net/test/read.cgi/tech/1253521167/
マルチスレッドプログラミング相談室 その8
0657デフォルトの名無しさん
2011/01/08(土) 19:45:24なんかAWTはシステムデフォルトのGUIを呼び出してるっぽいし、
そっちのほうが速い気がするんだけど。
0658デフォルトの名無しさん
2011/01/08(土) 20:19:150659デフォルトの名無しさん
2011/01/09(日) 01:24:080660デフォルトの名無しさん
2011/01/11(火) 11:37:56実際速いかどうかはしらんが。
SwingのJFileChooserなんかと比べると
AWTのFileDialogほうが高機能ではある。
SwingのGUIはJVM独自で描画してるから、
それがネイティブのGUIに勝っているのであれば速いんじゃまいか。
0661デフォルトの名無しさん
2011/01/20(木) 09:28:50もしかいて無いの?
0662デフォルトの名無しさん
2011/01/20(木) 10:16:170663デフォルトの名無しさん
2011/01/20(木) 17:06:570664デフォルトの名無しさん
2011/01/21(金) 01:43:04しかも開発が終了してるので今後メンテされることはないよ。
0665デフォルトの名無しさん
2011/01/21(金) 08:11:12The Jigloo SWT/Swing GUI Builder is free for NON-COMMERCIAL use only.
0666名無しさん
2011/02/01(火) 06:48:45部分的なサンプルはよくみかけるのですが
0667デフォルトの名無しさん
2011/02/01(火) 20:07:560668デフォルトの名無しさん
2011/02/01(火) 21:58:250669デフォルトの名無しさん
2011/02/03(木) 14:00:06遅いダサい作り辛い。
ま個人的にはMetalは好きなんだけど。
.netになれた自分としてはSwingはよーわからん・・
0670デフォルトの名無しさん
2011/02/03(木) 21:22:18あの汚いフォントで使いづらいファイル選択ダイアログとか出すから、
一瞬でアンインストールされるフラグ立っちゃうんだよ。
0671デフォルトの名無しさん
2011/02/04(金) 07:34:47クリアフォントが使えないことを言っているんだろうが、
個人的には気にならんが。
0672デフォルトの名無しさん
2011/02/04(金) 18:16:53Emacsでもメイリオにしちゃう俺が言うのもなんだがw
0673デフォルトの名無しさん
2011/02/08(火) 23:59:10あるJFrameとListenerとControllerをすべて別クラスにする場合はどのようなクラス構成がいいのでしょうか?まず思いついたのがこんなのなんです。
public class Controller{
public void init (){
Model mode = new Model();
ViewListener viewListener = new ViewListener(this);
View view = new View(viewListener);
}
public void helloWorld(){ System.out.println("Hello World"); }
}
public class ViewListener extends ActionListener{
private Controller controller;
public ViewListener(Controller controller){
this.controller = controller;
}
@Override
public void actionPerformed(ActionEvent e) {
controller.helloWorld();
}
}
public class View{
puclic View(ActionListener viewListener){ this.addActionListener(viewListener) }
}
けどこれの場合JFrameが子画面の子画面の子画面みたいなときに、コンストラクタにひたすらActionListenerを伝って渡していかなければいけないので余り綺麗に思えません。
それを解決するためにActionListenerシングルトンにしてしまって、利用するviewでViewListener.getInstance()みたいにするのは問題ないのでしょうか?
また画面ごとに別のActionListenerを追加したい場合、引数がひどいことになってしまいます。
あともしViewの値をModelの処理に利用したい場合は、helloWorldメソッドの中で、view.getTextField().getText()みたいに呼べばいいのでしょうか?
これも子画面の子画面の子画面みたいなときはview.getView2().getView3().getTextField().getText()みたいになってしまい余りかっこよくないです。
ListenerとViewのクラスが分かれてなければactionPerformedメソッドの中でtextFieldの値を取得して、helloWorldの引数に渡すとか簡単なんでしょうけど
0674デフォルトの名無しさん
2011/02/09(水) 21:11:31なにかまずいの?
あと、
View view = new View(viewListener);
じゃなくて、
View view = new View();
view.addActionListener(viewListener);
の方が良いと思う。
0675名無しさん
2011/02/10(木) 07:39:27コンストラクタに渡していたのは、自分で処理させた方が綺麗かなと思っただけであまり意味はないです
確かにそれの方が渡す引数を1階層減らせていいですね
viewが複数階層ある場合は、コンストラクタに渡していかなければいけないのは、どうしようもないのですかね
0676デフォルトの名無しさん
2011/02/10(木) 13:52:16addViewListener()メソッドが子viewに対してもaddViewListenerすればいいのでは?
「複数階層」というのがどんなものをイメージしているのかわからないけど、
レイアウト的な意味での階層(java.awt.Container)と、
viewの階層(アプリケーションドメインの階層)は切り離して考えていいと思う。
具体的には、ViewManagerみたいな入れ物クラスを作って、
内部のレイアウト階層がどうであれ、子viewに対してフラットに(=たとえば配列で)
アクセスできる仕組みをつくるとか。
0677デフォルトの名無しさん
2011/02/10(木) 14:08:170678名無しさん
2011/02/10(木) 20:15:48なるほどー 切り離しちゃってViewは1つのマネージャーで管理しちゃってもいいんですね
なんかオブジェクト指向という名前に釣られてどうしても現実とリンクさせてしまいがちです
Swingはコンポーネントの解説は調べれば出てくるんですけど、そういう構造をどうしたほうがいいみたいな資料がないので困っていたんですが助かりました!
そこで更に疑問なのですが、私が想定しているアプリならメソッドや変数はそんなに多くはならないんですけど、結構大きくなった場合はどのように分割するんですかね
Eclipseみたいな大規模なものはどういう構造になってるんだろうと思ってソース見てみましたがちんぷんかんぷんでしたw
0679デフォルトの名無しさん
2011/02/10(木) 20:18:360680デフォルトの名無しさん
2011/02/10(木) 22:57:32Viewの中身は、配置や大きさのようにひたすら表示に関することのみに専念するべき。
ViewのModelを取りたい場合は、PropertyChangeListenerを充てて取得する。
0681デフォルトの名無しさん
2011/02/10(木) 23:34:150682デフォルトの名無しさん
2011/02/10(木) 23:48:10Viewは、どのControllerやどんなModelが充てられるかは知らない。
Modelは、どんなControllerに保持されるかは知らない。
素直にやればこんなかんじになる
http://pastebin.com/BjKH9md5
Viewが増えたらViewを増やせばいいし、
Controllerが増えたらそれを増やせばいい。
ListenerはControllerだから、外部クラスにしたっていい。
0683デフォルトの名無しさん
2011/02/10(木) 23:51:41addActionListenerはControllerでViewにActionListenerを渡すんではなく、ControllerでViewを取得してActionListenerをした方がいいということですか?
○
ViewManager{
private View1 view1 = new View1();
private View2 view2 = new View2(); // getter省略
}
Controller{
private ViewManager vm = new ViewManager();
public void init(){
vm.getView1().addActionListener(new View1ActionListener(this));
vm.getView2().addActionListener(new View2ActionListener(this)); } }
×
ViewManager{
private View1 view1 = new View1();
private View2 view2 = new View2();
public void addActionListener1(ActionListener actionListener){
view1.addActionListener(actionListener);
}
public void addActionListener2(ActionListener actionListener){
view2.addActionListener(actionListener);
}
}
Controller{
private ViewManager vm = new ViewManager();
public void init(){
vm.addActionListener1(new View1ActionListener(this));
vm.addActionListener2(new View2ActionListener(this));
}
}
0684デフォルトの名無しさん
2011/02/11(金) 00:14:01そういうこと
×の方で書いてしまったとしても、リファクタリングすると自然と○のコードになる。
×のViewManagerは、継承クラスを作られることが(まず)無いので、
addActionListener1内の処理はメソッドである必要が無くなる
0685デフォルトの名無しさん
2011/02/15(火) 22:28:11JXDatePickerとかJXTaskPaneとかJXBusyLabelとかJXCollapsiblePaneとか便利すぎるだろ。
だがJXTipOfTheDay・・・てめぇは要らねぇ!!
0686デフォルトの名無しさん
2011/02/16(水) 08:31:011.6.0_22までは問題無かったのに
0687デフォルトの名無しさん
2011/02/19(土) 12:27:43慣れてくるとなかなかどーして
結構気に入った
0688デフォルトの名無しさん
2011/02/19(土) 12:40:22特にどこが使いづらいの?
0689デフォルトの名無しさん
2011/02/19(土) 13:34:28.netを先に経験してるとけったいなことこの上ない
でも、SwingってGUIビルダ使うよりコードで書いた方が
気持ちいいことに気づいたら気に入った
0690デフォルトの名無しさん
2011/02/19(土) 15:56:37GUIビルダなんていらんと思うんだ
0691デフォルトの名無しさん
2011/02/19(土) 16:29:350692デフォルトの名無しさん
2011/02/19(土) 16:41:45挫折する人が多いのにどこが気に入ったの?
0693デフォルトの名無しさん
2011/02/20(日) 16:05:13.12通信用の子スレッドを作って、常にListen状態にしておき、受信データをメインスレッドのGUI部品に表示させたいんですが、
子スレッドから、親スレッドの部品にアクセスするにはどうすればいいんでしょうか?
0694デフォルトの名無しさん
2011/02/23(水) 01:02:40.670695デフォルトの名無しさん
2011/02/23(水) 01:05:49.45普通に考えて挫折した人の気持ちなんてわかんないだろ
0696デフォルトの名無しさん
2011/02/24(木) 01:08:36.59それを繰り返すってのはどうすればいいですかね
0697デフォルトの名無しさん
2011/02/24(木) 04:53:05.85Graphics#setClip
Graphics#drawImage
for文
0698デフォルトの名無しさん
2011/02/24(木) 09:59:35.58DelphiとかC#あたりから入ったから最初にSwingさわった時は
ギャップが大きくて訳ワカメだったけど
その後AndroidいじくってるうちにJava脳が鍛えられてたんだとオモw
0699デフォルトの名無しさん
2011/02/24(木) 12:15:47.83f = Foo()
f.bar = 'a'
setattr(f, 'baz', lambda self: 'b' + self.bar)
f.bar
'a'
f.baz()
'ba'
0700デフォルトの名無しさん
2011/02/24(木) 15:23:05.78スクロールバーなしのJScrollPaneに画像付きJLabel表示させて自前でスクロールさせるのがたぶん早い。
縦にJLabel二つ並べてギッコンバッタンさせれば客にはばれないだろう。
JViewportに適切な指示を出しとけば、ハードウェア支援を受けることも可能かも。
0701デフォルトの名無しさん
2011/03/01(火) 01:31:31.07Androidって言語にjava使ってるだけであんまりjavaっぽくないぞ。
0702デフォルトの名無しさん
2011/03/01(火) 09:16:21.3338 名前:デフォルトの名無しさん [sage]: 2011/02/27(日) 21:31:11.41
>>16-17
ちょっと恥ずかしいけどさらしとく。
http://uncorrelated.servehttp.com/jar/KnockingBird.jar
0703デフォルトの名無しさん
2011/03/01(火) 09:20:46.640704デフォルトの名無しさん
2011/03/01(火) 10:02:25.25http://www.youtube.com/watch?v=91atM86IGhw
0705デフォルトの名無しさん
2011/03/01(火) 19:50:37.42昔、ジャストが出してたこんなのとか?
http://www.justsystems.com/jp/software/dt/justarks/index.html
今のjast suiteのjava版って所やね
0706デフォルトの名無しさん
2011/03/01(火) 22:28:12.67前ソースのダウンロードは無料でできて、動かしたことあるけど
ひどい出来だったぞ。
0707デフォルトの名無しさん
2011/03/01(火) 22:43:15.49ジャストシステム、Javaベースの統合オフィスソフト「Just Arks」
jdk1.2.2で2000年ごろでIDEサポートもなくよく頑張ったと思う
javaでもms-officeクローンなものを、また作ってしまえばいいだろうって発想が失敗の元だったんじゃないか
0708デフォルトの名無しさん
2011/03/01(火) 22:52:03.28NetBeansに「JSR-296の開発は終了しています。」って言われた。
SwingはJava SE 6で最後になっちゃったの?
0709デフォルトの名無しさん
2011/03/01(火) 22:55:04.82すぃんぐあぷりけぃしょんふれぃむわぁくの開発が終了しただけなんでね?
7に標準搭載を目指してたけど諦めたのかな
0710デフォルトの名無しさん
2011/03/01(火) 23:27:10.82諦めたらしい。JavaFXもあるしな。
Swingの新機能なら、SwingXもあるから、何とかなるでしょ、と。
肝心のSwingXも開発母体に資金が流れなくなったんで、今後は先細りっぽいけど…
0711デフォルトの名無しさん
2011/03/01(火) 23:28:49.700712デフォルトの名無しさん
2011/03/01(火) 23:40:41.82java7,8はsiwnglabsのdatepickerとからいくつか入れるから別に見捨てられてるってわけではない
というか、swing-gui-mvcも理解出来る人が増えたからここいらでsynthを解説して普及させると、swing再評価とかで少しは流行るんじゃないか
mvcを理解できてもweb javafx appletやhtml dom cssとどう違うかってことまで説明できる人はまだいないだろうから、まだまだかな。実際現在のguiでも区別する程複雑なことをやってるわけでもないし
0713デフォルトの名無しさん
2011/03/02(水) 00:18:43.30HTML+JavaScriptのウィジェットを輸入できそうなんだけど
難しいのかな
0714デフォルトの名無しさん
2011/03/02(水) 23:11:47.59AppFrameworkはSwing知らない初学者にたいしてのEoDだしswing/gui/mvcの点でみればOpenSwingみいたいなFWのほうがいいと思うんだけど。
MVCでやってたらちょっとでかくなっただけでJavaだとデータバインディングやるしDBをhogehogeするのだってやるかもしれないし。
>>713
JavaFXが大コケしたから二度とそっち方面には手を出さないだろう。
ところでsynthのjavadocは平気で嘘書いてあるからソース読んだほうが早いし結局はカスタムペインタ書かなきゃいけないし
ただLnFをSkinableにしただけだから俺は最近はやりのXMLでUI定義して中身をコードで書くような新しいLnFが標準でほしいな。
0715デフォルトの名無しさん
2011/03/03(木) 19:29:47.08NetBeansで作ろうとしていますが、いろんなクラスがあって迷ってます
0716デフォルトの名無しさん
2011/03/03(木) 20:25:17.510717デフォルトの名無しさん
2011/03/03(木) 21:46:26.35感じにならないことありませんか??
0718デフォルトの名無しさん
2011/03/03(木) 21:59:04.44そうならないように、1x1ずつランダムに散らして塗るんだよ
0719デフォルトの名無しさん
2011/03/03(木) 22:50:01.04範囲を切り出してImageにして、好きなだけピクセルに色セットして、もとの場所に貼り直すという手はあるか。
0720デフォルトの名無しさん
2011/03/04(金) 00:05:33.83BufferedImage#getRGBで、BufferedImageをint[]に変換。
自分で設計した幾何フィルタで、int[]を変換。
BufferedImage#setRGBで、int[]をBufferedImageに変換。
0721デフォルトの名無しさん
2011/03/04(金) 01:54:35.70ありがとう
挑戦してみるよ!
しっかし、GUIは難しき
0722デフォルトの名無しさん
2011/03/04(金) 01:57:51.510723デフォルトの名無しさん
2011/03/04(金) 18:07:39.67あの金色にかがやくお星様がJWebPaneだよ。
0724デフォルトの名無しさん
2011/03/04(金) 20:19:58.84なんか塗りつぶされてしまう
fillrectの使い方がおかしいのだろうか
1×1にしてるのに
0725デフォルトの名無しさん
2011/03/04(金) 23:33:58.44あとは一度に沢山試行したら結果的に満遍なく分布するから疎になるように試行回数を減らすとか
0726デフォルトの名無しさん
2011/03/04(金) 23:44:12.180727デフォルトの名無しさん
2011/03/07(月) 17:37:37.002x2 ?
0728デフォルトの名無しさん
2011/03/08(火) 03:11:21.051×1にしてる…はずなんだけど…おかしい
塗りつぶされてしまう
0729デフォルトの名無しさん
2011/03/08(火) 19:53:04.550730デフォルトの名無しさん
2011/03/09(水) 01:26:51.51javaにputみたいな関数ないし。
0731デフォルトの名無しさん
2011/03/09(水) 04:28:23.410732デフォルトの名無しさん
2011/03/13(日) 20:02:53.12java大分忘れたけど、setPixel(もしくはそれっぽいの)で良いんじゃ。。。
0733デフォルトの名無しさん
2011/03/15(火) 16:37:07.780734デフォルトの名無しさん
2011/03/21(月) 13:12:14.78PropertyListenerじゃないの?
せめてActionクラスから変更できて欲しいんだけど。
自前でモデルオブジェクトとCompornentをバインドする
コードを書くのがめんどい。
0735デフォルトの名無しさん
2011/03/21(月) 13:20:25.850736デフォルトの名無しさん
2011/03/21(月) 13:23:38.750737デフォルトの名無しさん
2011/03/21(月) 23:54:26.96何を言いたいのかよく解らないがなんか勘違いしてないか?
0738デフォルトの名無しさん
2011/03/22(火) 07:06:42.02controllerがbeanのproperty変更→beanがリスナーcompornentを更新
てな変更の伝達を行いたいわけだけど。 何か変?
まぁ、今のswingなら素直に実装出来ないから変では有るんだろうけど。
0739デフォルトの名無しさん
2011/03/22(火) 08:38:53.91ってのはCompornentListenerのこと?
0740デフォルトの名無しさん
2011/03/22(火) 09:24:23.45半径を入力するための JTextField
bean を見える形で描画する JPanel
なんていうものがあったとき、
1. JPanel を bean に propertyChangeListener として登録。
2. 半径をテキストフィールドで入力
3. beanにsetRadius()
4. bean が PropertyChangeSupport#firePropertyChange などする
5. JPanelに反映
みたいな話だと思うので別におかしなところはないと思う。
JComponent が implements PropertyChangeListener でない理由はよく分からないけど、
意味のある使い方をするときはどうせ propertyChange メソッドを実装しなけりゃならないので、
実装してデフォルトの空実装を提供する必要はないと判断したんじゃないだろうか。
メソッド1つしかないし。
0741デフォルトの名無しさん
2011/03/22(火) 20:47:22.28まさしくそんなかんじ。
実際には、画像の情報のbeanを用意して、
ウインドウのタイトルにbeanが持つ画像のファイル名をだしたり、
リストにbeanの持つ詳細情報を表示させるって感じ。
そんで画像の切り替えはbeanの操作だけで行うと。
しかし、よく考えると、CompornentをPropertyCangeListinerにできるとまずいね。
titleの変更を複数のbeanからできちゃう。
Actionクラスみたいな感じで操作できるといいんだけど。
0742デフォルトの名無しさん
2011/03/23(水) 02:21:13.82ああ、だからこういったのか。
java beansはたしかにMVCのMに相当するけどModelに相当することをやるための仕様じゃなくて
再利用可能なコンポーネントを定義して(主にRAD環境から)使い回すための仕様だから普通に
SwingのMVCに従って「ウインドウのタイトルにbeanが持つ画像のファイル名をだしたり...」を実装したほうが良いと思うよ。
java beansのしがらみに縛られる必要性はないんでしょ?
0743デフォルトの名無しさん
2011/03/23(水) 04:37:38.85ただswingのしくみを正確に理解してないとM-CVでもMV-Cでも難しいだろうね。
0744デフォルトの名無しさん
2011/03/23(水) 18:02:24.06そうだね。単にbeanの資産を生かしたいってだけだったから、そこまでこだわる必要もないかもね。
>>742-743
swing流MVCってよくわかんない。
documentインターフェースとか、文字列系
Compornent全般で使えるわけじゃないところが。
個人的にいびつな感じがする。
てか、わたしのswing流MVCに対する知識が無いだけ
なのかもしれないけど。
swingでのMVCってのはこうだってのがあったら教えてよ。
0745デフォルトの名無しさん
2011/03/23(水) 18:07:17.840746デフォルトの名無しさん
2011/03/25(金) 09:07:16.830747デフォルトの名無しさん
2011/03/26(土) 23:41:43.820748デフォルトの名無しさん
2011/03/26(土) 23:58:10.14そもそもなんだよ?
0749デフォルトの名無しさん
2011/03/27(日) 10:48:46.96Guiに依存する所はswing
そうで無い所はswing色が無いか薄い
そんな印象
(違ってたらスマソ。でも触った感じ、そう思った)
0750デフォルトの名無しさん
2011/03/28(月) 23:41:54.77サーバサイドから Java 始めた奴って MVC がサーバサイドの話と思ってるのかもな。
0751デフォルトの名無しさん
2011/03/29(火) 08:07:08.87というか使う側がおかしいんだろうけど。
なんせモデルに対してビューが複数無い。
それどころかモデルがそもそも怪しい。
0752デフォルトの名無しさん
2011/03/29(火) 16:26:05.03複数あるよ。
0753デフォルトの名無しさん
2011/03/29(火) 21:20:12.25java beansはどっちかというとアレやるための仕様だよな。適用分野が違う。
0754デフォルトの名無しさん
2011/03/29(火) 22:29:37.24■ このスレッドは過去ログ倉庫に格納されています