Java低速GUI Swing 8
..
116:デフォルトの名無しさん
08/12/14 00:27:37
>>113
あるいはgcjという手もあるな。
Swingと関係ないのは確かにその通りだが。
117:デフォルトの名無しさん
08/12/14 01:18:32
>>110
>JavaやってるとWindowsのexeが作れない。。
つJSmooth
>また、SwingやAWTの設計でGUI画面作るのもちょっといやだ。
どこら辺が気にいらんの?
俺、SwingやAWTからGUIに入ったんでよくわからないんだ。
.netもやってるけど、上っ面撫でてるだけならそんなに違わないと
思ったが。
118:デフォルトの名無しさん
08/12/14 01:43:49
だからネタだっていってんだろw
119:デフォルトの名無しさん
08/12/16 15:03:36
うまい方法が見つからないのでちょっと相談。コンポーネントの配置の仕方なんだけど。
JLabel [JTextField]
JLabel [JTextField]
というように、4の部品がならんでいる。
JTextFieldは、JFrameサイズに応じて幅一杯まで伸び縮みできるようになってほしい。
JLabelは文字列のサイズで固定されてほしい。
ただし、上段と下段でJTextFieldの位置をきっちり揃えたい。
GridBagLayoutだと、位置はきちんとそろうけど、JTextFieldが伸び縮みできない。
GridLayoutだとJLabelとJTextFieldの幅が等間隔に割り付けされてしまうのでだめ。
1段分をBorderLayoutのWESTにJLabel,CENTERにJTextFieldを入れ、GridLayoutで縦にならべると、
だいぶ希望に近づくが、JLabelに入る文字列の長さが異なると、JTextFieldの頭の位置が上下でそろわない。
なんかいい方法ないかなぁ・・・
120:119
08/12/16 15:10:57
それから
PreferredSizeでJLabelのサイズを固定する方法も考えられるけど、
LaFが変更されたとき崩れない保証がなくなるので、できるだけレイアウトマネージャだけで解決したい。
121:デフォルトの名無しさん
08/12/16 15:44:19
>>119
GridBagConstraintsを適切に設定してないんじゃないか
public class Test {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setLayout(new GridBagLayout());
frame.add(new JLabel("Label 1:"), new GridBagConstraints(0, 0, 1, 1, 0, 0, GridBagConstraints.LINE_START, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
frame.add(new JTextField(), new GridBagConstraints(1, 0, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0));
frame.add(new JLabel("Label 2:"), new GridBagConstraints(0, 1, 1, 1, 0, 0, GridBagConstraints.LINE_START, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
frame.add(new JTextField(), new GridBagConstraints(1, 1, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0));
frame.pack();
frame.setVisible(true);
}
}
122:119
08/12/16 19:16:21
>>121
ありがとう。
IDEのGUIエディタが生成したコードとにらめっこしたのですが、
weightx,weightyの値が1に設定されていなかったのが原因でした。
私はこまかいところに神経が行き届いていなかったようです。
勉強になりますた!
123:デフォルトの名無しさん
08/12/16 21:37:57
GroupLayoutが適切すぎる
124:せっかく作ってみたので貼ってみるテスト
08/12/16 22:01:12
JFrame frame = new JFrame();
JLabel label1 = new JLabel("Label 1:");
JLabel label2 = new JLabel("Label 2:");
JTextField field1 = new JTextField(10);
JTextField field2 = new JTextField(10);
GroupLayout layout = new GroupLayout(frame.getContentPane());
frame.setLayout(layout);
layout.setAutoCreateGaps(true);
layout.setAutoCreateContainerGaps(true);
layout.setHorizontalGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup()
.addComponent(label1)
.addComponent(label2))
.addGroup(layout.createParallelGroup()
.addComponent(field1)
.addComponent(field2)));
layout.setVerticalGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(Alignment.BASELINE)
.addComponent(label1)
.addComponent(field1))
.addGroup(layout.createParallelGroup(Alignment.BASELINE)
.addComponent(label2)
.addComponent(field2)));
frame.pack();
frame.setVisible(true);
125:デフォルトの名無しさん
08/12/16 22:03:27
>>121
GridBagConstraints に引数付きのコンストラクタがあることを
初めて知ったよ。
IDEの吐くコードでのみ使えって、ドキュメントにはあったけど。
>>123
いつのまにか java.awt でないレイアウトマネージャが増えてくね。
126:デフォルトの名無しさん
08/12/17 21:58:56
JTabbedPaneでタブを表示させてるんだけど
特定の設定になった時はタブが5枚あったら、その3番目と5番目だけを非表示にしたいんだ
setEnabledAtで選択不可には出来たけど、出来ることなら非表示にしたい…
機能的には選択不可で問題無いが、見栄え的に半端な位置のタブが選択不可になってるのはみっともなくて。
何か良い解決策は無いだろうか?orz
127:デフォルトの名無しさん
08/12/17 22:09:41
タブのペインをグレイアウトさせる。
128:デフォルトの名無しさん
08/12/18 11:38:28
タブを削除する
129:デフォルトの名無しさん
08/12/18 21:48:35
実際に試してないから成功するか分からないけど、
非表示にしたいタブを getTabComponentAt() で取得して
setPreferredSize() で推奨サイズをゼロにする。
あるいはサイズがゼロのコンポーネントを用意して
setTabComponentAt() を呼ぶ。
130:デフォルトの名無しさん
08/12/18 21:54:38
>>127
リファレンス読んだけどやりかた分からなかったorz
>>128
非表示にしても、タブ内のデータを見ることがあるから出きれば削除は避けたいんだ…
>>129
おお、ちょっと試してみる!サンクス!
131:デフォルトの名無しさん
08/12/18 23:43:17
>>130
>>128がベストアンサーだと思う。
TabbedPaneの外でコンポーネントを自前で管理する。ってことだと思う。
管理といってもHashMapとかのコレクションで持っておくだけだけど。
132:デフォルトの名無しさん
08/12/19 00:01:02
>>131
なるほど…
HashMap、名前は良く見るが使い方を知ろうとしてなかったorz
ちょっと調べて色々試してみる。>>130,>>131ありがとう
133:デフォルトの名無しさん
08/12/19 08:23:39
HashMapを知らないというのはJava屋として絶望的だな。
134:デフォルトの名無しさん
08/12/19 09:00:24
HashMapを知らなくても営業できるほどフレームークにおんぶに抱っこだったのか?
135:デフォルトの名無しさん
08/12/19 09:09:50
フレームーク
136:デフォルトの名無しさん
08/12/19 09:19:36
ガッチャピン?
137:デフォルトの名無しさん
08/12/19 10:33:39
>>132
人に聞いてばかりで自分で調べたりしてないからだろう
おまえの無能さが文章によく出てる
138:デフォルトの名無しさん
08/12/19 11:43:56
たった5個(実質2個固定)のタブ耳の管理にHashMapかよ。おめでたい話だ。
連想配列の実装したことあるのかい?
これだからPerl厨は…
139:デフォルトの名無しさん
08/12/19 12:10:43
HashMapも知らない奴が何かほざいてるよww
140:デフォルトの名無しさん
08/12/19 12:59:41
オレ、JSplitPaneのコンポーネント管理をTreeMapで実装してるぜ!
キーはもちろん"LEFT"と"RIGHT"さ!
141:デフォルトの名無しさん
08/12/19 13:11:15
アルゴリズムとデータ構造も知らない奴がプログラミングしても通用する時代になったんだな。
142:デフォルトの名無しさん
08/12/19 15:27:10
力業でもどうにかなるくらいに環境が豪勢になったからのう。
143:デフォルトの名無しさん
08/12/19 18:46:16
アルゴリズムとデータ構造も知らない奴がゲーム作りたいって巣くってるのがゲ製板だしな。
144:デフォルトの名無しさん
08/12/19 19:00:25
昔と違ってハード性能がよくなったからソースが見やすくて何よりです
対応表片手にビット管理とかもう嫌だお!
145:デフォルトの名無しさん
08/12/24 01:24:16
ハッシュマップと連想配列って似たようなもんじゃねえの?
146:デフォルトの名無しさん
08/12/24 01:36:15
呼び名が違うだけ辞書配列ともいう
147:デフォルトの名無しさん
08/12/24 02:49:51
ソースは頑張れば見やすく作れるようになっている。
チューニングする場所ってのは限られている。
148:デフォルトの名無しさん
08/12/27 14:38:42
スレッドを使ってGUIを更新(?)することについて質問です。
あるボタン(ボタンA)を押したら、新しいボタン(btn)が表示されるようにしたいと思っているのですが、
ボタンAを押しても表示されません。
ボタンを張りつけたJPanelのgetComponentCount()を使ってみると、
add()は正しくできてるようなのですが、それでも表示されません。
btn.repaint()をやっても表示されないのですが、
btn.setVisible(false) → btn.setVisible(true)とすると表示されます。
上のsetVisible()を使うのはスマートじゃないような気がして、
invokeLater()を使ってみたりもしたのですが、結局setVisible()を使わなければ表示できません。
新しくボタンを表示させるにはsetVisible()を使うしかないのでしょうか?
他に良いやりかたがあれば、教えてもらいたいです。
文章へたくそなので、一応ソースのURLも貼っておきますね。
クラスは3つで、それぞれ45行以下のテキストです。
URLリンク(www.geocities.jp)
URLリンク(www.geocities.jp)
URLリンク(www.geocities.jp)
149:デフォルトの名無しさん
08/12/27 16:28:08
つ revalidate
150:デフォルトの名無しさん
08/12/27 16:56:28
最初に>>149と同じようにrevalidateを試しましたが、他には
初めからsetVisible(false)でpanelにaddしておいて
スレッドでsetVisible(true)にするのもうまくいきました。
151:148
08/12/27 18:44:27
>>149
>>150
返事ありがとうございます。
revalidateについて調べてみますね。
もし自分が理解できなかったら、>>150 さんの言う方向でやってみたいと思います。
ありがとうございましたorz
152:デフォルトの名無しさん
08/12/27 18:48:32
JComponent#setVisible()を呼ぶともれなくrevalidateが呼ばれる件について
153:デフォルトの名無しさん
09/01/07 15:45:53
Swingでインクリメンタルサーチを実現したいのですが、
便利なクラス(インクリメンタル用)みたいのものはあるでしょうか?
自力で実装しなければならないとき、ヒントになる手法があれば教えていただけないでしょうか?
154:デフォルトの名無しさん
09/01/07 16:15:20
Swing Hacks
155:デフォルトの名無しさん
09/01/07 22:57:10
どのコンポーネントでインクリメンタルサーチするの?
156:デフォルトの名無しさん
09/01/08 00:23:41
JFrame#setLocation()が効かないんだけど、同じ現象遭遇してる人いる?
JFrame#setVisibe(true)の前でも後でも全然きかない。
JFrame#setLocationByPlatform()もだめ。。
157:デフォルトの名無しさん
09/01/08 05:15:38
使用環境も書かず、どう効かないか、最初からなのか何かのきっかけでそうなったのかも書かず。
ウインドウマネージャ次第では強制的に再配置している可能性も。
158:デフォルトの名無しさん
09/01/08 12:51:45
>>153
>Swingでインクリメンタルサーチ
Googleのクエリ候補表示みたいな事を
コンボボックスでやりたいのかな?
それともいわゆるEmacsみたいなインクリメンタルサーチ
をJTextComponentで実現したいのかしら?
159:156
09/01/08 19:25:06
>>157
すまん、
実行環境はWinXP、
開発環境はEclipse3.4
ビルドはJDK1.6.0_03、
実行JREは1.6.0_07に設定
現象は、どこにsetLocation()してsetVisible(true)しても画面左上にJFrameが表示されてしまう。
最初からです。
いかがなもんでしょう!?
160:デフォルトの名無しさん
09/01/08 19:39:57
>>159
ComponentListenerを使って、
いつ誰が左上に動かしてるのか見張ってみるのはどうでしょう。
161:デフォルトの名無しさん
09/01/08 21:26:46
レイアウトマネージャがよしなに配置してるだけじゃないの?
ソース晒せ。
ふるいやつだと、わざわざgetContentPane().setLayout()するのが面倒だなあ。
ヲレクラスで更にラップするのがめんどくさがりにはよさそうだ。
162:デフォルトの名無しさん
09/01/09 08:09:06
update 7ってバグ多くなかったっけ?
163:デフォルトの名無しさん
09/01/09 08:39:20
>>159
import javax.swing.*;
public class Foo {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame f = new JFrame();
//f.setLocation(300, 300);//どちらか
f.setLocationByPlatform(true);//どちらか
f.setVisible(true);
}
});
}
}
みたいに単純化したものでも同じ現象になる?
うちはWinXP+1.6.0_11だけど、setLocationでもsetLocationByPlatformでもきちんと機能する。
Windowsの標準シェルならウインドウマネージャが強制再配置するようなことはなさそうだし…
164:デフォルトの名無しさん
09/01/09 09:02:45
そこでHashMapを使うんだ!
165:デフォルトの名無しさん
09/01/10 06:09:58
>>163
JFrameのコンテンツペインには何も追加しないの?
コンテンツペインに追加したコンポーネントのpreferredSizeに
スクリーンをはみ出さない程度のDimensionを設定したら、
setLocationがちゃんと効いた記憶があるんだけど。
違ってたらごめん。
166:デフォルトの名無しさん
09/01/10 16:08:05
コンポーネントなしのタイトルバーだけのJFrameでもsetLocationは効くのが普通だけど
>>159のソースが分からないことには何とも言えんから問題の切り分けってことなら
>>163のようなものでも動作がおかしいのならJava環境かWin環境自体が変な可能性大だし
削ぎ落としたものは大丈夫なんだったら
JFrame自身の位置情報に影響を与えるようなコンテンツが入れられているか
自分でも知らないうちに別の場所で位置を書き換えているようなコードを入れているかなので
差し支えない範囲でソースを出してもらわないと他の人間には判断のしようがないと思う
167:デフォルトの名無しさん
09/01/10 19:00:09
とりあえずソースを晒せ。それからだ。
168:デフォルトの名無しさん
09/01/11 18:31:55
JFrame でアプリを作り、Mac で起動し、
Mac の上部から 「〜〜を終了」 を選んで終了した際に
ドキュメントが保存されていない場合には保存確認をとり、
キャンセルされたらアプリケーションの終了をキャンセルしたいのですが、
こういうことはどのようにすればいいのでしょうか?
169:デフォルトの名無しさん
09/01/11 18:44:18
JFrame#setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE)
とかじゃなかったっけ?
で、WindowListenerで閉じるときの処理を書く。
170:デフォルトの名無しさん
09/01/11 20:09:41
それが、ウィンドウを閉じた時はそこにくるんですが、
「〜〜を終了」 の時はそこに来ないようなんです。
addShutdownHook なら一応保存確認することはできますが、
アプリケーションの終了をキャンセルすることまではできなくて、
どうしたものかと思っています。
171:デフォルトの名無しさん
09/01/11 21:00:30
>>168
URLリンク(developer.apple.com)
172:デフォルトの名無しさん
09/01/11 21:13:21
>>171
ありがとうございます。できました!
173:デフォルトの名無しさん
09/01/12 20:20:49
高橋麻奈の優しいJAVAで一通り覚えた。けどこれから何をすればいいのか分からん。
あれ。なんでJAVAを勉強しようと思ったんだっけwwwwwwww
174:デフォルトの名無しさん
09/01/12 22:07:56
やさしいJavaとか書いたらまあ湧いてくるじゃないか…
175:デフォルトの名無しさん
09/01/12 22:33:09
やさしいJavaと聞いてとんできました
176:デフォルトの名無しさん
09/01/12 22:35:42
やらしいJavaですか?(*ノノ*)キャー
177:デフォルトの名無しさん
09/01/13 08:44:10
エロく無いと学習意欲がわかない訳ですね。
マナタソに飽きたのなら他の娘に乗り換えてみるのも一つの選択肢。浮気性は嫌われるかもだが。
はじめてのJavaとか童貞が飛びつきそうなマヌアル本も必要な時期だなwww
178:デフォルトの名無しさん
09/01/13 21:43:44
もうすこしスレッドの扱いを楽に出来ないかね?
179:デフォルトの名無しさん
09/01/13 21:47:46
楽になったじゃないか
180:デフォルトの名無しさん
09/01/14 04:50:22
スレッドのどの部分が楽じゃないか書かないと分からないよ。
単に一般的でない変な使い方しようとしてるだけとか?
181:デフォルトの名無しさん
09/01/14 12:26:18
個人的には ThreadLocal と ThreadPool あたりが導入された時点で割りと満足だなー
182:デフォルトの名無しさん
09/01/14 13:01:59
ThreadPool ??
183:デフォルトの名無しさん
09/01/14 15:46:13
>>182
java.util.concurret.ThreadPoolExecutor とその関連
184:デフォルトの名無しさん
09/01/14 16:22:01
スレッドの仕組み的な話じゃないのか
描画スレッドとかさ
185:デフォルトの名無しさん
09/01/14 22:19:39
ここでSwingWorkerが出てこないのがこのスレのレベルの低さ
186:デフォルトの名無しさん
09/01/15 02:39:01
土方生活が長いとそんなものでも楽だと思うものなんでしょうか?
187:デフォルトの名無しさん
09/01/15 03:34:36
SwingWorker最低限絞ったAPIだからな。
使うっちゃ使うが小規模なアプリだな。
188:デフォルトの名無しさん
09/01/16 01:08:24
JavaFXのスレが立たないのは、なぜなんでしょ?
189:デフォルトの名無しさん
09/01/16 03:34:42
誰も使ってないからに決まってるじゃないか。
描画スレッドで特殊な用途?
サブミリナルでも埋め込みたいとか? ちらつき程度ならダブルバッファ使って描画してれば充分だろうし。
190:デフォルトの名無しさん
09/01/16 23:59:30
>>189
誰も使いたがらない理由は、たとえば何なんでしょ?
191:デフォルトの名無しさん
09/01/17 00:33:53
・重い
・配布サイズでかい
・ツールが弱い
192:デフォルトの名無しさん
09/01/17 00:57:37
>>191
なるほど。
逆に軽くて、配布サイズ小さくて、ツールがよければ使うってことですかなぁ。
193:デフォルトの名無しさん
09/01/17 09:15:20
名前が今一ってのもあるな。
FXよりはFAとかDXとかのほうがよかった感じ。
194:デフォルトの名無しさん
09/01/17 10:16:23
FXとかFAとかDXとか言われると、PC98を思い出してしまうぜー。
PC98だと終わってしまうから、JavaNXでどーよ。
195:デフォルトの名無しさん
09/01/17 10:17:53
FXって投機臭がする名前だ
196:デフォルトの名無しさん
09/01/17 10:25:10
>>193
ぶっちゃけJavaがついてる時点で
197:デフォルトの名無しさん
09/01/17 11:56:13
>>193
頓挫した「winFX」への当てつけじゃないの?
198:デフォルトの名無しさん
09/01/17 16:27:39
>>191
URLリンク(www.google.co.jp)
重くて、配布サイズでかくて、ツールがいまいち分かりにくいSilverlightが人気なのは、なんなんですかねえ。
199:デフォルトの名無しさん
09/01/17 16:30:15
人気・・・・・あるのか・・・・?
200:デフォルトの名無しさん
09/01/17 16:42:49
JavaFXと比べれば
201:デフォルトの名無しさん
09/01/17 16:47:23
選択肢がなければ使わざるを得ない
202:デフォルトの名無しさん
09/01/17 17:12:54
>>199
あ、失礼、人気じゃないすね。Googleトレンドとかで、比較してみてということ
>>200
そいうことす
203:デフォルトの名無しさん
09/01/17 17:30:37
Flexでいいじゃん。
204:デフォルトの名無しさん
09/01/17 19:28:05
>>203
%%
%%
205:デフォルトの名無しさん
09/01/17 22:51:56
配布サイズって関係あるのか?毎日ダウンロードを繰り返すわけでもあるまいに。
206:デフォルトの名無しさん
09/01/18 19:03:45
【初心者】Java質問・相談スレッド122【歓迎】
スレリンク(tech板)
次スレが無い
207:デフォルトの名無しさん
09/01/18 19:18:03
>>206
気にするな
208:デフォルトの名無しさん
09/01/19 22:19:16
本屋にjRubyの本有ったので眺めてみたら、rubyからswing呼べるのな。楽しそうだわwww
209:デフォルトの名無しさん
09/01/19 22:32:49
JavaScriptからでも何でも呼べるじゃん・・・
210:デフォルトの名無しさん
09/01/20 02:05:44
groovyからry
211:デフォルトの名無しさん
09/01/20 02:45:10
PHPか(ry
212:デフォルトの名無しさん
09/01/20 02:46:24
マジレスすると、言語を生かしたSwing呼び出しという点では、Groovyだな。
SwingBuilderはなかなかいい。
213:デフォルトの名無しさん
09/01/20 04:39:31
Cからswing使ってる漏れはどうやら勝ち組(ry
214:デフォルトの名無しさん
09/01/25 06:39:50
JTreeでソートしたくて
((DefaultTreeModel)getModel()).removeNodeFromParent(node);
これでノードを外して
parent.add(node);
これでノードを追加してソートしてたんよ
でも、これだと開いてるツリーが閉じてしまうんだ。
開いてるツリーそのままでソートする方法しらない?
215:214
09/01/25 23:43:39
とりあえず、自己解決。
用意されてるメソッドでそれっぽいの見つけられなかったから、
現在展開してるパスを全部しらべて、ソートが終わってから開きなおすようにしたぜ。
216:デフォルトの名無しさん
09/01/26 01:38:21
久々にSwing使ってみたけど、相変わらず酷いなぁと思う
ここのスレの人はなぜSwingを使うのだろう
C#やVB.NETじゃダメなの?
LinuxやMacで動かしたいわけじゃあるまいし。
217:デフォルトの名無しさん
09/01/26 02:09:41
>>216
いや、Linuxでも動かしたい。
218:デフォルトの名無しさん
09/01/26 02:49:22
>>216
いや、Solarisでも動かしたい。
219:デフォルトの名無しさん
09/01/26 05:32:01
マクで動かそうと思うと大変だから止めとけ。あれは異世界。存在しない物として扱ったほうが平和。
swing程度で十分というのが大きい。awtでもむしろ十分だが。
まあvs使えないだけとも言うが。コントロールをちまちまマウスで配置するくらいならコードで記述したい訳だ。
220:デフォルトの名無しさん
09/01/26 19:21:07
ポトペタなしのswingいじるのって、html手打ちするようなもんですよね
ポトペタありでswingいじったことないんですけど
221:デフォルトの名無しさん
09/01/27 03:35:16
HTMLもアドビのソフトでちまちま設定するより、メモ帳で書いたほうが速いしなあ。
222:デフォルトの名無しさん
09/01/27 11:30:33
HTMLは手打ち以外の選択肢はないな
大昔は必要がなかったし、今はカススタイラーゆえ意味がない
223:デフォルトの名無しさん
09/01/27 13:32:51
ポトペタありのSwingってのもキモそうだな。
なんか、モデルやコントローラまわりで歪なコード吐きそうだ。
224:名無しさんに接続中…
09/01/27 16:31:56
SwingはなぜVBのようなデザイナーがないのだ?
225:デフォルトの名無しさん
09/01/27 16:54:49
おまえらNetBeansを無視するなよ。
Swing+JSR295+JSR296と組み合わせてポトペタできるくらいにまでなってるんだぞ。
URLリンク(builder.japan.zdnet.com)
226:デフォルトの名無しさん
09/01/28 14:06:14
HTMLも、業務アプリならポトペタがいいよなあ。
227:デフォルトの名無しさん
09/01/28 16:28:16
まあそういうときはAdobe Dreamweaverが最低ラインだな。
228:デフォルトの名無しさん
09/01/29 06:43:53
swingはなぜ流行らないんだ?
229:デフォルトの名無しさん
09/01/29 08:25:30
デカくて重いからでないかい
230:デフォルトの名無しさん
09/01/29 08:54:08
>>228
GUIフレームワークで流行ってるのってなに?
231:デフォルトの名無しさん
09/01/29 08:59:55
MFC、VB
232:デフォルトの名無しさん
09/01/29 09:01:37
そこらへんは他に選択肢ないから使われてるだけじゃ
233:デフォルトの名無しさん
09/01/29 09:18:38
そのとおりだと思うけど、
Swingはなぜそれらの代替になりえないのか・・・
速度か?やはり速度なのか?
234:デフォルトの名無しさん
09/01/29 09:20:45
Mac版のリリースが遅すぎる!
235:デフォルトの名無しさん
09/01/29 09:21:56
先に普及したものが圧倒的に強いし。
単にSwingに既存のものを置き換えるほどの魅力がなかったってだけでしょ。
236:デフォルトの名無しさん
09/01/29 09:31:29
>>233
自分は長いことWindowsアプリケーションを作ってきたんでつが、V2Cという2chビューワを使い始めてSwingアプリの軽快さにびっくりしたです。
V2Cが純Swingじゃなかったらスミマセン
237:デフォルトの名無しさん
09/01/29 09:37:22
いや、純だよ。
やっぱJavaはもうちょいデスクトップアプリケーション強化して、それと速度に関してもどうにかアピールしないとなぁ
238:デフォルトの名無しさん
09/01/29 13:26:10
javaはもっさりってのが一般的な常識だからかもしれんね
あと、表示が微妙にださかったり
俺はjavaしかまともに使えないから、swingをやってみた。
swingでダメだったらMS製品買えばいいかなーって感じで。
java以外も使えるようになりたいから、MS製品で遊んでもいいと思うんだけどね
239:デフォルトの名無しさん
09/01/29 14:11:25
>>238
> java以外も使えるようになりたいから、MS製品で遊んでもいいと思うんだけどね
じゃあ Express Editions でも入れて C# とかやればいいと思うよまじめな話
240:デフォルトの名無しさん
09/01/29 15:46:58
Linux系のGUIをJavaでSwingでってわけにはいかんのか?
用途としてはもうそっちしかなかろう
241:デフォルトの名無しさん
09/01/29 16:03:25
Hashtableが保持している値をJTableに表示させていて、
Hashtableの内容が変更されたら、それと連動してJTableの表示も変更されるようにしたいのですが
何か常套手段みたいなのが有るんでしょうか?
242:デフォルトの名無しさん
09/01/29 16:55:15
>>241
レンダラーやエディターで意図したものにあってるかな?
243:デフォルトの名無しさん
09/01/29 19:24:19
>>241
10msおきにHashtableを監視してJTableにイベントディスパッチジョブ投げるスレッドを常駐させる。
Hashtable派生させたりMapやTableModelでラップしてもいいなら、他にも手はある。
244:デフォルトの名無しさん
09/01/29 19:25:19
BeansBindingとかでなんとかならんの?
使ったことないけど
245:デフォルトの名無しさん
09/01/29 20:25:16
>>243
あ、言われちゃった。
手抜き実装だけどこんな感じ。2秒ごとにMap操作して、JTableが更新される。
URLリンク(bucyou.mydns.jp)
>>244
ならんはず。
246:デフォルトの名無しさん
09/01/29 21:17:11
Hashtable使うのをやめる
247:デフォルトの名無しさん
09/01/30 04:09:12
10msおきに監視ってコスト高そうだ。負荷凄いだろwww
変更する処理にトリガ噛ませてイベント受け取るようにしたほうがよく無いか?
ウェブ系とかjava前提の製品とかだとインストーラからjava GUIだったりはするね。
インストーラ作成用との便利なフレームワークとかあるんだっけか?
表示が微妙にださいってのは人それぞれだからなあ。窓すらださいって言い出すマカみたいな変人も居るし。マルチモニタとかにすら対応できてないマクのほうがださいだろって感じだが。
GCがアレなのか、使ってるともっさり感が増すし、メモリも喰いまくってるのが駄目だな。
それ故、MFC, VBにすら負けてしまう。java使いが作る側には不満無いけどね。純粋にアプリユーザの側にはjavaじゃないほうが快適。
248:デフォルトの名無しさん
09/01/30 07:39:08
>>247
>変更する処理にトリガ噛ませて
それが243の言ってる”Hashtable派生させたりMapやTableModelでラップ”で、
その実装が、244のソースだろ。
MFC、VBには負けるかもしれないけど.NetのWinFormsとはいい勝負だと思う。
場合によってはSwingのほうが速いし。軽い。
249:デフォルトの名無しさん
09/01/30 10:30:43
>>247
スレチだがマルチモニタ環境ってのはMacのほうが歴史がずっと長いんだけどな…
Windows XPじゃマルチモニタでカラープロファイルを別のをあてる、とかはできないしね。Vistaは知らん。
まー最近はWinのドライバのほうがマルチモニタでできること多いけれどもw
250:デフォルトの名無しさん
09/01/30 10:38:42
winのマルチモニタはMEからだっけ?98からだっけ?
個人的に、Macが先でMSがそれを追いかけたってのは、MSが先行するより信憑性がたかいw
251:デフォルトの名無しさん
09/01/30 10:52:35
ちょっと調べてみたが、
win98からマルチモニタ対応、しかしMacの対応時期がわからんかったw
252:デフォルトの名無しさん
09/01/30 13:35:57
助けて下さい。
画像を拡大表示しているのですが、アニメーションGIFの拡大表示で困っています。
JLabelのアイコンにアニメーションGIFを設定すると、
フレーム切り替えのたびに以下のメソッドが実行されます。
public void paint(Graphics g)
public boolean imageUpdate(....
この時、毎回アニメーションGIFの画像を拡大してると表示がもっさりしてしまいます。
だから、一度拡大表示したフレームは拡大したイメージを保存しておいて、再利用したいのです。
そこで問題になるのは「表示しようとしてるのは何フレーム目なのか?」
これが分からないことなんです。
何か分かる方法しってる人いませんかorz
253:デフォルトの名無しさん
09/01/30 16:59:16
カラープロファイルなんて印刷屋でもない限りどうでもいいだろ。
問題なのはメニューとか操作GUIの設計。
マクの実装だと、メニューはメインモニターにしか表示されないはず。
窓や犬は、メインウィンドウ自体にメニュー付いてるから、メインモニターとかサブモニターとか関係無く自由に使える。
254:デフォルトの名無しさん
09/01/30 17:45:12
winも結構トンチンカンな動きするソフトいたよな
サブモニタで右クリックしたら、メインモニタにメニューが出たり、
サブモニタで最大化したら、メインモニタで最大化したりw
サブモニタで最大化したら、メインモニタの解像度に広がった時は非常に困ったw
255:デフォルトの名無しさん
09/01/30 20:29:06
サブモニタから起動したJARアプリのスプラッシュは、
やっぱりサブモニタに出て欲しいなあ。アプリはちゃんとサブ側に出る。
あ、当方WinXP+Sunの1.6系Java。
そのへん、Macはどうなんでしょ。
256:デフォルトの名無しさん
09/01/30 20:39:50
サブモニタから起動したかってどうやって判断するんだろ?
257:デフォルトの名無しさん
09/01/30 20:48:28
> アプリはちゃんとサブ側に出る。
前回終了時の表示位置覚えてるだけじゃなくて?
258:デフォルトの名無しさん
09/01/30 22:00:26
サブモニタから。。。起動?
俺のwinはタスクバーがサブモニタにあるんだが、これだと全部サブモニタに出ないとおかしくなるぜ
>>257でいいと思う
259:デフォルトの名無しさん
09/01/30 22:37:13
Windowsの流儀は知らないけどタスクバーがある方を
プライマリモニターと呼ぶわけじゃないんだ?
260:デフォルトの名無しさん
09/01/30 22:52:01
winのタスクバーはメインもサブも移動可能
てなわけで、俺のタスクバーはサブモニタに配置してあります
メインかサブかは、画面の解像度とか設定する画面で設定できるっす
261:255
09/01/30 22:56:24
・サブモニタのデスクトップ上のJARファイルをダブルクリック
・サブモニタに移動したエクスプローラからJARファイルをダブルクリック
いずれもサブモニタにアプリが出る。
ジオメトリ関連でやってることはsetLocationByPlatform(true)のみ。
これを外してもやはりサブモニタに出る。
サブモニタのコマンドプロンプトからjava.exe経由で起動すると
さすがにメインモニタにアプリが出た。
サブモニタのNetBeansから起動してもやっぱりメインモニタ。
262:デフォルトの名無しさん
09/01/30 23:03:33
>>261
おもすれー
ちょっと試しになんか作ってみよう
263:デフォルトの名無しさん
09/01/30 23:09:57
皆さんに聞きたいのですが、javaでどんなデスクトップアプリつくってますか?
今自分はタスク管理系アプリを作成しています。
メモ帳でいいじゃんはいいこなしでw
264:デフォルトの名無しさん
09/01/30 23:22:40
>>263
社内用にファイル処理系のアプリ。
265:デフォルトの名無しさん
09/01/30 23:33:15
>>263
エロ画像を楽しく閲覧するためのツール
266:デフォルトの名無しさん
09/01/31 00:11:06
>>263
2chのスレッド監視してエロ画像勝手に収集するツール
267:デフォルトの名無しさん
09/01/31 00:30:01
>>263
携帯電話とmacとwinでスケジュールを一元管理するソフト
268:デフォルトの名無しさん
09/01/31 00:50:08
ADVエンジン
269:デフォルトの名無しさん
09/01/31 01:01:11
>>263
無駄にリッチなUIをもつ画像ビューワー
をJavaFXでつくりたい。
270:デフォルトの名無しさん
09/01/31 21:00:02
Swing学習中なんだけど、ドローツールみたいなのを作るとき、以下のどれがいい?
1) Canvasみたいなコンポーネントを作って、図形を全部自前で管理する。
2) 図形の種類毎にコンポーネントを作って、Panelとかに貼り付ける。
3) それ以外。思い付かないけど。
271:デフォルトの名無しさん
09/01/31 22:29:30
1かな。
ありがちなパターンだとShapeクラスを作ってそのクラスを継承したクラスを作る。
でJPanelを継承したShape描画用のコンポーネントを作って、paintComponentですべてのShpaeを描画する。
272:デフォルトの名無しさん
09/01/31 23:16:09
>>270
ネットワーク・グラフ描画用のライブラリをいくつか使ったことがあるんだけど、
そのどちらでもない設計が多かった。>>271が近い。
図形の管理はドロー用コンポーネントが行い、
実際の描画は図形オブジェクトに委譲している、と言えばいいかな。
図形の種類ごとにクラスを作るのは2と一緒だけど、
これらのクラスは独自のクラス階層を構成していて、
つまりJComponentのサブクラスではないので、そのままではSwingに乗っからない。
代わりに、図形を載せて描画する専用のSwingコンポーネントがある。
このドロー用コンポーネントは、paintComponentをオーバライドしていて、
addされた図形オブジェクトすべてに対して、paint系メソッドを呼ぶようになっている。
これらの図形クラスのpaint系メソッドは、各図形のための適切な描画を行うことになっている。
図形の追加の度にドロー用コンポーネントを変更しなくていいので、すっきりする。
Open-Closed Principleに合致しているね。
ライブラリによっては、図形クラスのpaint系メソッドがさらに別のオブジェクトに委譲可能で
ここがAdaptableだったり(JListのレンダラみたいなの)、
図形クラスを、Swing非依存のモデルクラスと、Swing依存のビュークラスに分けて設計していたり、
さまざまだった。
この手のライブラリはいろいろあるので、見てみるといい刺激になると思う。
挙げるなら、OpenJGraphとかJGraphとかJungとかかな。
273:デフォルトの名無しさん
09/01/31 23:59:22
「もしやJComponentを再発明しているのでは?」と思ったら、
思い切って資産捨てて透過JComponentベースで作り直す勇気も必要かも。
ドローツールとのことなので、まずは
・位置サイズのgetset、
・可視性のgetset、
・クリップしたGraphicsを渡すpaint
ぐらいの軽い独自インタフェースで十分だと思うけど。
274:デフォルトの名無しさん
09/02/01 00:07:19
>>271-272
thx! 「グラフィックJava2」とか「Filthy Rich Clients」とか
引っくり返しながらいじってるんですが、既存コンポーネント以外
の話になると極めてプリミティブな部分しか載ってなくて、
どういう風に設計すればよいか、という部分については頭を
かかえてたので参考になります。
275:デフォルトの名無しさん
09/02/01 00:16:38
>>273
や、今のところ、「JComponentのサブクラス作って、その上にマウスで
Rectangleが描けるようにナッター\(゚∀゚)/」というレベルなので……。
その先に進もうとして、「これをつかんで移動させたり変形させたりしよう
と思ったら、図形もJComponentのサブクラスにした方がええんちゃうか?」
というのが質問の発端です。
276:デフォルトの名無しさん
09/02/01 00:37:47
JDrafterを参考にするといいかも
277:デフォルトの名無しさん
09/02/01 01:09:59
>>276
宣伝乙。
278:デフォルトの名無しさん
09/02/01 01:36:34
いや、宣伝じゃないよ
あれは素直にすごいだろ
jadで十分読めるから読んでごらん
279:デフォルトの名無しさん
09/02/01 02:05:58
スプラッシュなんてちゃんと見ないからどうでも良いな。
むしろ消せるオプションを標準実装にして欲しいくらいだ。気持ち程度、余計な事をしない分、起動が速く成るだろうし。
窓は融通が利くけど、マクはマクらしいとアポーが決めてるアプリの使い方しか出来ないように強制されてるのが嫌。
俺が買ったものくらい自由に使わせろって。
280:デフォルトの名無しさん
09/02/02 00:12:19
>>240
既存のフロントエンドをSwingに移行させるんなら
そこそこ市民権を得そう。
281:デフォルトの名無しさん
09/02/02 05:31:37
>>279
JavaSE6の機能でスプラッシュ出してるなら、起動速度は変わらない
282:デフォルトの名無しさん
09/02/02 12:00:55
つかスプラッシュ消えるの速すぎてタイトル嫁ねえw
一定以上の時間指定したい
283:デフォルトの名無しさん
09/02/02 12:12:28
起動をもっさり遅くすればいいんじゃね?
起動すればソフトのタイトル見えるんだし、わざわざ邪魔なスプラッシュ表示しとく意味ねえよ
284:デフォルトの名無しさん
09/02/02 13:38:01
java6のスプラッシュはVM起動時に表示されるんであってアプリ起動時に表示される訳じゃないからアプリをもっさりさせても意味ないよ。
285:デフォルトの名無しさん
09/02/02 13:40:56
まじかよw
スプラッシュって起動中だからちょっとまっててな。ってニュアンスが一番よさげなのにw
286:デフォルトの名無しさん
09/02/02 13:44:23
きっとスレ違いでは無いはず・・・。
#include<gcj/cni.h>
#include<javax/swing/JFrame.h>
#include<javax/swing/JButton.h>
#define JS(str) ::JvNewStringUTF(str)
int main(void)
{
::JvCreateJavaVM(NULL);
::JvAttachCurrentThread(NULL,NULL);
{
JFrame *frame=new JFrame(msg);
frame->add(new JButton(JS("Okey")));
frame->setDefaultCloseOperation(JFrame::EXIT_ON_CLOSE);
frame->pack();
frame->setVisible(true);
}
::JvDetachCurrentThread();
return 0;
}
JFrameが表示された後、即main関数を脱出してしまう。
当然といえば当然だが、これを上手いこと防ぐ方法は無いか?
287:デフォルトの名無しさん
09/02/02 15:02:38
frame->setVisible(true);の後ろに↓を足したらいいんじゃね?
try {
while (frame->isVisible()) {
Thread->sleep(1000);
}
} catch (InterruptedException e) {
// 華麗にスルー
}
288:デフォルトの名無しさん
09/02/02 20:39:52
>>282
Frameの表示を遅らせれば?
289:デフォルトの名無しさん
09/02/02 22:08:46
>>287
スレッドで分離する方法とかもあるんだけど、
定石的な方法は無いだろうか?
>>288
どういう事?いまいち想像が付かないが。
290:デフォルトの名無しさん
09/02/02 22:24:38
>>289
普通にjavaだけでやる分には、main抜けても問題ないからわかんないっす。
そして、俺も助けて欲しいことが。
URLリンク(sandalman-no-blog2.blogspot.com)
ここのソースなんだけど。
JTree内でDnDすると、ツリーが閉じてしまうんだ。
JTreeの以外からドラッグしたのをJTreeにドロップする分には閉じない。
JTreeからJTreeにDnDするとドロップされた側が閉じてしまう。
わけわかんねーっす、誰か助けて。
291:290
09/02/02 22:39:56
自己解決したっす。
// node.removeFromParent();
((DefaultTreeModel)tree.getModel()).removeNodeFromParent(node);
// ((DefaultTreeModel) tree.getModel()).reload();
292:290
09/02/02 22:41:26
途中送信orz
node.removeFromParent();
((DefaultTreeModel) tree.getModel()).reload();
↓
// node.removeFromParent();
((DefaultTreeModel)tree.getModel()).removeNodeFromParent(node);
// ((DefaultTreeModel) tree.getModel()).reload();
こうしたら閉じなくなったっす。
node.removeFromParent();ってなんか使いにくいんですかね?
293:デフォルトの名無しさん
09/02/03 04:35:28
ほんとに助けてほしいなら、わかんねーすっとかムカつく言葉遣いやめておいたほうがいいな。
294:デフォルトの名無しさん
09/02/03 09:55:01
別スレの空気嫁とかいいながら煽る人よりは
295:288
09/02/03 14:44:18
>>289
スプラッシュが消えるのはFrame等が表示されるまでだから。
下のを-splash:temp.pngとかで適当にスプラッシュ表示させてみ。
import javax.swing.*;
public class SplashTest {
public static void main(String[] args) throws Exception {
Thread.sleep(5000);
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame frame = new JFrame();
frame.add(new JLabel("てすと"));
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
}
296:デフォルトの名無しさん
09/02/05 19:47:24
というか、スプラッシュの表示時に表示したい時間分、sleepすれば
いいだけなんだけどな。
297:デフォルトの名無しさん
09/02/05 21:28:43
そのスプラッシュ超いlらないなw
298:デフォルトの名無しさん
09/02/05 21:36:09
5分ぐらいスリープしとくとちょうどいいんじゃないかな
299:デフォルトの名無しさん
09/02/05 23:08:46
どん兵食うのにか?
300:デフォルトの名無しさん
09/02/05 23:20:25
それだ!
スプラッシュにラーメンタイマー機能をつければいい!!
で、何の話だっけ?
301:デフォルトの名無しさん
09/02/06 02:12:04
どんべえも最近は3分じゃねぇの?ってとこまでは読んだ。
302:デフォルトの名無しさん
09/02/06 02:15:24
5分か3分か選べるオプションをつければ完璧という事は魂で理解できた
303:デフォルトの名無しさん
09/02/06 02:18:00
ていうか、スプラッシュに「閉じる」ボタンがあれば誰も困らないのに…
304:デフォルトの名無しさん
09/02/06 04:22:44
スプラッシュが閉じるときに、音を鳴らす必要があるな。
305:デフォルトの名無しさん
09/02/06 20:05:07
蓋を閉めてジャヴァアプリを起動する必要があるけどな。
306:デフォルトの名無しさん
09/02/06 23:02:17
4分を舐めると火傷するぜ・・・
307:デフォルトの名無しさん
09/02/06 23:04:42
>>306
頭使えよ
5分設定で起動してから1分後にお湯を入れればいいんだ
308:デフォルトの名無しさん
09/02/06 23:19:52
じゃあ1分くらい用意してくれよ
309:デフォルトの名無しさん
09/02/07 18:06:37
URLリンク(www.cupnoodle.jp)
もうお前らこれ使えよ…
310:デフォルトの名無しさん
09/02/07 18:27:57
これじゃスプラッシュでないじゃん
311:デフォルトの名無しさん
09/02/07 19:01:30
すみませんが、質問させてください。
Swing Application Frameworkをバリバリ使ってます、方ってこのスレでいますでしょうか?
創るJavaでJavaを再学習しているのですが、実際のアプリSwingだといろいろ管理が面倒だな、と思っていたときに
上記のフレームワーク見つけたのですが、1.03になってもあまり流行っている感じがなかったので
問題があったのかぁ、と思ったので・・・・
使っている方で、「この辺が便利だよ」、とか「これが使えない」とかありましたら教えていただけないでしょうか?
312:デフォルトの名無しさん
09/02/07 19:57:39
>>311
使ってないけど、J2SE7に含まれるらしいよ
けど誰か忘れてたけどアプリケーションクラスがシングルトンになってる時点でだめだとか書いてたような・・・
313:デフォルトの名無しさん
09/02/07 23:27:34
ポップアップメニューのsetLightWeightPopupEnabledに相当するメソッドは
JMenuにはないでしょうか?
ポップアップメニューにJMenu追加して分岐させたら、
分岐させたメニューが表示できませんでしたw
setLightWeightPopupEnabled使わないとポップアップメニューを出せないような作りが悪いのかもしれませんが。
もしあったら教えてください。
314:デフォルトの名無しさん
09/02/07 23:41:38
>>313
JMenu#getPopupMenu() で取ってきたポップアップメニューに setLightWeightPopupEnabled
315:デフォルトの名無しさん
09/02/07 23:47:57
>>313
どう考えてもSwingの描画ぶっ壊してるから他の部分でも見えてないだけで問題があるかと。
316:デフォルトの名無しさん
09/02/08 00:01:10
>>315
はい、継承してコネコネしてるJLabelの上だとポップアップメニューがでないんです。
いつか直さないと。
>>314
ありがとうございます。
JMenuの中にpopupMenuがあって気になってましたが、それでいけそうな気がします。
317:デフォルトの名無しさん
09/02/08 00:35:27
>>314
めでたく上手くいきました。
ありがとうございました。
318:デフォルトの名無しさん
09/02/09 17:16:44
アプリケーション終了時に、ウィンドウの位置とサイズを記憶したいです。(次の起動時に復元するため)
この時、最大化した状態で終了すると、元に戻すボタンを押した時のサイズを取得できません。
この元の位置(できればサイズも)を最大化してる状態で取得する方法はないでしょうか?
※自分でやった事
ComponentAdapter#componentMovedを使って、
getExtendedState() == NORMALの時に位置を記憶させてみたものの、
最大化した時にgetExtendedStateがNORMALの状態で動いてしまい、
位置を-4,-4で記憶してしまいます。
マルチモニタでも動かしたいため、0以下の値を弾くわけに行かなくて困っています。
componentResizedが動く時はgetExtendedState() == MAXIMIZED_BOTHになっているため、
サイズはなんとか記憶させることができました。
319:デフォルトの名無しさん
09/02/09 18:12:18
EDTの簡単な取得方法はありませんでしょうか?
320:デフォルトの名無しさん
09/02/09 20:23:34
6u12でAWTとSwingの限定的な混在がサポートされたな。
321:デフォルトの名無しさん
09/02/09 21:02:12
>>319
EDTを取得して何すんの?
↓でできるけど
import javax.swing.SwingUtilities;
public class GetEDT {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
//↓こいつがEDT
Thread edt = Thread.currentThread();
System.out.println(edt);
}
});
}
}
322:デフォルトの名無しさん
09/02/09 21:27:51
>>321
それは分かりますが、単純にEDTが走ってればそれを返して、動いてなければnullみたいなのがありそうだなーと思っただけです。
確かに用途は少ないですね。
Thread#setUncaughtExceptionHandler()をEDTに設定したかったのですが、すでに取得する方法があればそれを使用しようと質問しました。
わざわざくだらない質問に答えていただきありがとうございました。
323:デフォルトの名無しさん
09/02/09 23:04:02
>>322
URLリンク(java.sun.com)()
URLリンク(java.sun.com)()
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4354日前に更新/99 KB
担当:undef