Java低速GUI Swing 8
at TECH
1:デフォルトの名無しさん
08/11/21 11:24:21
ハードウェアの高スペック化、描画アルゴリズムの変更、JavaVMの高速化に伴い、パフォーマンスの問題は改善されています。
しかしながら、"Java"というだけで未だに敬遠されるのが現状。
そんなSwingと引き続き付き合っていくみんなのスレッドです。
Java低速GUI Swing 7
スレリンク(tech板)
Java低速GUI Swing 6
スレリンク(tech板)
Java低速GUI Swing 5
スレリンク(tech板)
Java低速GUI Swing 4
スレリンク(tech板)
Java低速GUI Swing 3
スレリンク(tech板)
Java低速GUI Swing 2
スレリンク(tech板)
Java低速GUI Swing
スレリンク(tech板)l50
2:デフォルトの名無しさん
08/11/21 11:25:06
VisualStudioのようなポトペタ開発環境がほしい!!
NetBeans
URLリンク(www.netbeans.org)
Eclipse+VisualEditorPlugin
URLリンク(www.eclipse.org)
URLリンク(www.eclipse.org)
Jigloo
URLリンク(cloudgarden.com)
3:デフォルトの名無しさん
08/11/21 11:25:58
AWTもターゲットに入ってていいんだよね?
Q. AWT と Swing 混ぜちゃ駄目って聞いたんですけど
混ぜちゃ駄目なんですか・・・・?
A.
今まででは、「駄目」というのが正解です。
が、現在開発中(未リリース)のバージョンではSwingとAWTの混在ができるようになっています。
正式リリースがされるまで、情報の錯綜があって混乱すると思いますが
普通の人にとっては「まだ駄目」という状況だと思ってください。
Q. Nimbusって何よ。
A.
次期Swingの標準となるとされているLAFです。
元々は、SUNのGnome環境のテーマに使われていた見た目を移植したものになります。
実装にはXMLベースでLAFを定義できるSynthLookAndFeel を利用しています。
jdk6の開発版で試す事ができます。
Q. こんなプログラムを作れって言われたんですが・・・
A.
宿題スレへどうぞ。
Q. なんでスレタイに低速って入ってるの?
A.
まだまだ速くなるってことさ。
4:デフォルトの名無しさん
08/11/21 11:37:19
GUIの質問なので、再度書き込みします。
こんなGUIのフォームを作りたいんですが、
その中でいくつか質問があります。
テーブルA ボタン テーブルB
ID Name ID Name
[1 ][A ] [1 ][E ]
[2 ][B ] (追加) [2 ][F ]
[3 ][C ] (削除) [3 ][G ]
[4 ][D ] [4 ][H ]
1.テーブルID項目は非表示にさせたいけど方法をおしえていただけませんか?
2.テーブルAセルを選択した状態で追加ボタンをおしてテーブルBに追加したいんですが、
選択したセルの情報を取得する方法をおしえていただけませんか?
以上です。よろしくお願い致します。
5:デフォルトの名無しさん
08/11/21 12:36:18
1.必要なデータを提供するモデルを実装する。
2.JTable#getValueAt(row,col)
6:デフォルトの名無しさん
08/11/21 12:38:33
あ、選択した行、列はJTable#getSelected〜で。
API読めよw
7:デフォルトの名無しさん
08/11/21 12:55:57
>>6
ありがとう御座います。
兆しがみえたのでちょっとやってきます。
>API読めよw
これってSunのクラス説明のこと?
8:デフォルトの名無しさん
08/11/21 21:52:00
>>4のレベルだとリファレンスマニュアルよりもまずswingの参考書を
一冊読んだほうがよさそうな気がするなw
9:デフォルトの名無しさん
08/11/21 23:34:02
くだらん嘲笑するぐらいなら
ちょっとのヒントぐらい書いてやればいいものを
10:デフォルトの名無しさん
08/11/22 19:41:01
ヒントってか>>5で答がでてるじゃん…
あと参考書読んだ方がいいってのもヒントだと思うけど…
11:デフォルトの名無しさん
08/11/22 20:59:12
>>10
>9はもっと丁寧に、そして空気を悪くするなって言いたいんでしょう。たぶん。
>>4
選択したセル番号を直接得ることはできないけど、選択した行と列を得るメソッドとして
それぞれgetSelectedRowとgetSelectedColumnというのがあります。
12:デフォルトの名無しさん
08/11/22 21:07:50
答え既にでてるのにお疲れ様です。
13:デフォルトの名無しさん
08/11/24 13:10:06
APIリファレンスを読んでから質問しましょう。
Java 6
URLリンク(java.sun.com)
Java 5.0
URLリンク(java.sun.com)
Java 1.4.2
URLリンク(sdc.sun.co.jp)
14:デフォルトの名無しさん
08/11/24 13:25:22
>>13
APIリファレンスってSwingの使い方がわかる人にしか意味ないし、
そういう人はたいてい質問してこないんじゃ・・・
15:デフォルトの名無しさん
08/11/24 15:16:17
あのー、JFrameを勧める人が多いんですけど(swingなので当然ですが)、JFrameはスレッドがらみでダメダメって話があるんでやっぱりダメなんですか?
16:デフォルトの名無しさん
08/11/24 16:13:29
>>15
お前が何をしたいのかが分からない
よって答えも出せなければ相談にも乗れない
17:デフォルトの名無しさん
08/11/24 16:16:06
ダメなんですか
やめておきます
っていうレスの後押しが欲しいんだろ
18:デフォルトの名無しさん
08/11/24 16:34:38
なんか殺気だってますねこのスレ。結局・・・人生ってのは孤独なものなのでしょうがないんでしょうか・・・
19:デフォルトの名無しさん
08/11/24 16:52:40
>>18
同意して欲しいのかい?構ってちゃん
20:デフォルトの名無しさん
08/11/24 16:58:56
慣れてくれば、JInternalPaneとかJAppletでやって、それを最後にFrameとかに貼り付けるかな。
21:デフォルトの名無しさん
08/11/24 17:02:46
>JInternalPaneとかJAppletでやって
何をやるの?
22:デフォルトの名無しさん
08/11/24 20:35:57
流石に>>15は釣りだろ…
23:デフォルトの名無しさん
08/11/24 21:01:58
>>15は真性で
>>18が釣と見た
24:デフォルトの名無しさん
08/11/25 09:54:16
V2C使ってみてSwingすげーと思った
25:デフォルトの名無しさん
08/11/25 11:40:35
おまいら jEdit つかわんのか?
26:デフォルトの名無しさん
08/11/25 16:39:48
>>23
いや、20だろ、釣りは。
27:デフォルトの名無しさん
08/11/25 22:33:13
あほっても誰も構ってくれないなんか淋しいよな・・・
28:デフォルトの名無しさん
08/11/25 22:57:44
JTextAreaの幅のみを固定して使いたいのですが、setPreferredSizeを使うと、
高さも固定されてしまいます。何か良い方法は無いでしょうか。
29:デフォルトの名無しさん
08/11/25 23:06:15
ありません。
30:デフォルトの名無しさん
08/11/25 23:15:25
おお…、無いですか。ありがとうございました。
31:デフォルトの名無しさん
08/11/25 23:42:14
JComboBoxについて質問させてください。
現在、コンボボックスのプルダウン時の表示項目を
個別にDISABLEDにさせられる様にしようとしてます。
表示はCellRendererでどうにかなったものの、マウスで
DISABLEDにした項目をクリックすると選択が出来てしまいます。
この現象を防ぐためにはどのようにすればいいのでしょうか?
よろしくお願いします。
32:デフォルトの名無しさん
08/11/26 00:30:08
URLリンク(java.sun.com)
この例のようなやり方で自作コンポーネントへ、TransferHandlerによるDnDでドロップ位置の表示を行おうとしています。
この方法でsetDropLocation(←自作コンポーネントに作成したアクセサ)によりDropLocationを設定すべき場所は、TransferHandler内ではどの場所でしょうか?
入力しようとするときに表示させるものなので、現在は
TransferHandler#canImport(TransferSupport)
内でsetDropLocation(support.getDropLocation())
としています。
一応表示はされますが、この方法ではドロップターゲットが変わった場合にsetDropLocation(null)とできないため、ドロップ位置の表示が消えません。
何かドロップ位置を表示するスマートな方法はありませんでしょうか?
33:デフォルトの名無しさん
08/11/26 11:00:19
JListはsetListData()でオブジェをセットできますが、
JTableはなにを使えばオブジェをセットできますか?
34:デフォルトの名無しさん
08/11/26 11:51:40
>>28
JTextArea を入れるコンテナのレイアウトを工夫する。
たとえば BorderLayout では
EAST と WEST のコンポーネントは
横幅が preferred size の横幅に固定され、
高さはコンテナのサイズによって変わる。
35:デフォルトの名無しさん
08/11/26 12:13:47
JWindow上のコンポーネントのツールチップを表示させるにはどのようにすればよいのでしょうか?
36:デフォルトの名無しさん
08/11/26 12:35:26
>>35
普通はどうやってるの?
JWindowでだけ特殊だという意味?
ツールチップの設定の仕方自体を知らないという意味?
37:デフォルトの名無しさん
08/11/26 12:38:26
いえ、普段JFrameにコンポーネントのせていて、元々対応していないものであればToolTipManagerで登録して・・のような流れで表示させていたのですが、JWindow(JFrame以外のwindow?)にのせてみると表示されなくなったのです。
38:デフォルトの名無しさん
08/11/26 12:58:28
>>37
普通の使い方は、JComponent#setToolTipText()でしょ。
で、うろ覚えだけど、JComponent#setToolTipText()でString引数がnullかどうかで、
ToolTipManagerに登録(registerComponent(JComponent),unregisterComponent(JComponent))されるように実装されてたはず。
なので、
>元々対応していないもの
これの意味が分からない。
ToolTipManagerはそもそも、JComponentしか受け付けないはずだし、
JComponentであれば、ツールチップを表示させられる。
であるのに、元々対応していないものとは?
あとは、JFrameを使用しているほうのバージョンでは、
setInitialDelay()等のhogeDelayプロパティを変更しているとか。
ツールチップを無効にしているとか。
JFrameを使用しているほうのバージョンとJWindowのコードとの差を検査した方が良いと思う。
39:デフォルトの名無しさん
08/11/26 13:17:37
>>37
38です。
ちょっとコード書いてみたけど、たしかに動かない。。すまん。
JWindow,ToolTipManagerのソース見たほうが良いかも。
class Hoge{
public static void main(String[] args){
JWindow window = new JWindow();
//JFrame window = new JFrame();
JButton buton = new JButton("Button");
buton.setToolTipText("tip");
window.getContentPane().add(buton);
window.setBounds(0, 0, 450, 450);
window.setVisible(true);
}
}
40:デフォルトの名無しさん
08/11/26 13:20:43
>>39のコード
EDTで起動してないとこは大目にみて、修正してね。
41:デフォルトの名無しさん
08/11/26 13:53:35
理由はよく分からないけど、
Frame を表示させないで
Window だけを表示すると
ちゃんと動作しないことがある。
42:デフォルトの名無しさん
08/11/26 20:29:30
ownerなしのJWindowだと、フォーカスが取れないからじゃね?
JFrameで setUndecorated(true) と setAlwaysOnTop(true)くらいやっとけば、代わりになるんじゃね?
43:デフォルトの名無しさん
08/11/26 21:15:51
Jtableって何行まで行があるとかわかるクラスある?
あったら教えて。
44:デフォルトの名無しさん
08/11/26 21:27:27
>>43
行数なら、JTable,TableModelだけど、
言ってるのは、多分、有効なデータがある最大行インデックスってことだと推測するなら、
そんなapiありません。
45:デフォルトの名無しさん
08/11/26 22:39:15
JTable自体にメソッドついてるよ、getRowCount()が。
46:デフォルトの名無しさん
08/11/26 23:47:01
>>45
JTable#getRowCount()やTableModel#getRowCount()じゃなく、
これ系統の話じゃないのか
URLリンク(www.atmarkit.co.jp)
47:デフォルトの名無しさん
08/11/27 00:05:16
「Jtableって何行まで行がある」かとしか読み取れない
48:デフォルトの名無しさん
08/11/27 00:50:48
そうか。
個人的には「何行ある」と「何行まで行がある」では違うと思うけど。
本人じゃないから分からないけどさ。
49:デフォルトの名無しさん
08/11/27 00:59:26
43の教えてクンぶりはあまりといえばあまりなんだけど
「何行ある」と「何行まで行がある」は双方どう違うのか興味が出てきた
50:デフォルトの名無しさん
08/11/27 01:02:41
平和だな〜
51:デフォルトの名無しさん
08/11/27 10:50:13
JTextFieldに入力した文字をリストに格納したいんだけど、
JTextFieldの入力が終わったって判断するにはどうしたらいいんだ?
イメージではフォーカスがかわった時イベントを起こすようにしたいんだけど
52:デフォルトの名無しさん
08/11/27 10:55:27
addFocusListenerでいんじゃね?
53:デフォルトの名無しさん
08/11/27 11:01:45
focusLost使ってフォーカス変わったタイミングで格納するわ
54:デフォルトの名無しさん
08/11/27 12:55:10
>>51
エンターを押してもらう
55:デフォルトの名無しさん
08/11/27 19:58:14
JFormattedTextField を文字列(または空文字列)でコンストラクトし、
value に関するプロパティのイベントを捕捉すれば、いい感じかも。
フォーカスが外れたりリターンキーが押されたりしたときに
(文字列が変わってれば)イベントが発生するっぽい。
56:デフォルトの名無しさん
08/11/28 11:02:32
現時点において、世間で一番成功したSwingアプリってなんだろ?
CabosってSwingアプリだっけ?
ム板で聞いてもバイアスがかかると思うので、
IDE各種(Eclipse, NetBeans, etc)と2ch専ブラ(V2C,etc)は却下。
いやさ、実行系絡みのトラブルシュート対策のページを
パクらせてもらおうと思って。
57:デフォルトの名無しさん
08/11/28 13:38:15
V2Cだろ
58:デフォルトの名無しさん
08/11/28 13:48:43
jEdit だろ
59:デフォルトの名無しさん
08/11/29 03:43:20
limewire
60:デフォルトの名無しさん
08/11/29 04:37:51
外為どっとコムww。なぜかFirefoxで動かないけど。
やっぱリアルタイム性のあるとこかな
61:デフォルトの名無しさん
08/11/29 09:11:32
jude
62:デフォルトの名無しさん
08/11/30 19:08:08
JListにはJTreeみたいな編集機能はないんかの?
アイテムの名前変更できるようにしようとして、ぐぐってもなんも引っかからんぜ
63:デフォルトの名無しさん
08/11/30 19:31:01
ないなぁ
けど実装はそんなに難しくないよ
JTableを1列で、とかだめ?w
64:デフォルトの名無しさん
08/11/30 20:19:02
実装は難しくないのか。
まだ容易されてる入り口と、ぐぐって出てくる手法でしか作ってないから想像もつかないぜ
JListとJTableを組み合わせて使ってるから、JTableのアイテムを編集させてみる。
気が向いたら、その難しくない実装とやらをがんばってみるかな
65:デフォルトの名無しさん
08/11/30 20:48:41
JTableのソースを見て、CellEditorを中心に見てみると結構参考になるかも。
66:デフォルトの名無しさん
08/12/02 22:47:32
JScrollPaneのViewportViewにJTreeを二つ設置したJPanelを指定したのですが
スクロールペインの中央にJTreeが並んでしまって困ってます
BoxLayoutでJPanelにJTreeを設置するとテキストがまともに表示されない(後半が途切れる)ので
GridBagLayoutで白紙のパネルをJTreeの下に設置し、JTreeを左上になんとか表示してます
こんな無理矢理な方法を使わず、素直にJTreeを二つスクロールペインの左上に設置する方法は無いでしょうか?
何方かご教授下さい…
67:デフォルトの名無しさん
08/12/03 16:48:33
今ひとつ分からないけどこれでだめ?
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
JPanel viewportView = new JPanel(new FlowLayout(FlowLayout.LEFT,0,0));
JTree tree1 = new JTree();
JTree tree2 = new JTree();
viewportView.add(tree1);
viewportView.add(tree2);
frame.add(new JScrollPane(viewportView));
frame.pack();
frame.setVisible(true);
68:デフォルトの名無しさん
08/12/03 16:50:03
みすってたー
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
FlowLayout fl = new FlowLayout(FlowLayout.LEFT,0,0);
fl.setAlignOnBaseline(true);
JPanel viewportView = new JPanel(fl);
JTree tree1 = new JTree();
JTree tree2 = new JTree();
viewportView.add(tree1);
viewportView.add(tree2);
frame.add(new JScrollPane(viewportView));
frame.pack();
frame.setVisible(true);
69:デフォルトの名無しさん
08/12/03 22:15:15
>>68
ありがとうございます!明日試してみます!…ノートPC持って帰ってくるの忘れたorz
口で説明しても伝えられない気がしてきたので簡易ながら図解にしてみました。
URLリンク(toku.xdisc.net)
上の理想像のように配置したいのですが、BoxLayoutだと下図のようにテキストが途切れます…
70:デフォルトの名無しさん
08/12/03 22:46:19
JTreeを2つ使う理由がわからん。
JTreeを1つで、setRootVisible(false)にすればええやん。
71:デフォルトの名無しさん
08/12/04 06:45:15
こんな感じかな
panel.setLayout(new BorderLayout());
panel.add(tree1, BorderLayout.NORTH);
panel.add(tree2, BorderLayout.CENTER);
scrollPane = new JScrollPane(panel);
72:デフォルトの名無しさん
08/12/04 19:34:31
>>70
それやったら何も表示されなくて…
JTree二つあった方がラクかなぁ?と思って組み始めたんです。
>>71
tree2が中央に来ました…orz
73:デフォルトの名無しさん
08/12/04 21:30:24
>>72
>>70 でやったときにTreeNodeが表示されないと言っている?TreeModelの使い方は理解してる?
ここ↓をひととおり読んでみた?
URLリンク(java.sun.com)
74:デフォルトの名無しさん
08/12/04 22:31:32
いつの間にか jdk 6u11 が出てるな…
75:デフォルトの名無しさん
08/12/05 00:49:36
今日JavaFXリリースだというのにまったく盛り上がってないなw
76:デフォルトの名無しさん
08/12/05 00:53:24
忙しくて試す時間ないんだけど、どんな感じ?
77:デフォルトの名無しさん
08/12/05 05:22:12
もういらねーんだよ。うじゃうじゃとアホなスクリプト言語とか。
78:デフォルトの名無しさん
08/12/06 12:47:42
JavaFX結構おもしろいじゃん
ただ何やってるか分からんけど起動がえらい遅い
79:デフォルトの名無しさん
08/12/06 23:29:05
ブラウザからデスクトップにドロップするやつ試したやついる?
あとアニメとかはどうだ。滑らかに動くのか。
とにかく生情報がほしいな。
自分はOSバージョンの関係で試せないけど、試したやつ報告よろしく
80:デフォルトの名無しさん
08/12/07 01:58:37
JavaFXはスレ違い
81:デフォルトの名無しさん
08/12/07 02:03:37
Java FXってGUIはSwingそのものなの?
82:デフォルトの名無しさん
08/12/07 02:17:15
このスレの解答者はカスしかないけどから一応こたえてやると・・・
siwngはjavacでコンパイルされてバイトコードになるためjvm共通のwidgetになるから
javafxcでJFrame{}とかすれば当然JFrame.classが呼ばれてswingそのものを呼び出しているといえる。
83:デフォルトの名無しさん
08/12/07 07:32:52
「WOLF RPGエディター」とは?
・高度なRPG開発が可能な、完全無料のゲーム作成ツールです。
・雰囲気はRPGツクール2000に近い。RPGツクール2000で自作システムを作りこむ際に
不満だったところがいろいろ解消されていて、かなり自由度が高いです。ただし
その分初心者には難しいかも。すでにツクール2000で自作システムを組むのに
慣れた人やRPGツクールでは物足りないけどプログラミングはちょっという方にお勧め。
・作成したゲームは自由に配布したり、コンテストに投稿することも可能。
また本ソフトを持たない人でもプレイ可能!ファイル暗号化も完備してるよ!
・要望、不満点、バグ報告などなど書き込みお願いします。今もどんどん進化中です。
・それとマップやキャラなどのドット素材もじゃんじゃん募集中ですので
一度サイトにお越しくださいませ。
・このツールで作ったゲームをサイトで紹介してるから、ダウンロードしてどういう
ゲームが作れるのか見てみてね。
2ちゃん本スレ
スレリンク(gamedev板)l100
84:デフォルトの名無しさん
08/12/07 14:02:31
このスレの解答者はカスしかないけどから
このスレの解答者はカスしかないけどから
このスレの解答者はカスしかないけどから
このスレの解答者はカスしかないけどから
このスレの解答者はカスしかないけどから
このスレの解答者はカスしかないけどから
85:デフォルトの名無しさん
08/12/07 14:36:13
>>84
>>82 の回答を見ると納得してしまうなw
86:デフォルトの名無しさん
08/12/07 14:38:40
>>84
×解答
○回答
87:デフォルトの名無しさん
08/12/07 15:51:51
そろそハードウェア対応のCompositeを増やしてくれないものか…
加算半透明が欲しいけど、そういう人は少ないのかなあ。
88:デフォルトの名無しさん
08/12/07 16:07:38
javafxはどこで話せばいいの?
89:デフォルトの名無しさん
08/12/07 17:21:02
ここかJDK7のスレッドだろうね
90:デフォルトの名無しさん
08/12/07 19:26:39
jdk1.4からpaintが改善されてきてjdk1.6でほぼnativeと同等になったから、そろそろそういうブレンドとかのクラスも出てくるんじゃないか?
今はCPUに計算させて力でごり押しでもいいだろうけど、本来のやり方は力業計算はjoglとかハードの方を使って(経由して)計算させるものなのかと思う。
そういうの説明してるサイトはあまりないけどね。
91:デフォルトの名無しさん
08/12/07 21:36:37
すごく初歩的なことかもしれないんですが、packって必ず呼ばないといけないんでしょうか?
92:デフォルトの名無しさん
08/12/07 21:53:12
いいえ
packしたい時に呼べばいいだけです
93:デフォルトの名無しさん
08/12/07 22:33:58
packは使うべきかどうかどう判断すればよいのでしょうか?
94:デフォルトの名無しさん
08/12/07 22:45:50
packがやることは分かる?
95:デフォルトの名無しさん
08/12/07 22:53:31
各コンポーネントの推奨サイズを見て、ウィンドウ全体のサイズを決定、でしょうか?
96:デフォルトの名無しさん
08/12/07 23:12:21
ウィンドウを推奨サイズにしたい場合は pack()
自分でサイズを指定したい場合は
setSize() とか setBounds() とか
97:デフォルトの名無しさん
08/12/09 19:16:25
JDK1.6u11になってNimbusを今まで作ってきたアプリでためしてみたんだが微妙だなぁ。
こっちの書き方も悪いんだけど、それを差し引いてもあちこちにデザインの破綻が起きる。
画像アイコンを入れたボタンやカスタマイズした部品の修正が大変。
Metalのほうが細かい操作面や様々なケースで、神経が行き届いていたように思われ。
98:デフォルトの名無しさん
08/12/09 22:19:01
addElement
public void addElement(Object obj)指定されたコンポーネントをリストの末尾に追加します。
パラメータ:
obj - 追加されるコンポーネント
DefaultListModelのaddElementのリファレンスを読んでコンポーネントも追加できるのか…?と思い
JPanelをaddしてみたんですが、文字列らしきもの(ポインタ的な何か…?)が表示されるだけで上手く行きません。
そもそもコンポーネントの追加という意味を私が取り違えているのでしょうか?お教え下さい
99:デフォルトの名無しさん
08/12/09 22:29:41
普通はUIを頻繁に変えたりしない思うけどね。
昔のxのウィンド・マネジャの乱立とかwinデスクトップテーマの流行を思い返す。
system uiのwinでぽっぽアップしたときのメニュー文字のギャップをもう少し広げてくれると
win ui (win classic ui)とほぼ同じでハッピーなんだけど。
100:デフォルトの名無しさん
08/12/09 22:49:05
>>98
コンポーネントは広い意味でのコンポーネントって表現だと思う。
英語版のjavadocが"Component"になっているから、そう訳したんだと思う。
Objectが引数だから、JPanelだろうが、通常やらないだろうけど、Timerだろうが何でも格納はできる。
表現が的確か分からないけど、ListModelは単なるデータストアであって、
ListModelから取り出したデータを、どう表現するかはCellRendererの役目。
一度、java tutorialとかで基本的なところを勉強するといいと思う。
101:デフォルトの名無しさん
08/12/09 22:52:29
>>98
デフォルトのレンダラでは対応していないのでJPanelを要求通りに表示できるレンダラに変更
102:デフォルトの名無しさん
08/12/09 23:14:46
>>99
JMenuItemのsetMargin()とか呼んでみたら?
ポップアップメニューのL&Fの更新ってプログラマーの責任だったっけ。
JComponent#setComponentPopupMenu()だけでは自動更新してくれなかった記憶が。
103:デフォルトの名無しさん
08/12/10 21:52:27
>>100-101
本当にありがとうございます。CellRenderer改変して無事に完成しました
JPanel上にBorderLayoutでJLabelを2つ設置してそれを返すようにしたら想像通りのものに…!
JLabelの背景色変更しても色変わらなくて、2時間程経ってからsetOpaqueの存在を知りました。
もっと情報検索を上手いとこ出来るようになりたいですorz
104:デフォルトの名無しさん
08/12/11 01:05:13
>>102
>ポップアップメニューのL&Fの更新ってプログラマーの責任だったっけ。
1.7.0で修正されたはず。
105:デフォルトの名無しさん
08/12/11 02:07:02
>>104
1.7か。遠い未来・・・でもないがまだまだだろうなぁ
106:デフォルトの名無しさん
08/12/11 03:32:06
javax.swing.undoではまったのでメモ。
例えば、文字列の置換のような削除、挿入という複数の処理を1回で元に戻したい場合は
UndoManagerを入れ子にする。
UndoManagerを2つ用意して、基本はサブに追加する。一塊の処理が終わったらend()を呼んでメインに追加する。
void undoableEditHappened(UndoableEditEvent e) {
sub.addEdit(e.getEdit());
if (!compound) {
sub.end();
main.addEdit(sub);
sub = new UndoManager();
}
}
ちなみに普通にUndoをするだけならリスナにUndoManagerを追加するだけで出来ます。
JTextField tf = new JTextField();
tf.getDocument().addUndoableEditListener(new UndoManager());
107:デフォルトの名無しさん
08/12/12 11:25:31
HTMLDocument/HTMLEditorKitってなんでこんなに使いづらいんだブツブツ…
108:デフォルトの名無しさん
08/12/13 12:36:19
>>107
わー、同士よ。使ってる人、他にもいたんだ。
6u10以降、javax.swing.text.html
でちゃんと日本語HTML表示できている?
WebKitベースの新APIが1.7で登場するという噂はどうなったんだ…
109:デフォルトの名無しさん
08/12/13 15:29:45
>WebKitベースの新APIが1.7で登場するという噂はどうなったんだ…
JWebPaneでしょ?
JWebPane は、Java7からってことになってるけど、Java7は1年半後らしいからね、いつになるやら。
たしか、AIRはWebBrowserコンポーネントを提供してるから、
JavaFXがAIRに対抗するために、リリース時期が早まるんじゃないかと少し期待してる。
110:デフォルトの名無しさん
08/12/13 16:33:11
JavaやってるとWindowsのexeが作れない。。
また、SwingやAWTの設計でGUI画面作るのもちょっといやだ。
Windows専用のJavaGUIライブラリどこかの会社でうまいことつくってくれないかな?
できれば、Delphi作ってる会社が作ってくれたりするといい。MSでもいいけど絶対作ってくれ無そう。
最悪、Javaで作ったファイルをWindows用exeに変換してくれるだけでもいい。できれば、UIもWindowsっぽくして・・
111:デフォルトの名無しさん
08/12/13 16:40:45
そんな思いまでしてjavaで作らなくても
そういう要求って仕事でやってるわけじゃないよね
112:デフォルトの名無しさん
08/12/13 16:52:18
ネタ乙
113:デフォルトの名無しさん
08/12/13 17:41:15
>>110
Excelsior JET + SWT
どっちにしろ Swing とは関係ないネタだ。
114:デフォルトの名無しさん
08/12/13 18:24:26
exewrapで十分だろ
Cocoaで作りたいとかいうならまだしもWindows寄りの設計って嬉しいか?
115:デフォルトの名無しさん
08/12/13 21:51:21
WinAPIもMFCも面倒なだけ
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
そいうことす
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4342日前に更新/99 KB
担当:undef