2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

Java低速GUI Swing 9

1 :デフォルトの名無しさん:2009/12/19(土) 23:13:39
ハードウェアの高スペック化、描画アルゴリズムの変更、JavaVMの高速化に伴い、パフォーマンスの問題は改善されています。
しかしながら、"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

2 :デフォルトの名無しさん:2009/12/19(土) 23:14:24
VisualStudioのようなポトペタ開発環境がほしい!!
NetBeans
http://www.netbeans.org/index_ja.html
Eclipse+VisualEditorPlugin
http://www.eclipse.org/
http://www.eclipse.org/vep/
Jigloo
http://cloudgarden.com/jigloo/index.html

3 :デフォルトの名無しさん:2009/12/19(土) 23:15:08
AWTもターゲットに入ってていいんだよね?

Q. AWT と Swing 混ぜちゃ駄目って聞いたんですけど
  混ぜちゃ駄目なんですか・・・・?
A.
 今まででは、「駄目」というのが正解です。
 が、現在開発中(未リリース)のバージョンではSwingとAWTの混在ができるようになっています。
 正式リリースがされるまで、情報の錯綜があって混乱すると思いますが
 普通の人にとっては「まだ駄目」という状況だと思ってください。

Q. Nimbusって何よ。
A.
 次期Swingの標準となるとされているLAFです。
 元々は、SUNのGnome環境のテーマに使われていた見た目を移植したものになります。
 実装にはXMLベースでLAFを定義できるSynthLookAndFeel を利用しています。
 jdk6の開発版で試す事ができます。

Q. こんなプログラムを作れって言われたんですが・・・
A.
 宿題スレへどうぞ。

Q. なんでスレタイに低速って入ってるの?
A.
 まだまだ速くなるってことさ。

4 :デフォルトの名無しさん:2009/12/20(日) 00:19:25
スレ立て乙

Nimbus って、今でも JDK でしか使えないの?
うちの環境では JRE でも Nimbus が使えるけど。
JDK もインストールしてあるから、
JRE が JDK 付属の Nimbus を読み込んでる?


5 :デフォルトの名無しさん:2009/12/20(日) 00:40:25
Nimbusサポートは6u10以降だから、
前スレ開始とほぼ同じ時期の登場だったかな。

次スレで直せばOKじゃない?

6 :デフォルトの名無しさん:2009/12/20(日) 01:33:10
XAML使えるようにならないかなあ

7 :デフォルトの名無しさん:2009/12/20(日) 12:23:00
>>6
はあ?

8 :デフォルトの名無しさん:2009/12/20(日) 13:27:31
このスレpart10だからな。
前1がSwing/AWTスレ8をディスったからテンプレにないだけで。

9 :デフォルトの名無しさん:2009/12/20(日) 13:36:32
>>8
Swing/AWTスレ8のアドレス希望

10 :デフォルトの名無しさん:2009/12/20(日) 14:00:26
断る

11 :デフォルトの名無しさん:2009/12/20(日) 16:00:39
>>8
Disられてるのは、↓のスレタイじゃないの?
> Java低速GUI Swing 6
> http://pc11.2ch.net/test/read.cgi/tech/1190807478/

12 :デフォルトの名無しさん:2009/12/21(月) 10:52:10
jtableでソート出きるように変更したら、うまく背景色が表示できなくなりました
どなたか、教えてください

//2列目以外はすべて、数字でソートする。
model = new DefaultTableModel(columnName, 0) {
 @Override
 public Class getColumnClass(int columnIndex) {
  if(columnIndex == 1) return String.class;
   else return Integer.class;
  }
}

//奇数行は白、偶数行は水色で背景を塗りつぶす。
private static class TestTableCellRenderer extends DefaultTableCellRenderer {

private static final Color BGCOLOR = new Color(135, 206, 250);

 @Override
 public Component getTableCellRendererComponent(JTable tb,
  Object val,boolean isSelected, boolean hasFocus,int r,int c){

   setBackground(r % 2 == 0 ? Color.white : BGCOLOR);

   return super.getTableCellRendererComponent(tb,val, isSelected,hasFocus,r,c);
  }
}


13 :デフォルトの名無しさん:2009/12/21(月) 12:48:48
今は無理

14 :12:2009/12/21(月) 14:38:45
>>13
どうしようもないってこと?

15 :デフォルトの名無しさん:2009/12/21(月) 20:07:01
>12
エスパーすると、レンダラーの設定をString.classのカラムに対してやってない?
table.setDefaultRenderer(Integer.class, new TestTableCellRenderer());
にしないとダメだよ

16 :デフォルトの名無しさん:2009/12/21(月) 22:17:54
swingについて質問
コンポーネントAをコンポーネントBにadd()し、コンポーネントCにもコンポーネントAをadd()します。
その後にBとCを表示してみると、Bがうまく表示されません。
どのようにしたら、B、CどちらにもAを表示させる事ができますか?

JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
panel1.add(label);
panel2.add(label);
frame.add(panel1, BorderLayout.NORTH); ←表示されない
frame.add(panel2, BorderLayout.SOUTH);



17 :デフォルトの名無しさん:2009/12/21(月) 23:30:15
そもそも一つのコンポーネントを複数のコンテナに含めることができるのか?

18 :デフォルトの名無しさん:2009/12/21(月) 23:40:20
>>16
コンポーネントAがBに表示されずCにしか表示されないということであれば、
コンポーネントAを2つ生成(内容は同じだが別のオブジェクト)して、
一方をコンポーネントBに、もう一方をコンポーネントCにadd()するしかないかと。

JLabel label1 = new JLabel();
JLabel label2 = new JLabel();
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
panel1.add(label1);
panel2.add(label2);
frame.add(panel1, BorderLayout.NORTH);
frame.add(panel2, BorderLayout.SOUTH);


19 :16:2009/12/21(月) 23:57:13
画面のレイアウトが2種類あるのですが、ユーザに画面レイアウトを選ばせたいと考えています
ちなみに、レイアウトが替わっても表示するものは同じです

JPanel panel1 = new JPanel(); ← レイアウトA
JPanel panel2 = new JPanel(); ← レイアウトB
panel1.add(label); ←表示するもの
panel2.add(label);

>>18
表示する物が同じだから1つのインスタンスでどうにかしたい
と思いました


20 :デフォルトの名無しさん:2009/12/22(火) 02:58:29
>>19
CardLayout


21 :20:2009/12/22(火) 03:00:07
ごめん勘違い。

同じものを配置替えするという方法を取るところだろうね。


22 :デフォルトの名無しさん:2009/12/22(火) 04:01:20
ユーザーがレイアウトを選ぶたびに
BかCに add し直すしかないのでは


23 :デフォルトの名無しさん:2009/12/22(火) 04:21:44
同意

24 :16:2009/12/22(火) 10:14:08
やっぱり、add()し直すしかないですよね
実装する時に手を抜きたかったのですが、無理ですね
ありがとうございました

25 :デフォルトの名無しさん:2009/12/22(火) 11:19:57
ある画面実行中に、各Componentの登録済み全イベント処理クラスを知りたいのですが、
Component#getListeners(Class<T> listenerType)の中にあるリスナー群がすべてのイベントになるでしょうか?
つまりgetListeners(各イベントクラス)を10イベントリスナークラス分実行してとれたものを、
これ以外のイベント処理クラスは使用していません、と言いきれるものになるでしょうか?

26 :デフォルトの名無しさん:2009/12/22(火) 11:26:13
何をしたいかよくわからないんだが、とりあえず、10ってどこから出てきた数?

27 :デフォルトの名無しさん:2009/12/22(火) 15:52:07
>>26
Component#getListeners(Class<T> listenerType)の中で使われてゐたリスナークラスの種類です。

28 :デフォルトの名無しさん:2009/12/22(火) 15:59:48
事実上、リスナーってインタフェースだからな。
ActionListenerとMouseListenerどっちも実装してるクラスとかあっても、
ちっとも珍しい話ではない。

getListenersで得られたアクションリスナが、
実はマウスリスナでもありました、
というのは自前でinstanceof演算子で判定するしかないのでは。

とエスパー回答。何がしたいかわからんが、java.util.EventListenerProxyも
読んどいた方がいいような。

29 :デフォルトの名無しさん:2009/12/22(火) 18:07:29
>>27
あぁ、10の意味がわかった
その中に Button とかでよく見る ActionListener が無いのが不思議ではなかったか?
残念ながら Component#getListeners はサブクラスでオーバーライドされている
全部の一覧を得るのは無理じゃない?

30 :デフォルトの名無しさん:2009/12/22(火) 18:14:03
>>29
うーん。でもJButtonのgetListenersはオーバライドされていないんだよね…

31 :デフォルトの名無しさん:2009/12/22(火) 18:19:48
JComponentのオーバーライドが効いてる
JComponent以下はEventListenerListを使っててどんなリスナでも入る

32 :デフォルトの名無しさん:2009/12/22(火) 18:24:55
>>31
おお、すみません。見落としてました。
対象部品のgetListeners呼んでおけば各部品の全イベントが取れそうですね。


33 :デフォルトの名無しさん:2009/12/22(火) 19:52:37
教えて下さい
今SourceForgeでJavaMIDIMixer作ってるモノですが
MDIウィンドウを画面の下や右にピタッっと張り付ける
そんな事を実現するスタンダードな手順はありますでしょうか?

34 :デフォルトの名無しさん:2009/12/22(火) 22:10:19
>>33
MDIってことはJDesktopPaneとJInternalFrameか。

ドラッグして外周に近づいたら吸い付くってやつなら
ttp://terai.xrea.jp/Swing/MagneticFrame.html
こんなの?


35 :デフォルトの名無しさん:2009/12/22(火) 22:50:44
ありがとうございます^^
これはすばらしいですね

36 :デフォルトの名無しさん:2009/12/22(火) 23:51:54
ドッカブルでドラッガブルなGUIならDnDAPI使って自前で作ったがjava.netの何処かでみたぞ。

37 :デフォルトの名無しさん:2009/12/23(水) 22:55:08
JScrollPaneにJTable、JTextPaneなどを追加すると、最小限(現在選択している場所)の描写しかしませんが
どうやって、実装してるんですか?ヒントをください

38 :デフォルトの名無しさん:2009/12/23(水) 22:57:33
InvalidateRectのこと?

39 :37:2009/12/23(水) 23:05:40
JPanelあたりを継承して、それをJScrollPaneに追加したいな〜と思ったので

40 :デフォルトの名無しさん:2009/12/23(水) 23:14:23
Graphics#getClipBounds

41 :デフォルトの名無しさん:2009/12/23(水) 23:20:25
>>40
JTableのソースを読むと、そんな低レベルのメソッド使ってませんよ

42 :デフォルトの名無しさん:2009/12/23(水) 23:23:44
そりゃ描くのはJTable自身じゃないからな
BasicTableUIみてみろ

43 :デフォルトの名無しさん:2009/12/23(水) 23:26:39
JTableのソースなんて読まなくていいの
ためしに、JPanelにボタンとかリストボックス配置して、
JScrollPaneでそのJPanelかこってみなさいよ

Graphics2Dとかが自動的に処理してくれるから、ボタンもちゃんと押せるし、ほかの部分の描写かからないし
画像を張りたいなら、スクロール関係なしで、グラフィックを描写するPanelを設計して、

JScrollPane -> JPanel -> Layout -> グラフィックPanelクラス

の順番でつなげればいいだけ

グラフィックパネルの中ではそういうの必要ですけどね、

JTableはJTableUIのソースを見る必要がありそうですね

がんばってね!

44 :37:2009/12/23(水) 23:32:06
>>42-43
ひとまず、調べてみる
ありがとう

45 :デフォルトの名無しさん:2009/12/24(木) 00:01:46
まてまて。ここは JViewport の setScrollMode() の賢さを讃えるところじゃないのか?

46 :デフォルトの名無しさん:2009/12/24(木) 00:33:36
JViewPortのJDKドキュメントの「高速スクロールアルゴリズム」解説とやらに
知りたいことは全部書かれてる気もするが

47 :デフォルトの名無しさん:2009/12/24(木) 13:22:51
セルの話かと思ったらテーブル全体の話か

48 :デフォルトの名無しさん:2009/12/24(木) 13:53:54
D&Dで部品の配置を変えるGUIツール的なものを作りました。
自由に配置移動やボタンの追加等行って、それを保存呼び出ししたいと考えてますが、
その場合余計なことをせず、TOPのフレームをシリアライズANDデシリアライズで実現できそうでしょうか?
ComponentがSerializableなので、シリアライズ保存は想定されているんですよね?

49 :デフォルトの名無しさん:2009/12/24(木) 14:47:00
一応想定されてるんですが、バージョン間の互換性は保証されていません
XMLEncoder/XMLDecoderの方がいいかもしれません

50 :デフォルトの名無しさん:2009/12/24(木) 15:36:00
互換性って、JDKのバージョンでなく対象クラスのバージョンですかね?

51 :デフォルトの名無しさん:2009/12/24(木) 16:00:07
Swing各クラスのJavadocに下記の文がいちいち書いてある

> 警告: このクラスの直列化されたオブジェクトは、今後の Swing リリースと互換ではなくなる予定です。

52 :デフォルトの名無しさん:2009/12/24(木) 20:16:59
JButtonでボタンをクリックすると、あらかじめ登録しておいた内容を実行しますが
だれが、あらかじめ登録していた内容を呼び出すのですか?

53 :デフォルトの名無しさん:2009/12/24(木) 20:41:17
>>52
どういう内容が知りたいのか図りかねるが
取り敢えずEDTと答えておこう。

54 :デフォルトの名無しさん:2009/12/24(木) 20:41:56
>>52
JButtonの中の人
厳密にいえばAbstractButton#fireActionPerformed
その呼び元はDefaultButtonModel#setPressed
ButtonUIの中の人がマウスリスナかなんかを使ってマウスの動きを見てsetPressedを呼ぶ

55 :52:2009/12/24(木) 20:46:07
>>53
単純に誰が呼び出しているか知りたいだけで、
とくに意味はありません
thx

56 :デフォルトの名無しさん:2009/12/24(木) 21:43:01
IDEでプロファイラ動かすと、Swingアプリの見えないとこでうごめいている
小人さんスレッドがたくさん観察できるよ

※ コンソールからスレッドダンプでもおk

57 :デフォルトの名無しさん:2009/12/25(金) 01:41:34
イベントとかコールバックとか、
たしかに初めのうちは分かりにくい仕組みではあるよな


58 :デフォルトの名無しさん:2009/12/25(金) 11:53:30
各画面間の変数アクセスの最良の方法は何でしょう?
画面作成時のコンストラクタで親画面や操作したい画面を渡す?
画面をグローバル(public static)にする。

なんかstritsみたいにこれで行こうフレームワークはないですかね?

59 :デフォルトの名無しさん:2009/12/25(金) 13:00:35
MVCで設計を見直せばOKでは。
ControllerにViewとModelぶらさげて、
Viewから親画面と子画面をたどり
Modelから親データと子データをたどれば
画面間で変数アクセスできなくても無問題。

Webアプリとやらの「自称MVC」とはたぶん違うので注意。

60 :デフォルトの名無しさん:2009/12/25(金) 13:27:00
今のところこれで行こう的なフレームワークとかってないんですかね?
もしくはそんな動向の噂とか…
なるべく先をにらんだ設計にしたいもので

61 :デフォルトの名無しさん:2009/12/25(金) 13:42:32
ラベル、ボタン、チェックボックスなどをD&Dして表示位置を変更したいのですが、
JRE、サーとパーティのライブラリ問わずに、適した便利なクラス(マウスリスナー?)知っていたら教えてください。


62 :デフォルトの名無しさん:2009/12/25(金) 14:41:03
>>61
こんなん作ったけど、いまいちうまく動かん。
int x ;
int y;
boolean init = false;

public void mouseMoved(MouseEvent e) {

Component c = (Component)e.getSource();
if (!init) {
init = true;
x = e.getX();
y = e.getY();
return;
}

c.setLocation(c.getX() +(e.getX() - x), c.getY() +(e.getY() - y));
x = e.getX();
y = e.getY();
}

63 :デフォルトの名無しさん:2009/12/25(金) 17:39:53
アプレットでブラウザの×ボタンを押して終了したときに、そのイベントを拾うことっててきますでしょうか?

64 :デフォルトの名無しさん:2009/12/25(金) 19:01:25
  │A..  B
─┼───
.a │
.b │
Jtableの質問です
上記のような縦列表を作りたいのですがどうすれば良いのでしょうか
表の空欄には数値データを入れて計算等が出来るようにしたいと思っています

65 :デフォルトの名無しさん:2009/12/25(金) 19:16:09
>>63
destroy()メソッドが呼ばれたときに中でメッセージを表示したりは
できるけど、閉じるのを防ぐことは出来ないと思う。


66 :デフォルトの名無しさん:2009/12/26(土) 10:49:36
>>64
new JTable(3,3)

67 :64:2009/12/26(土) 12:04:16
説明不足で申し訳ありません
列ABにString[]、行abにString[][]を使って
JTable table = new JTable(String[][],String[])としたのですが、
String[][]を使ったために空セルにInt型のデータを入れられません
どうすれば列AB行abを残したまま空セルに数値データを入れられるのでしょうか

68 :デフォルトの名無しさん:2009/12/26(土) 12:08:11
String.valueOfで文字列化するというのは?

69 :デフォルトの名無しさん:2009/12/26(土) 12:54:57
表計算ソフトのようなテーブルを作るなら、
セルレンダラーやセルエディタを駆使しないと難しいよ。

70 :64:2009/12/26(土) 13:33:55
>>68
>>69
ひとまずチャレンジしてみます
ありがとうございます

71 :デフォルトの名無しさん:2009/12/26(土) 14:07:03
さがせばスプレッドシートのライブラリあるけど?

72 :デフォルトの名無しさん:2009/12/28(月) 12:39:08
JScrollPaneの中でJViewportがどの様に動いているか研究しているのですが、
スクロールバーをクリックした後に、JScrollPaneのどのメソッドが呼び出されているのかわかりません
どなたか教えてください

73 :デフォルトの名無しさん:2009/12/28(月) 15:56:07
スクロールバーをクリックすると、JScrollBarが持ってるBoundedRangeModelのsetValueが呼ばれる
それによってそのBoundedRangeModelに登録されたChangeListenerが起動する
BasicScrollPaneUIがここにChangeListenerを登録していて、その中でJViewport#setViewPositionを呼んで表示範囲を調節している
JScrollPaneはJViewportとJScrollBarとScrollPaneUIを管理しているだけ

74 :デフォルトの名無しさん:2009/12/29(火) 10:08:01
一般的なダイアログみたいに右下にボタン配置したいんだけど、どういった風にレイアウト組むのが自然?

75 :72:2009/12/29(火) 11:39:40
>>73
ありがとうございます

76 :デフォルトの名無しさん:2009/12/29(火) 11:48:24
tes

77 :デフォルトの名無しさん:2009/12/29(火) 16:12:26
BorderLayoutのPAGE_ENDに置いたBorderLayoutのLINE_ENDに置いたGridLayoutにボタンを置くのが俺流

78 :デフォルトの名無しさん:2009/12/29(火) 16:35:53
GridBagConstraints.SOUTHEAST でええやん

79 :デフォルトの名無しさん:2009/12/30(水) 00:03:27
JSliderでツマミのマウスドラッグにより変更された際、ChangeListenerのの中で
((JSlider)e.getSource()).setValue(0);
とかやっても、内部的な値は0にされるのですが、ツマミの位置がドラッグされた場所になってしまい
整合性がなくなってしまいます。これを防いでツマミも0の位置に合わせるにはどうすればいいでしょうか?

80 :デフォルトの名無しさん:2009/12/30(水) 00:08:36
SwingUtilities.invokeLater

81 :デフォルトの名無しさん:2009/12/30(水) 00:09:19
あと、e.getSource()とかやめた方がいい

82 :デフォルトの名無しさん:2009/12/30(水) 01:22:26
SwingUtilitiesよりEventQueueを使ったほうがいい

83 :デフォルトの名無しさん:2009/12/30(水) 01:22:52
ありがとうございます。
>>80
なんか振動?みたいな動きをしましたが、結局何も解決しませんでした。
>>81
なんでです?調べるキーワードも分からなかったんですが


84 :デフォルトの名無しさん:2009/12/30(水) 02:10:06
>83
たぶん振動するのは
1.スライダーが動く
2.スライダーの値が0になる
3.マウスがスライダーの上にあるのでスライダーが動く
これが繰り返されてるんだと思う。
スライダーをドラッグしたときどうしたいかがよくわからない、もう少し詳しく話してほしい

85 :デフォルトの名無しさん:2009/12/30(水) 06:06:09
なんでそんな不便なUIをおつくりなのか、状況が把握できていないので、確実に悪とはいえませんが、、
Swingは、スレッドセーフではないので、操作するときは、invokeLaterは、ほぼ必須です。
ちなみに、invokeLaterは、SwingUtilitiesでもEventQueueでも一緒ですね。

スライダーがかたかたいうのは、
スライダーに値をセットする前に、
マウスをはなした事にするイベントを、
擬似的に発生させれば回避できるかと思います。

86 :デフォルトの名無しさん:2009/12/30(水) 06:07:13
こんな感じで、スレッドが値と表示値を破壊しないようにできます。

if (EventQueue.isDispatchThread()) {
SwingUtilities.invokeAndWait(runnable);
}else {
SwingUtilities.invokeLater(runnable);
}



87 :デフォルトの名無しさん:2009/12/30(水) 06:09:48
e.getSource()は、ソースを見てもどのスライダーなのか、把握できないので、お勧めしません。
JSlider jSliderXXXXXなどと、パネル(フレームでも)のメンバー変数として、準備し、
そちらへアクセスしましょう。

88 :デフォルトの名無しさん:2009/12/30(水) 06:14:15
せめて、e.getSource()の使い道はこれくらいですかね。

if(e.getSource() == jSliderValueA) {
jSliderValueA.hoge();
}eles if(e.getSource() == jButtonX) {
jButtonX.setXXX();
}



89 :デフォルトの名無しさん:2009/12/30(水) 10:06:54
JSlider#getValueIsAdjusting()の説明は読んだか?

90 :デフォルトの名無しさん:2009/12/30(水) 13:36:15
JSliderの値を反映させないようにってことなら、MouseListener.mouseReleased()でsetValueすればいいんじゃない?

91 :デフォルトの名無しさん:2009/12/30(水) 17:13:53
>>87
でももし、明らかな場合はいいよね?ローカル変数にコンポーネントのインスタンス作っては
無名リスナークラスを設定しまくってるから、数十行の間に全ておさまってるんだけど・・・

92 :デフォルトの名無しさん:2009/12/30(水) 20:19:26
コンストラクタで渡すのが理想だけど、無名クラスならこういう風にすれば?
final JSlider target = slider;
slider.add○○Listener(new ○○Listener(){
 public void ○○(○○Event e){ target.・・・; }});

>85
SwingUtilitiesはEventQueueのカバーメソッドなのでなるべくEventQueueを使うように、とどっかに書いてあった

93 :デフォルトの名無しさん:2009/12/30(水) 20:50:18
>>85
やっぱり不便ですね。皆さんありがとうございました。

94 :デフォルトの名無しさん:2009/12/30(水) 22:43:21
>なるべくEventQueueを使うように
これswingの実装を知ってる必要があるんじゃね?

95 :デフォルトの名無しさん:2009/12/31(木) 00:13:30
staticメソッド呼ぶだけだって。
EventQueueのカスタム化も大した労力ではないが。

96 :デフォルトの名無しさん:2009/12/31(木) 10:51:30
TimerQueueがpublicなら・・・

97 :デフォルトの名無しさん:2009/12/31(木) 11:57:09
現在JTextAreaで入力を行っていて、入力時のイベントをDocumentListenerで受け取っているんですが、
漢字などの変換決定時に同じ文字のRemoveイベントとInsertイベントが飛んできてしまいます。
例えば"ねこ"を"猫"に変換するときに
INSERT ねこ
  [変換する]
REMOVE ねこ
INSERT 猫
  [変換決定]
REMOVE 猫
INSERT 猫

まぁ、動作としては正しいのでしょうが、こちらのプログラムの仕様上どうしても最後の重複した猫が
大きな無駄になってしまうので、なんとか変換決定イベントを知りたいのです。
もちろんRemoveイベントも受け取らなくてはならないのでRemoveを無視すれば?というわけにはいきません・・・。
キーイベントかなんかで頑張るしかないのでしょうか?(バグが出そうですが)

98 :デフォルトの名無しさん:2009/12/31(木) 15:12:59
InputMethodListener使ってInputMethodEventを見張る。

イベントのgetText()やgetCommittedCharacterCount()の長さを
デバッグ文で観察しつつ、いろいろなかな漢字変換操作を試してみよう。

確定した瞬間をとらえる判定式が、おのずと導けると思う。
細かいことは忘れた。

99 :デフォルトの名無しさん:2009/12/31(木) 15:31:52
普通にprocessEvent辺りだと思うんだが何でそんな面倒に考えるの?

100 :デフォルトの名無しさん:2010/01/01(金) 00:43:13
なんかややこしそうなので妥協します・・・
ありがとうございました

101 :デフォルトの名無しさん:2010/01/01(金) 02:57:20
上限4文字Maxの都道府県入力フィールドで
「わかやまけん」とか読みを入力するときだけリミッターを外すとか
みんなしてないのかな?

102 :デフォルトの名無しさん:2010/01/01(金) 03:02:32
都道府県入力フィールドに入力制限なんてつけないもの・・・
表記ゆれが怖いからコンボボックスじゃない?普通

103 :デフォルトの名無しさん:2010/01/01(金) 03:47:10
ある程度出来てから調整したほうがいいよ。
たぶん一から作り直しになるだろうけど、frameworkとかlibrary化するってのはそういうものだと諦めたほうがいいだろう。
その変換で無駄な感じとは思っていても、たいていは思ってたほどコストでもないからそのまま逝っちゃうってのがおおいけど。

104 :デフォルトの名無しさん:2010/01/01(金) 04:24:47
文字一つごとに膨大な計算をするのでフォントが複雑だと体感できるほどに遅くなることがあるんですよね。
入力中もリアルタイムで見た目を更新するので、うひゃ〜なんですけど、時間があればやります。ありがとうございました

105 :デフォルトの名無しさん:2010/01/04(月) 13:20:12
同じデータを用いて2つのテーブルを作りたいのですが、
1つのフレームに複数のテーブルを設置する事は出来るのでしょうか?
また、フレームを2つ作った場合、片方のテーブルのデータを変更した時に
もう片方のデータも同時に自動で変更するという事は出来るのでしょうか?

106 :デフォルトの名無しさん:2010/01/04(月) 14:01:37
>105
同じデータを使ってTableModelを作ればいいだろう
JTable自体は二つ、TableModelを共通のものとかにすれば自然とそうなるんじゃないか?

107 :ウォシュレットのアームめがけて排便する俺 ◆06NY4sFIG. :2010/01/04(月) 20:33:06
>>105
JavaAPIのJavadocからもリンク張られてるけど、
http://java.sun.com/docs/books/tutorial/uiswing/components/table.html#data
あたりも読んでみては。

106の方も言ってるけど、
この図のうち、
(TableModelやAbstractTableModelを継承した)Table Model Objectを1インスタンス、(JTableを継承した)Table Objectを2インスタンス作る。
んで、2つのTableのイベントリスナを同じModelに登録(addTableModelListenerメソッド)しとけば、
Model変更時にfireTableDataChangedみたいなメソッドで双方のTableに通知できる。


入力に使った方のTableも、入力イベントじゃなくて、
もう一方の方と同じようにfireイベントで更新しないといけないんじゃないかな。
(入力イベントで行うのはModelの更新だけ。もちろんModelの先にあるTable Dataも更新されるだろうけど。)

108 :デフォルトの名無しさん:2010/01/07(木) 20:34:19
ID、パスワード用のテキストボックスがメインのログイン画面があり、
htmlみたいにデザインを変更したいとの要求が上がっています。
Swingのhtml的デザインってどこまでできるのでしょうか?

109 :デフォルトの名無しさん:2010/01/08(金) 11:33:11
>>108
HTMLを使ったSwingコンポーネントのレイアウトは無理。

Swingの各種LayoutManagerのレイアウト機能はHTMLやCSSよりはるかに優秀。
リキッドデザインとかお手の物。CSSハックとかバカバカしくなって、戻れなくなるよ。

110 :デフォルトの名無しさん:2010/01/08(金) 11:44:16
htmlはcellも少ないしテーブルでいいのかなって思うけど何がダメなの?

111 :デフォルトの名無しさん:2010/01/08(金) 12:36:16
だめなとこなんかどこもないよー
でもswingのhtmlがレイアウトできるのはjavax.swing.text.Viewであって
swingコンポーネント(JComponent)ではないんだ
レイアウト周りのAPIは結構似てるけど。

112 :デフォルトの名無しさん:2010/01/08(金) 12:54:59
108です。
アドバイスありがとうございます。
cgiからアプレットに移行したシステムで、cgiがログイン画面をhtmlで変更できますよ、としていたので、
そのままの要求がアプレットにも上がってきた形になってます。

イメージとしては、表示したいhtmlの内容を設定ファイルに書いておき、
それをロードして、そのレイアウトでアプレットの画面を表示することをしたいです。

つまり、アプリ改修なしで好きなタイミングで好き勝手にデザイン変更することが求められ、
htmlに慣れているので、html以外のデザイン変更方法は受け付けない、というのが要求です。

凝ったことはしない+入力部品はID、パスワードだけで、増減はなしです。

Swingに取り込むときの設計イメージがわきません。アドバイスいただければと思います。


113 :デフォルトの名無しさん:2010/01/08(金) 12:56:51
>>112
文がおかしかったので、

cgiがログイン画面をhtmlで変更できますよ

htmlでできているのでログイン画面を自由にで変更できますよ

114 :デフォルトの名無しさん:2010/01/08(金) 13:07:47
それでいくらくれるんですか?

115 :デフォルトの名無しさん:2010/01/08(金) 13:11:30
DQNはweb何とかだけやってればいいのかなって思うよ。やっぱり改めてそう思った。

116 :デフォルトの名無しさん:2010/01/08(金) 13:14:25
そういえばJWebPaneってJava7に入るのかな。
>>112
もしその機能が本当に重要なのであれば、
ログイン画面はApplet化しないでウェブブラウザに任せる、つまり
htmlのままおいておくべきだとおもうけど。

117 :デフォルトの名無しさん:2010/01/08(金) 14:58:19
↓こういう取り組みもあるけどね。

http://ikemen.googlepages.com/htmltablepanel

でもなー、客のレベルも相当アレそうで先が思いやられるので、
難癖付けて断るのがベストだと思う。

118 :デフォルトの名無しさん:2010/01/08(金) 15:33:54
>>117
うおおお、これはすごいですね。
イメージが付いてきました。

119 :デフォルトの名無しさん:2010/01/08(金) 19:32:01
こういうDQNってさ、なにげなく白い奴のしゃぶりをやっちゃって、もうフィックスしちゃってんだろうなと思った。

120 :デフォルトの名無しさん:2010/01/08(金) 19:39:10
狂牛病に取り付かれたスポンジ脳と同じで、脳味噌スカスカって感じはするよね。

121 :デフォルトの名無しさん:2010/01/08(金) 19:45:08
うおおお、

122 :デフォルトの名無しさん:2010/01/11(月) 02:01:21
仕事で飯喰うなら、こんな所に丸投げするなよと思う。
そのうちhtmlをswingになんてアフォフレームワークを売り物にしてくる業者が出て来たら(ry

123 :デフォルトの名無しさん:2010/01/12(火) 11:59:50
>>122
仕事増えるならいいじゃん。
仕事ください

124 :デフォルトの名無しさん:2010/01/12(火) 23:52:11
JTextComponentのサブクラスは文字を表示することができますが、
文字列の座標情報?などはどうやって管理しているのでしょうか?

JTextComponentはDocumentインターフェイスに依存しているところまではわかるのですが、
そのあとがイマイチわかりません



125 :デフォルトの名無しさん:2010/01/13(水) 07:44:57
何をしたいの?
解析したいだけならデバックすれば?

126 :デフォルトの名無しさん:2010/01/13(水) 11:26:39
座標はViewが管理してます
ViewFactoryにDocumentのElementを渡して作ってもらいます

127 :124:2010/01/13(水) 21:09:05
>>126
確かに、viewで管理しているみたいですね(さっき、軽く読みました)

ところで、どうやって文字を表示しているんですか?
java.awt.graphicsは使っていないみたいなんですが

128 :デフォルトの名無しさん:2010/01/14(木) 10:32:08
なんかデジャヴが・・・ 前にJTableについて訊いてた人と一緒? まぁどっちでもいいけど
JButtonとかJTableとかJTextComponentとかSwingにあらかじめ用意されてるコンポーネントはみんな、
自分では描かずにButtonUIとかTableUIとかTextUIとかに処理を委譲している
だからJButtonとかJTableとかJTextComponentとかの方には表示関係のコードやマウス・キー処理のコードはない
ButtonUIとかTableUIとかTextUIとかの方にはルック&フィールごとに異なったサブクラスがあって(MetalButtonUI,等)、
それらがルック&フィールごとに異なった内容を表示し、ルック&フィールごとに異なったマウス・キー処理をしている
見るならそっち側

129 :デフォルトの名無しさん:2010/01/14(木) 10:39:38
>127
View#paint(Graphics g,Shape allocation)ってあるよな?

ちなみにTextUIってのは単なるViewFactoryだ。

130 :デフォルトの名無しさん:2010/01/14(木) 10:41:49
すまん。「BasicTextUIはTextUIを継承したViewFactory」の間違いだ。

131 :デフォルトの名無しさん:2010/01/14(木) 22:30:28
>>128-129
ありがとうございます

132 :デフォルトの名無しさん:2010/01/18(月) 19:29:12
JPanelで、paintComponent(Graphics g) をオーバーライドして描画を行う際
描画範囲がJPanelのサイズを超えた場合、自動でJPanelのサイズを拡大するには
どうすればよいですか?

133 :デフォルトの名無しさん:2010/01/18(月) 19:33:46
getPreferredSizeもオーバーライドして、描画範囲が超えないようなサイズを計算して返す

134 :デフォルトの名無しさん:2010/01/19(火) 08:00:54
getPreferredSizeに頼るとほとんどsetSizeが無効になりますよね?
setSizeでセットしたサイズ内で収まるようにするプログラムしたいときはnullレイアウトしかないのでしょうか。

135 :デフォルトの名無しさん:2010/01/19(火) 08:36:51
getPreferredSizeがsetSizeしたものより大きな値を返さないようにするとか。


136 :デフォルトの名無しさん:2010/01/19(火) 09:59:25
1.誰かがgetPreferredSize()呼んできたので100x100を返した。
2.そしたら誰かがsetSize()に80x80を渡してきたので不本意ながら従った。
3.そしたら誰かがクリップ領域10x10+20+20にしてpaintComponent()を呼んできた。

こんな状況?

クリップ領域は気にせず半径500の円弧だろうがなんだろうがガンガン描いたらよろしい。
どうしてもクリップ領域大きくしたいならrepaint(x,y,w,h)だけ呼んで
paintComponent()を終わらせればまたいつか新クリップでpaintComponent()が呼ばれる。

paintComponent()中にどうしてもコンポーネントサイズを大きくしたくなったなら
revalidate()だけ呼んでpaintComponent()を終わらせる。
そのうちgetMinimumSize()が呼ばれるので希望サイズを返す。
getPreferreSize()やgetMaximumSize()が呼ばれてもInteger.MAX_VALUEを
返しておけばいい。
やがてsetSize()が呼ばれるだろう。もし希望が叶わなくてもここは絶対服従。

137 :デフォルトの名無しさん:2010/01/19(火) 10:34:24
いや違うんです。
なんか誤解してるようですが、newしたときとかでその初期セットサイズ setSize(a,b)のまま固定しておきたくて、
基本的にサイズのは変更を許さず、resizeとかのレイアウト変更によって初期セットサイズを変更されたくないって意味です。
場合によっては縮小のときだけは許すが、拡大はmax sizeはsetSize(a,b)まで。
そういうときはnullレイアウトしかないのでしょうか。
レイアウトマネージャ使うとsetSizeの設定は実質意味をなしませんよね。

138 :デフォルトの名無しさん:2010/01/19(火) 10:43:42
paintComponentでやるしょりか?

139 :デフォルトの名無しさん:2010/01/19(火) 10:52:20
getPreferreSize()だろうがsetSize()だろうが実際はフレームと配下のコンポーネントのバランスをLMが勝手にとるから
AWTならnullレイアウトでいいけどSwingだと修飾がJava2Dだからなぁ。
ゲームだとGUI自前だしCanvasのサイズを強制したいからnullレイアウト使うがね。

140 :デフォルトの名無しさん:2010/01/19(火) 11:04:06
>>138
あまり分かってないようだけど、setSizeの質問ではswingはまったく関係ないよ。

141 :デフォルトの名無しさん:2010/01/19(火) 18:29:29
>>140
描画中にリサイズしたらイベントキューが理論的に順番めちゃくちゃにならない?

142 :デフォルトの名無しさん:2010/01/20(水) 19:04:26
JComponentのpaint(Graphics g)とprint(Graphics g)ってどう違うの?

143 :デフォルトの名無しさん:2010/01/20(水) 21:02:39
printって印刷だぜ?

144 :デフォルトの名無しさん:2010/01/25(月) 23:15:21
JTabbedPaneにadd("タイトル", JTableのインスタンス)を5回しています
JTableの列幅に変更があった場合、addした5つ全ての列幅を変更したいと考えています
どのように、すればよいのでしょうか?

145 :デフォルトの名無しさん:2010/01/26(火) 11:01:06
幅だけじゃなくて列の属性が全部同じなら、全部のJTableで1個のTableColumnModelを共有する

146 :デフォルトの名無しさん:2010/01/26(火) 20:47:58
>>145
thx

147 :デフォルトの名無しさん:2010/01/27(水) 06:05:30
Swingでゲームを作る人がいないのはなぜですか?

148 :デフォルトの名無しさん:2010/01/27(水) 06:12:28
ゲームを作るのに便利なライブラリ (画像効果など) とか手厚く用意されてるわけじゃないから。

149 :デフォルトの名無しさん:2010/01/28(木) 16:49:41
fillRectで塗った色はprintComponentで再描写しても消えないの?

150 :デフォルトの名無しさん:2010/01/29(金) 01:27:41
コンポーネントの描画に関して、何か誤解をしているように見える。

151 :デフォルトの名無しさん:2010/02/05(金) 22:22:26
NetBeansみたいなフォームデザイナってビジネスで使えるの?
IDEのバージョンアップでデザイナそのものが使えなくなるかもとか考えると怖い。

152 :デフォルトの名無しさん:2010/02/06(土) 12:14:53
GridBagLayout手書きしか使わんなー。
もちろん直接じゃなくて、ビルダークラス挟むけど。
builder.setContainer(container);
builder.setResourceBundle(resourceBundle);
builder.weight(0,0).addLabelResource("some.resource");
builder.weight(100,0).colSpan(2).add(new JButton(action));
builder.nextRow();
みたいな感じで。


153 :デフォルトの名無しさん:2010/02/06(土) 20:46:47
手書きなの?
1.6からだけど、手書きならgroup layoutとかいいよ。
grid bagのさらにパワーアップしたレイアウトだからそのブルダークラスとやらと同じ感じで設定できるだろう。

154 :デフォルトの名無しさん:2010/02/06(土) 23:51:42
JOptionPane の「OK」「キャンセル」みたいなデフォルトのラベルリソースってどこかから取れない?
JOptionPane でキャンセルボタンにデフォルトのフォーカスを置きたいのでユーティリティメソッド
使わないで書いていったんだけど、ボタン名を自分で指定しなきゃいけないのかな。

155 :デフォルトの名無しさん:2010/02/07(日) 00:26:41
うちMacなんでAqua LaFのしか見当たらないんだけど、
com/apple/laf/resources/aqua.properties (他数言語)に
OptionPane.yesButtonText=Yes
OptionPane.okButtonText=OK
などと書いてあるなあ。


156 :デフォルトの名無しさん:2010/02/07(日) 00:32:52
javax.swing.UIManager.getString(キー)
で取れそう。

ところで、
ttp://sites.google.com/site/shin1ogawa/java/swing/joptionpane-default-focus
なんて見つけた。


157 :デフォルトの名無しさん:2010/02/07(日) 01:28:10
>>154
"OptionPane.yesButtonText"
"OptionPane.noButtonText"
"OptionPane.cancelButtonText"
"OptionPane.okButtonText"
これらをキーにして UIManager.getString(String) を使う。
ロケールも指定すれば、各国語にローカライズされたテキストも取れる。
UIManager.getString("OptionPane.cancelButtonText", Locale.ENGLISH)
は "Cancel" を返す。

158 :デフォルトの名無しさん:2010/02/07(日) 11:03:35
JPopupMenuにたくさんのメニュー項目を入れると、メニュー項目が画面の縦幅に入りきらなくなります。
自動的に上下にスクロールとか、2列にするとかの仕組みはありませんでしょうか。


159 :デフォルトの名無しさん:2010/02/07(日) 11:51:22
>>158
こんなの見つけた。動作は見てない。
http://www.beginner-java-tutorial.com/scrollable-jpopupmenu.html

160 :デフォルトの名無しさん:2010/02/07(日) 15:17:17
マカってホント情報弱者だな。

161 :デフォルトの名無しさん:2010/02/07(日) 15:41:54
>>160
どこの誤爆?


162 :デフォルトの名無しさん:2010/02/07(日) 18:34:50
>>155-157
ありがそうございます ^^

163 :デフォルトの名無しさん:2010/02/07(日) 18:38:02
AWTUtilities#setWindowOpacity()
で透明度を設定すると、3回に1回くらい一瞬だけ真っ黒になるのだけれど、これはグラフィック性能がクソだからなのでしょうか?

164 :デフォルトの名無しさん:2010/02/07(日) 19:16:28
>>161
たぶん、PCニュース板あたりじゃない?
あそこではMacを、>>160みたいに馬鹿にしているし

165 :デフォルトの名無しさん:2010/02/08(月) 00:32:54
XP しか使ってないんだけど Windows Look and Feel って Vista や 7 だと違うの?

166 :デフォルトの名無しさん:2010/02/08(月) 14:26:22
マカってホントに情報弱者だな。

167 :デフォルトの名無しさん:2010/02/10(水) 10:32:30
JTableでセルごとに色を変えたいのですが、
どのように処理すればいいのでしょうか?
行ごと、列ごとは出来ましたが、
各セルごとができません。
ご存知の方がおられましたら、
ご教示していただけませんでしょうか?

168 :デフォルトの名無しさん:2010/02/10(水) 10:43:53
CellRendererじゃねーの?


169 :デフォルトの名無しさん:2010/02/10(水) 10:45:50
もっとちゃんとご教示していただけませんでしょうか?

170 :デフォルトの名無しさん:2010/02/10(水) 11:05:04
釣りか

171 :デフォルトの名無しさん:2010/02/10(水) 11:09:54
分からないなら答えなくても結構ですよ

172 :デフォルトの名無しさん:2010/02/10(水) 11:13:00
http://java.sun.com/docs/books/tutorial/uiswing/components/table.html#renderer

ColorRenderer というクラスがあるから見てみ。


173 :デフォルトの名無しさん:2010/02/10(水) 11:36:45
DefaultTableCellRenderer のサブクラスを作り、getTableCellRenderComponent() (だったかな?) を
オーバーライドし、スーパークラスの同名メソッドを読んだあと this

めんどくせ

174 :デフォルトの名無しさん:2010/02/10(水) 12:07:42
C#にするからもういいや

175 :デフォルトの名無しさん:2010/02/10(水) 15:46:45
>>170
このスレ、質問者になりすまして回答してる人がいるね。

176 :デフォルトの名無しさん:2010/02/10(水) 15:51:16
この板ではよくあること

177 :デフォルトの名無しさん:2010/02/10(水) 21:46:58
というか最近さらに増えた。
ニートが増えたんだろうな

178 :デフォルトの名無しさん:2010/02/10(水) 21:55:21
今日はニートの日だったな。


179 :デフォルトの名無しさん:2010/02/10(水) 22:27:48
卒論提出前の学部生だと予想。

180 :デフォルトの名無しさん:2010/02/11(木) 09:43:02
GUI部分をnetbeansのGUIエディタで作成して,それ以外はjrubyで作る
みたいなことを簡単にできる方法ってありますか?


181 :デフォルトの名無しさん:2010/02/11(木) 09:46:28
イベントリスナで jruby 呼べば良いだけじゃん。
そういうフレームワークちょいちょいと作れば?

182 :デフォルトの名無しさん:2010/02/11(木) 14:21:03
SwingのEDTでスクリプトの実行って実行モデル的にどうなの?
リスナ上でやるには十分遅い処理じゃね?

183 :デフォルトの名無しさん:2010/02/11(木) 21:52:10
そんな重い処理ならスクリプトなんか使うなよ。

184 :デフォルトの名無しさん:2010/02/12(金) 03:11:41
ruby廚は巣に帰れよ。

http://pc12.2ch.net/test/read.cgi/tech/1264635554/
Ruby 初心者スレッド Part 34
http://pc12.2ch.net/test/read.cgi/tech/1265467681/
Rubyについて Part 39
http://pc12.2ch.net/test/read.cgi/tech/1200175247/
Rubyの宿題教えてください。2限目
http://pc12.2ch.net/test/read.cgi/tech/1233033091/
愛国Ruby
http://pc12.2ch.net/test/read.cgi/tech/1201603546/
魁け! Ruby 1.9.X
http://pc12.2ch.net/test/read.cgi/tech/1249737531/
Rubyについて(アンチ専用) Part004
http://pc12.2ch.net/test/read.cgi/tech/1155031689/
【ActiveScript】RubyをWindowsで使うスレ【GUI】
http://pc12.2ch.net/test/read.cgi/tech/1170047838/
Ruby最高や!
http://pc12.2ch.net/test/read.cgi/tech/1100563765/
Jython、Groovy、JRuby - どれが一番効率的?

185 :デフォルトの名無しさん:2010/02/18(木) 12:58:02
で、おまいら GUI コンポーネント組み立てて行く時は上位の JPanel あたりから組み立てる派か
末端の JButton, JTextField あたりから組み立てる派かどっちよ?

186 :デフォルトの名無しさん:2010/02/18(木) 15:03:13
iTextの質問ってここでよい?

187 :デフォルトの名無しさん:2010/02/20(土) 11:12:02
iTextの質問ってここでよい? age

188 :デフォルトの名無しさん:2010/02/20(土) 11:38:01
質問うp

189 :デフォルトの名無しさん:2010/02/20(土) 21:18:02
Swing アプリ使ってるとたまに再描画がクソ重くなるんで調べてたら、ときどき
javax.swing.RepaintManager.currentManager(myframe).getVolatileOffscreenBuffer(myframe, 16,16).getCapabilities(null).isAccelerated()
これが false になってるのがわかりました。起動直後は true で、サクサク動きます。

これを防ぐ方法は無いでしょうか?

javax.swing.RepaintManager.currentManager(myframe).getVolatileOffscreenBuffer(myframe, 16,16).setAccelerationPriority(1.0f)
としてみましたが、やっぱりしばらく使ってると同じ状態になってしまいました。

環境は以下のとおりです。
Java 6u18
Windows XP 32bit
NVIDIA GeForce Go 6600 VRAM 128 MB

190 :デフォルトの名無しさん:2010/02/20(土) 22:53:51
SwingかJava2Dの使い方間違えてるかVRAMのデータが使えない状態にあるんだろう。
とりあえずjavaのオプションからDirectXとOpenGLのバージョンとソースすべてうp。

191 :デフォルトの名無しさん:2010/02/20(土) 23:46:18
>>190
問題のアプリは主に jEdit (http://www.jedit.org) です。
V2C でも似たような問題があるようですが、実行中に問題が発生するというわけじゃなさそうです。
http://v2c.s50.xrea.com/manual/win.html#problem

DirectX のバージョンは 9.0c です。

javaw.exe 起動時に -Dsun.java2d.opengl=true すればこの問題は起こらないんですが、
ときどき他のウィンドウと干渉してゴミが表示されたりします。これを回避するために
できれば OpenGL は使わないで済ませたいのですが、方法が見つからない状態です。

192 :デフォルトの名無しさん:2010/02/21(日) 15:30:51
ソフト使うだけは板違い。

193 :デフォルトの名無しさん:2010/02/21(日) 18:16:58
>>189
これ?
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6921654
取り敢えず他のオプションも試してみれば。
http://www.ea.u-tokai.ac.jp/~sakata/jdk6/docs/ja/technotes/guides/2d/flags.html

OpenGLはOpenGLで問題あるみたいだけど。
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6723523
とか。

何にしてもスレ違いですね。

194 :デフォルトの名無しさん:2010/02/23(火) 00:20:02
>>193
ありがとうございます。

リンクしていただいたバグは VRAM 上のイメージとメインメモリ上のイメージとで
動作が異なると言うことで、速度低下だけが問題になっている >189 の問題とは違うもの
みたいです。

translaccel と ddforcevram がそれっぽいなぁと思って試してみたんですが、やっぱり
しばらく使ってると問題が発生してしまいました。

ソースコードに問題があるのなら修正に挑戦する気はあるのですが、再現させる手段が
さっぱりなのでどこに手を付けていいものかさっぱりな状態です。

他に同じ症状の情報が見当たらないので、やっぱり環境に大きく依存する問題なのかも
しれません。

195 :デフォルトの名無しさん:2010/02/23(火) 12:33:28
beansbinding\u306eObservableListImpl.fireElementChanged(int)
ってどこからも呼ばれないの?

196 :デフォルトの名無しさん:2010/02/23(火) 12:35:00
修正
beansbinding の org.jdesktop.observablecollections.ObservableCollections.ObservableListImpl.fireElementChanged(int)

197 :デフォルトの名無しさん:2010/02/23(火) 20:15:56
PCの構成とドライバのバージョンうp

198 :デフォルトの名無しさん:2010/02/28(日) 04:50:07
まじでおまえらSwingで何つくってんだ?
ゲームのマップエディタ適当にSwingで適当につくろうとして久々触ったけど
相変わらず糞だなぁ、、いつまともになるんだろこれ。。

199 :デフォルトの名無しさん:2010/02/28(日) 06:00:24
どこが糞なのか何がまともなのか理想を語りたいらしい。

200 :デフォルトの名無しさん:2010/02/28(日) 06:27:00
こんな夜中に語りだすのか?…

201 :デフォルトの名無しさん:2010/02/28(日) 09:15:14
糞なら使うなよ
適正な言語も選べないのか

202 :デフォルトの名無しさん:2010/02/28(日) 21:58:51
マップエディタの実装が糞なだけでswing関係なかったりしてw
cとかで組めるならjni使えばいい話し出し。

203 :デフォルトの名無しさん:2010/02/28(日) 22:43:23
ここでjni出してくるのはどうかと思う

204 :デフォルトの名無しさん:2010/03/03(水) 02:33:21
javaからwin32apiは使えないからな。

205 :デフォルトの名無しさん:2010/03/03(水) 03:32:54
つかえまsが

206 :デフォルトの名無しさん:2010/03/03(水) 04:57:50
Swing に対する唯一の不満は、Win32 用の L&F が
ネイティブのそれと微妙に違っててイラっとすることくらいなんだけど
操作感覚にダイレクトに突き刺さってくるので困る。

SWT の作りは大嫌いだし(いまどきイベントループとか)
全般的な命名も好きになれないし(Shell って名前をアレに使うなよ)
体感速度に差があるとも思えないんだけど、
この部分だけが引っかかってしまう。

自分で作るんなら Swing なんだが
使うんだったら SWT みたいな。

207 :デフォルトの名無しさん:2010/03/03(水) 11:35:13
そういうヲレクラス作ればいいだけじゃ?

208 :デフォルトの名無しさん:2010/03/03(水) 13:39:34
J/DirectなんてJ#にすら見捨てられたよな

209 :デフォルトの名無しさん:2010/03/03(水) 14:01:08
Browser と半透明ウィンドウのためだけに SWT 使うとる。

210 :デフォルトの名無しさん:2010/03/03(水) 22:19:17
AWTUtilだっけ?あれとJDICでよくね?

211 :デフォルトの名無しさん:2010/03/03(水) 23:08:39
JWebPaneってどうなったん? WebKitつかってるとかいう

212 :デフォルトの名無しさん:2010/03/04(木) 02:13:19
SwingWTという、SWTをSwing APIでラップしたものがある。
http://swingwt.sourceforge.net/
2005年頃に使ったときは、微妙な互換性不足が残念だった覚えがあるが、
今ならよくなってるかもしれない。試してみたら?

213 :デフォルトの名無しさん:2010/03/05(金) 17:08:54
>>206
いまどきイベントループ、って
どんな言語でもイベントループなんじゃないの?

214 :デフォルトの名無しさん:2010/03/05(金) 19:11:48
たしかにイベントループを表に出していない Swing の方が異端だな。

215 :デフォルトの名無しさん:2010/03/06(土) 09:11:25
どうもイベント廻りの挙動がおかしいと調べてみたら呼び出し先のライブラリで
イベントループしてました、なんて事にさっきまでハマってたところ。
元々イベントループなんざシングルタスク言語やノンプリエンプティブな環境向けの手法だお。
Java のようなマルチスレッド環境では使わないに越したことはない。green thread 時代に
yield() 駆使してた悪夢がよみがえる。

216 :デフォルトの名無しさん:2010/03/06(土) 21:58:42
最近、日曜プログラムでSwing始めました。
仕事ではCOBOLとかC言語が多かったのでJavaはかじった程度の知識しかありません。

ところで、コンポーネントのリスナークラスとか追加するときって、無名クラス使うのが
一般的なんですか?(本とか読むとそれが多いと書いてあったので)

個人的には画面系のプログラムも作ったこともなかったので、よく分からないんですが、
コンポーネントの生成や属性の設定の中に、ロジックが入ってくる様に思えて
なんか違和感を感じるんで、今は無意味でもクラスに名前を書いて内部クラスにしてます。

でも、無名内部クラスにするが一般的なら、それになれとかないとなぁと思い質問しました。

217 :デフォルトの名無しさん:2010/03/06(土) 22:03:15
画面系を作ったこともないんですよね?
どういう違和感を感じるんですか。

218 :デフォルトの名無しさん:2010/03/06(土) 22:07:05
>>216
アプリケーションと画面を同一クラスとして作っていると
そんな感じになってしまうかもしれない。


219 :デフォルトの名無しさん:2010/03/06(土) 22:13:36
>>217
ちゃんと勉強するとなるとかなり大変なんで初心者・初級者用のgui教本は全てそんなもんですよ。
分離しようとすると結局コード量が多くなるんでもしちゃんとguiやるならIDEないと無理でしょうね。

220 :デフォルトの名無しさん:2010/03/06(土) 22:14:45
>>216ね。

221 :デフォルトの名無しさん:2010/03/06(土) 22:40:14
>>216
分かりやすい・自然だと思う方を採用したらいいんじゃないでしょうか。
無名クラスの場合は引数以外に定義された環境の情報にアクセスできるメリットと、
切り分けても命名に困る(〜ボタン押したときの処理、以上の名前が思いつかない)
ことが多数なので、私自身は無名クラスで書くことが多いです。

良い名前が思いつかないのであれば、多分分けるべきじゃないと思いますよ。

222 :デフォルトの名無しさん:2010/03/07(日) 00:10:01
javaのjTextAreaから日本語文字を[ctrl+c]でコピーして
テラパッドなどのテキストエディタに[ctrl+v]でペーストした時に
日本語が文字化けしてしまいます。防ぐ方法はありますか。
【Java】 1.6.0_17-b04 (Sun Microsystems Inc.)
【OS】 Windows XP 5.1 (x86)

223 :デフォルトの名無しさん:2010/03/07(日) 01:00:27
http://pc12.2ch.net/test/read.cgi/tech/1236529563/
文字コード総合スレ part5
http://pc12.2ch.net/test/read.cgi/tech/1153008301/
こんなエディタ・統合開発環境はいやだ  2種類目

224 :222:2010/03/07(日) 01:10:43
>>223 はは、文字コードスレにいってみます。

225 :216:2010/03/07(日) 03:16:14
>>217、218、219、221 コメント有難うございます。

コンポーネントを作る際、例えば以下の様なものがあるとするじゃないですか。
1.btnS11 = new JButton("Save");
2.btnS11.setFont(new Font("Monospace",Font.BOLD,14));
3.btnS11.addActionListener(new ActionListener {public void actionPerformed(ActionEvent e) {Saveロジック(処理)}})
4.pnl1.add(btnS11);
ってな順になるのかと思いますが、それをコンポーネント分繰り返して
「1.生成2.属性設定3.ロジック4.貼付 1.生成2.属性設定3.ロジック4.貼付…」
みたいな感じで書いてます。
「1、2、4」は画面の見栄えの部分で、「3」はリスナーを追加する行為は画面の見栄え
リスナークラス内は「ロジック」になって、画面定義とロジックが混ざる感覚になる。
「リスナーを有名の他クラスにして、外に飛ばしてやれば、それが除外されるので画面定義だけの部分になってくれる。」
ので、しっくり感が出てます。
(なんか説明、へただなぁ…。)

226 :216:2010/03/07(日) 03:44:09
>>221
221さんが行っているメリットは、無名クラスではなく、内部クラスのメリットだと思います。
一応、外だしの有名クラスにするときも、元のクラスの内部クラスにはして、フィールドとか
までは、利用してます。

結局、無名クラスの場合のメリットとしては
「べつにクラス化しても、結局一ヶ所しかから呼ばれないから意味ない」
「そんなクラスにわざわざ名前つけるのもバカらしい」
「コード見るときに、あっち行ったりこっち行ったりするのも分かりにくい」
のでまとめて書く。ってことかなと思ってます。
(無名クラスの場合のメリットというよりか、外だしにしたクラスのデメリットですが…)

>良い名前が思いつかないのであれば、多分分けるべきじゃないと思いますよ。
命名規則を何となく決めて置けば、まぁ、なんとかしのげます。
MyBtnS11ActionAdapter 見たいなこのボタンのこのリスナーってなクラス名にしてます。
(よい名前かは置いといて…、ってか、BtnS11って、命名なんやねんってツッコミ入りそうですけど)

227 :デフォルトの名無しさん:2010/03/07(日) 03:53:58
先ずはguiアプリを実際に作ってから半年後にまた考えてみても遅くないでしょうね。

228 :デフォルトの名無しさん:2010/03/07(日) 08:42:33
>>216
ビジネスロジックは別クラスに実装して、
無名リスナーはUIとビジネスロジックのアダプタとして実装している。
こんな感じ。

JButton b1 = new JButton("OK"):
b1.addActionListener(new ActionListener(){
  getSomeLogic().doLogic();
});

getHogeLogic()とdoLogic()の中身は想像で補ってくれ。

ビジネスロジックは、UIと粗結合であるべき、フレームワーク非依存であるべき、
というのが信条なので、SwingのAPIが混ざったクラスにビジネスロジックを書きたくない。
イベント処理にXXXListenerが必要というのはSwingの都合でしかないので、
そういう事情はSwingのUIクラスの中だけで隠蔽したい。

以上のような理由から、上記の作り方をしている。

次の課題として、UIオブジェクトとビジネスロジックオブジェクトのバインディングについて
考える必要があるけど、
そこは、ハードコーディングするなり、上位のオブジェクトからsetしてもらうなり、
DIコンテナでインジェクションするなり、好きな方法をどうぞ。
お薦めはDIコンテナだが、不慣れなら他の方法でもいい。

229 :228:2010/03/07(日) 08:44:34
ぐあぁコード間違えた。こうだ。
JButton b1 = new JButton("OK"):
b1.addActionListener(new ActionListener(){
 public void actionPerformed(ActionEvent e){
  getSomeLogic().doLogic();
 }
});

230 :デフォルトの名無しさん:2010/03/07(日) 15:49:11
>無名クラスではなく、内部クラスのメリットだと思います。
書いててそう思ったんですが、まあ多分通じると思ってそのままに・・

コンポーネント名+イベント名 な命名しか思いつかない場合、
自分だったら無名内部クラスで片付けてますね。
でもまあその辺りは個人の感覚次第で
何が正しいってわけでもないはず。
(特この件にかんしては明確にどっちが優劣ってのはない。)

「そういう書き方もある」ことを抑えてて、
そういうコード見て面食らう事がないのであれば
別にどっちで書いてもいいと思うんですよ。
vi も Emacs も優れたエディタなんです。

231 :216:2010/03/07(日) 18:05:59
あぁぁぁぁ。(なんか自分に腹立ってます)

>>230
自分が無知なので広く意見を伺いたく質問したつもりなのに
変な噛みつき方してすみませんでした。

コメント有難うございました。

232 :デフォルトの名無しさん:2010/03/07(日) 20:35:15
>>226
>良い名前が思いつかないのであれば、多分分けるべきじゃないと思いますよ。
は、名前が思いつくようなクラスは再利用性があるクラスだから、
「名前が思いつくかどうか」自体が、内部クラスにするかどうかの
そこそこ良い基準になるということを言ったんだと思った。

ちょっと思っただけ。

233 :デフォルトの名無しさん:2010/03/07(日) 21:44:27
やってれば分かるが普通は>>228にいきつく。今のswingはここらで止まってる。

234 :デフォルトの名無しさん:2010/03/08(月) 08:32:25
>>233
>>228でもいいんだけど、コンポーネントに直接ActionListenerをaddするんじゃなくて、
Action作って使いまわしたほうがマシだと思う。
ひとつのActionを複数のコンポーネントやキーに割り当てたいときとか。

235 :デフォルトの名無しさん:2010/03/08(月) 23:48:19
サーバサイドしかやったことないと思しき某外資系ITゼネコンのアフォSEが
JAR ファイルの中見て無名内部クラス使いすぎ云々 (品質悪い) と因縁
付けて来た事があったなー。

236 :デフォルトの名無しさん:2010/03/08(月) 23:52:36
サーバーサイドやっているとね

237 :デフォルトの名無しさん:2010/03/09(火) 00:04:28
そんなゼネコンと仕事してる時点で質が低いからどうでもいいな。
金が欲しいなら言う事聞くしかないだろ?

238 :デフォルトの名無しさん:2010/03/09(火) 00:10:36
自分ところが下請けだから下請け前提で読んじゃったんだね君。

239 :デフォルトの名無しさん:2010/03/09(火) 00:57:47
> ひとつのActionを複数のコンポーネントやキーに割り当てたいときとか。
さすがにそのくらいはやってんじゃなかろうか。
同じことを何度も書くのはそもそもアレだし。

240 :デフォルトの名無しさん:2010/03/09(火) 15:05:42
ダイアログ表示中に任意のキー押下で任意のアクションを呼び出す方法はあるでしょうか?

241 :デフォルトの名無しさん:2010/03/09(火) 16:43:51
もしかしてモーダルなダイアログの話?

242 :デフォルトの名無しさん:2010/03/09(火) 17:46:22
>>241
そうです。
エラーが発生してダイアログを出すときに、スタック情報を適当なpublic static にコピーしておいて、
ダイアログ表示中に隠し機能としてF5を押すと、
コピーしておいたスタック情報をクリップボードに張り付けるということがしたいです。

客から問い合わせがあったときに、簡単に対応したいので。

243 :デフォルトの名無しさん:2010/03/09(火) 18:11:22
InputMapとActionMap使ったら簡単なんじゃない?
JDialog dialog = new JDialog();
dialog.setModal(true);
dialog.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
JPanel pn = (JPanel)dialog.getContentPane();

pn.getActionMap().put("hoge", new AbstractAction() {

@Override
public void actionPerformed(ActionEvent e) {
System.out.println(e);
}
});
pn.getInputMap().put(KeyStroke.getKeyStroke("F5"), "hoge");

dialog.setVisible(true);

244 :デフォルトの名無しさん:2010/03/09(火) 19:35:53
>>243
ありがとうございます。

JOptionPane.getRootFrame()から何とかしてアクションマップを登録して、
JOptionPane.showMessageDialog(…);することはできないでしょうか?

245 :デフォルトの名無しさん:2010/03/09(火) 19:39:58
JOptionPane の API リファレンスにユーティリティメソッド使わないで
JDialog 参照する方法が載ってるだろう。

246 :デフォルトの名無しさん:2010/03/10(水) 15:44:20
>>245
JOptionPane.getRootFrame()から何とかして、って書いてあるから答えがかみ合ってないよ。
そんなことは知ってるけどもっと簡単な方法がないかってことだろ。

XXして
JOptionPane.getRootFrame()
で済む方法ってことでしょう。

要はその方法はないってのが正しい返しかな。

247 :デフォルトの名無しさん:2010/03/10(水) 18:55:30
超絶役に立たないレスだな。
だから JDialog 参照しろという話をしてるわけだが。

248 :デフォルトの名無しさん:2010/03/11(木) 09:06:33
強引なやり方としては
Toolkitを使って全てのイベントを監視する方法もある。
どのコンポーネントがフォーカスを持っていようと
F5が押されたらスタックトレースをダンプするようにもできると思う。


249 :デフォルトの名無しさん:2010/03/11(木) 11:01:19
Swingの画面を印刷するにはどうすればよいでしょうか?
ちなみに、スクロールで見えてない部分も含め印刷させることが出来るでしょうか?

WORDの差し込み印刷をSwingでやることになりまして…

250 :デフォルトの名無しさん:2010/03/11(木) 13:18:00
取ってもアフォな案件だなw
vbaをjavaから呼ぶcom作る輪

251 :デフォルトの名無しさん:2010/03/11(木) 14:29:22
俺vba苦手だから Apache POI に頼るー。
Apache POI だけはいつも俺の心のアニキ。

252 :デフォルトの名無しさん:2010/03/11(木) 16:34:54
XML で保存出来るのに今時 POI とかないわ。

253 :デフォルトの名無しさん:2010/03/11(木) 17:17:17
JEditorPane#getPrintableでRTF文書の印刷とか考えてるならやめとけー。
まずは簡単なWORD文書をディスプレイに描画させてみて、満足いく結果が得られるのか早期に検討すべし。

たぶん Aspose.Words for Java みたいな有料ライブラリが必要になるだろうよ。

>252
XMLなんか差し込み印刷したってしょうがないだろ

254 :デフォルトの名無しさん:2010/03/11(木) 17:25:41
>>253
Word XML (WordML) 形式の話をしてるんだが、まだ Office が XML で連携できてるって
気付いてない奴って多いんだよな。おまえみたいな。

255 :デフォルトの名無しさん:2010/03/11(木) 17:43:50
DB 舐めて Word ファイル作るだけにバカみたいな金払わされてる客がいたんで
(レイアウト変更等別料金)、検索結果の XML から XSL で Word ファイル作る
ツール作って XSL の書き方だけ教えてあげたらもの凄く喜ばれた。
んで別のデカい仕事貰った。

256 :デフォルトの名無しさん:2010/03/11(木) 17:53:46
>254
「Word XML (WordML) 形式の話をしてる」

「WORDの差し込み印刷をSwingでやる」の話じゃなかったんならオレが謝る。

257 :デフォルトの名無しさん:2010/03/11(木) 17:54:12
もしプロなら人の仕事を奪うのは良くないなと気づかないといけない

258 :デフォルトの名無しさん:2010/03/11(木) 17:57:02
>>256
Swing から Word XML 出力 & Desktop#print() が思い付かない時点でオhル

259 :デフォルトの名無しさん:2010/03/11(木) 18:08:24
>258

重ね重ね申し訳ない。
「Swingの画面を印刷するにはどうすればよい」の話じゃなかったんならオレが謝る。
「スクロールで見えてない部分も含め印刷させる」の話じゃなかったんならオレが謝る。

「Word XML 出力 & Desktop#print()」がSwingなのかスレ違いなのかはオレもよくしらん。

260 :デフォルトの名無しさん:2010/03/11(木) 18:12:01
バカは黙ってろよ

261 :デフォルトの名無しさん:2010/03/11(木) 18:18:44
逝ってよし

262 :デフォルトの名無しさん:2010/03/11(木) 18:19:39
ところで >249 氏はもしかするとWindowsユーザーなのだろうか

263 :デフォルトの名無しさん:2010/03/11(木) 18:32:57
Wordは最初っからどうでもいいんですが、
結局Swingの画面をjavaのコードだけで印刷って出来ないんですか?

デスクトップの機能を使ってなんとかできないですかね…

Wordの差し込み印刷はバージョンによって動作が違うし、Linuxじゃ動かないのでパスしたいんです。

264 :デフォルトの名無しさん:2010/03/11(木) 19:50:51
与えられた紙の隅から隅まで自分でお絵かきしたいなら「Java 2D API プログラマーズガイド」の7章を読む

既成コンポーネントやコンテナのprint()がどこまでまじめに印刷に対応してるかはレッツトライ

スクリーンキャプチャがしたいならjava.awt.Robotだ。

265 :デフォルトの名無しさん:2010/03/11(木) 22:13:33
awtでボタンを押すとFileDialogをsetVisible(true);するメソッドを呼び出すだけの
アプレットを作りました。

これをブラウザ(IE6)でHTMLから呼び出して、
ボタンを押してファイルダイアログを呼び出します。

この開いているファイルダイアログを放置して
呼び出し元のウィンドウをクリックすると
クリックするたびにコンソールに例外がモリモリ出ます。

↓こんなの
Exception occurred during event dispatching:

java.lang.NullPointerException: null pData
at sun.awt.windows.WComponentPeer._requestFocus(Native Method)
at sun.awt.windows.WComponentPeer.requestFocus(Unknown Source)
at java.awt.Component.requestFocusHelper(Unknown Source)

            以下略

これを出さないようにしたいのだけれど調べてもさっぱりわかりませぬ。
これってJavaのバグなのかな?
それとも何かしなきゃいけないことがあるのかな!
助けてエスパー!

266 :デフォルトの名無しさん:2010/03/11(木) 22:19:15
AWT のスッピン FileDialog なんて久しく使ってないから忘れた。

267 :265:2010/03/11(木) 22:24:17
ですよねー
ふるーいアプレットのシステムを
ポーティングするお仕事でこの問題が見つかったのですが
事象の起こし方もすごい簡単なのに
調べても調べてもちっとも出てこないので
泣きそうです

HTMLから呼び出すとモリモリなんだけど
アプレットビューワーから呼び出すと起きないのですよ

268 :デフォルトの名無しさん:2010/03/11(木) 22:35:44
"java.lang.…pData" でまんまググったら出たがこれじゃねーのか。
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6829326

269 :デフォルトの名無しさん:2010/03/11(木) 22:38:29
中身読んだら Java 7 でリサイズした時の話だった。失礼。

270 :デフォルトの名無しさん:2010/03/12(金) 09:19:25
>>265 を読んだ限りでは、どうもJRE自体のバグっぽいね。
あるいはブラウザとの相性が悪かったか。
実害がないなら放置していいんじゃないかな。


271 :デフォルトの名無しさん:2010/03/12(金) 15:25:24
Swing→RMIの通信をSwing→httpに変更しようと思っています。
RMIはもう使用したくないとのこどで、大幅改修はせずに移行したいとのことです。
まぁ、その辺は言いたいことはあるんですが、この不景気なもので来るもの拒まずです。工数が増える分には。

そこでまずRMIのインターフェースはあまり変えないということで、
メソッド呼び出しのリモートプロシージャの考え方を踏襲することに。

Swingにhttpクライアントを入れて"multipart/form-data"でデータを送信します。
データはRMIで使用した全ての引数でシリアライズした中身をファイルアップロードで送ります。
ポップ引数は2つで、リモートクラス名とメソッド名。シリアライズを解凍して(引数の配列)、
リモート側で(httpサーバ)メソッドインボークする感じです。

レスポンスは"text/plain"で、RMIの戻り値のシリアライズです。

このやり方はいかがなものでしょうか?
改善案や便利な方法があればお願いします。
落とし穴などもあれば。
Swing→httpは外せないってところでお願いしますm(__)m

272 :デフォルトの名無しさん:2010/03/12(金) 15:32:33
RMI-HTTP Tunneling というものがあってだな。
使ったことないけど。

273 :デフォルトの名無しさん:2010/03/12(金) 16:04:30
>>272
なんすかそれ

274 :デフォルトの名無しさん:2010/03/12(金) 16:30:26
中身はrmiのままなんだから、http通しても大差ないのにね。
まあ金貰えるなら言う通りに実装してやればおk。

275 :デフォルトの名無しさん:2010/03/12(金) 16:42:23
単に HTTP にすりゃ良いってだけなら (ファイアウォールでも通すのか?)
SOAP に置き換えりゃ良いんじゃねぇの。

276 :デフォルトの名無しさん:2010/03/12(金) 17:43:15
>>271
RMIとHTTPってレイヤが違うような…?


277 :デフォルトの名無しさん:2010/03/12(金) 22:02:48
RMIがいやだからHTTPにしたいって言うのが理解できないんだがまあそんなことはどうでもいい。
Swing関係なくね?

278 :デフォルトの名無しさん:2010/03/12(金) 22:04:22
RMI か HTTP かで心が Swing してんだろ。

279 :265:2010/03/13(土) 01:43:58
>>268-270
気にかけていただいてありがとうございます

例外の内容で調べて同じのは出てこなかったけど
「Defaultmodel.なdialogが云々でバグです!」
といったような内容のがBugDataBaseでボロボロ出てくるので
指定しなくてもモーダルだと主張しているFileDialogの
フォーカスの処理とブラウザから呼び出した際の相性に問題があるんだと思います。
(自分でmodalを指定するDialogだと同じ操作をしてもこの問題は起きません)

お客さんには事例を寄せ集めて
「我々のせいじゃないし、どうにもできないので勘弁していただきたい!」
と主張してみることにします。
ありがとうございました。

280 :デフォルトの名無しさん:2010/03/13(土) 04:32:08
他所に仕事取られる訳だな。物はいい用と思うけどね。せっかくのビジネスチャンスを(ry

281 :デフォルトの名無しさん:2010/03/14(日) 10:33:40
>>279は月曜日にクソッタレのフニャチンどもにこう言われるはずさ

そんな欠陥のある言語を選択したのはお前の会社のミスだろ?
それにJavaはオープンソースなんだろ?
中追ってお前のところで直せよ

そしたら>>279はExceptionを握りつぶしてこう言ってやるのさ
問題ありませんってね
HAHAHA

282 :デフォルトの名無しさん:2010/03/14(日) 10:39:45
おまえは書き込む前に一息置いて読み直す癖を付けろ。

283 :デフォルトの名無しさん:2010/03/15(月) 01:08:29
バグ混入させるぐらいなら、プログラマ辞めればいいのに。
明らかに向いてないというか、能力足りてないだろう。

284 :デフォルトの名無しさん:2010/03/15(月) 01:40:43
翻訳:極論振りかざすオレカコイイ!

285 :デフォルトの名無しさん:2010/03/15(月) 03:22:24
バグが混入しないと思ってる時点であほだな

286 :デフォルトの名無しさん:2010/03/15(月) 04:20:28
優秀なプログラマほどバグが少ない現実。
馬鹿にはプログラミングは向いてないよ。

287 :デフォルトの名無しさん:2010/03/15(月) 05:29:51
そう自分を責めるな

288 :デフォルトの名無しさん:2010/03/15(月) 07:44:34
たとえ4秒に1回落ちてもフロントエンドに影響が無いように作れってぐぐるの中の人が言ってた!!(違

289 :デフォルトの名無しさん:2010/03/15(月) 11:22:12
>>286
いくら優秀でもバグがゼロにはならない。
>>283に従うと、バグを混入させるプログラマは辞めなければならない。
したがって、最終的には全てのプログラマは辞めなければならない。

290 :デフォルトの名無しさん:2010/03/15(月) 11:49:36
>>283はエンドユーザーだろ

291 :デフォルトの名無しさん:2010/03/15(月) 14:37:43
ユーザとして使ってるとバグが出るのってホント頭に来るのは事実。
作った香具師出てこいよ。

292 :デフォルトの名無しさん:2010/03/15(月) 15:05:30
>>291
マ板へどうぞ。

293 :デフォルトの名無しさん:2010/03/16(火) 20:53:14
やだよ。
あいつら池袋のヤベェ工房から買ったヤニでトんでんだもん。

どうでもいいけど、池袋に溜まってる工房ってだいたい病気持ってるよなw
まじ怖いわw
街中で堂々とコンジローマ自慢してんじゃねえよwくせえw

294 :デフォルトの名無しさん:2010/03/17(水) 12:17:56
いやだから池袋のヤベェ工房から買ったヤニでトんでる香具師が作ってんだって。

295 :デフォルトの名無しさん:2010/03/17(水) 19:28:45
でも池袋のガキどもは、本当にヤバい事する時は隠れてやるんじゃね?
そういう現場を生で見たことないし。
だからまだいい方。

三軒茶屋あたりでうろついてるのは、本当にどうにかしてほしい。
あそこは深夜になるとリアル北斗。

296 :デフォルトの名無しさん:2010/03/17(水) 19:34:13
>>295
マ板でどうぞ。

297 :デフォルトの名無しさん:2010/03/20(土) 11:10:39
>>294
いまどき香具師って……

298 :デフォルトの名無しさん:2010/03/20(土) 12:11:20
>>297
たまに使っている人いるよな
死語だけど

299 :デフォルトの名無しさん:2010/03/20(土) 12:15:45
>>298
元ネタがネットじゃなくて小説だからかな

300 :デフォルトの名無しさん:2010/03/20(土) 20:38:53
池袋といったらダラーズだよな

301 :デフォルトの名無しさん:2010/03/20(土) 20:45:23
デュラララカ

302 :デフォルトの名無しさん:2010/03/21(日) 04:54:29
あらららぎさん

303 :デフォルトの名無しさん:2010/03/23(火) 09:47:31
Swingで、ドラッグ中のキー入力を取得するにはどうしたらいいでしょうか。
JDesktopPaneを使っていて、JInternalFrame間のDnD中に、アクティブなフレームを
切り替えたいと思っています。
Windowsプラットフォームだと、CTRL-F6で内部フレームが切り替わりますが、
ドラッグ中だと切り替わりません。

304 :デフォルトの名無しさん:2010/03/23(火) 10:40:52
>>303
まずそのUI設計をやめたら?

305 :デフォルトの名無しさん:2010/03/23(火) 14:31:09
DnD中にアクティブなウィンドウを切り替える意味は何?


306 :デフォルトの名無しさん:2010/03/23(火) 14:36:29
下にあるフレームを上に持って来たいんだろ。

307 :デフォルトの名無しさん:2010/03/23(火) 18:15:39
マウスリリースされたときにlafが勝手にやってくれる動作じゃダメなのか

308 :デフォルトの名無しさん:2010/03/23(火) 19:00:18
>>303
ExplorerやNautilusのように、ウインドウ内のドロップ対象で動作が変わるのですが、
そのような作りは一般的ではないのでしょうか。
ドロップ元とドロップ先が完全に見える状態にウインドウを並べてドラッグ&ドロップするのでしょうか。
それとも、CLIしか使わないのでわからない、ということでしょうか。

>>305
Windows Explorerでファイルドラッグ開始
→ALT+TABでドラッグ対象ウインドウの非表示部を表に出す
→隠れていた部分のアイコンにドロップ
みたいなことです。

>>307
ドロップされる位置によって動作が変わります。


309 :デフォルトの名無しさん:2010/03/23(火) 21:13:11
つ nlink

310 :デフォルトの名無しさん:2010/03/23(火) 22:59:06
Macでもドラッグ中にExposeとかSpacesを使えるけど
あれと似たような感じなのかな。


311 :デフォルトの名無しさん:2010/03/24(水) 00:14:11
マカって情報弱者だな。

312 :デフォルトの名無しさん:2010/03/24(水) 00:17:43
おまえってボットなの?

313 :デフォルトの名無しさん:2010/03/24(水) 00:40:02
九分九厘そうだろう。


314 :デフォルトの名無しさん:2010/03/24(水) 00:44:35
Mac 使ってるけど
これで来るわけ?


315 :デフォルトの名無しさん:2010/03/24(水) 01:14:11
マカって情報弱者だな。

316 :デフォルトの名無しさん:2010/03/24(水) 01:24:17
goto 311;


317 :デフォルトの名無しさん:2010/03/24(水) 01:27:56
きっちり一時間で巡回してんのかw

318 :デフォルトの名無しさん:2010/03/24(水) 02:14:30
呪文を唱えるとボットが召喚できると聞いてry

マックって旨いよな!

319 :デフォルトの名無しさん:2010/03/24(水) 03:14:11
マカって情報弱者だな。

320 :デフォルトの名無しさん:2010/03/24(水) 09:05:11
>>319
分秒合わせてくるとか、何コレコワイwwwww

321 :デフォルトの名無しさん:2010/03/24(水) 11:45:52
こいつ自作板にも出るし何年も前からpc11鯖に寄生してるボットだろ

322 :デフォルトの名無しさん:2010/03/24(水) 14:50:56
eclipseのプラグインで使いやすいお勧めのSwingサポートプラグインはVisual Swing for Eclipseになるでしょうか?

323 :デフォルトの名無しさん:2010/03/25(木) 11:27:37
Swing Application Frameworkってどう思います?

324 :デフォルトの名無しさん:2010/03/25(木) 11:34:09
ok

325 :デフォルトの名無しさん:2010/03/25(木) 11:44:49
>>323
フレームワークというかライブラリ?

326 :デフォルトの名無しさん:2010/03/25(木) 11:51:42
>>322
Visual Swing for Eclipse かな

327 :デフォルトの名無しさん:2010/03/25(木) 13:25:28
いや Visual Swing for Eclipse でしょ。

328 :デフォルトの名無しさん:2010/03/25(木) 14:03:10
JDK1.5で画面をデフォルトプリンタで印刷したいんですけど、print()の引数のGraphicsってどうやって取得すればいいのでしょうか?
というか、swingの印刷のサイトがなさ過ぎ…
あまりやんないんですかね

329 :デフォルトの名無しさん:2010/03/25(木) 14:45:01
>>323
netbeans platformでおk
まあこっちはミドルウェアに近いが。
たとえばなんだろうか、専ブラの類の規模を作ろうとするとApp Frameworkでは物足りない。

もとからSwing初学者がjavaの流儀でGUI作るのを容易にする目的のものだからね。
それがJava 5のEoDの一環でJDKに含まれるようになるだけだから。

#俺はTiming Framework入れて欲しい。Swing Labsの成果はもっと取り込んでいいと思う。

330 :デフォルトの名無しさん:2010/03/25(木) 18:46:04
swingにフレームワークはいらんだろう

331 :デフォルトの名無しさん:2010/03/25(木) 18:49:37
Swing 自体がフレームワークじゃねぇの。
あと自分とこの要件向けにドメインフレームワーク作るだけだろ。

332 :デフォルトの名無しさん:2010/03/25(木) 18:52:46
>>331
ドメインフレームワーク?

333 :デフォルトの名無しさん:2010/03/25(木) 21:52:33
SwingはToolKit

334 :デフォルトの名無しさん:2010/03/26(金) 00:41:08
ホント、マジで教えて欲しいんだが、
おまいらSwingで何つくってんだ?

ゲームのマップエディタつくったんだが、遅くて、見た目もイビツで
恥ずかしくて公開できやしない。

335 :デフォルトの名無しさん:2010/03/26(金) 01:00:44
>>334
それ Swing のせいなの?

336 :デフォルトの名無しさん:2010/03/26(金) 02:24:50
センスが無いと何やっても駄目な典型。

337 :デフォルトの名無しさん:2010/03/26(金) 04:36:59
速い言語で作ったら今度は Segmentation Violation が出まくりの糞言語とか言ってそう。

338 :デフォルトの名無しさん:2010/03/26(金) 10:27:46
テキストボックス入力中に、ボックス直下に入力でマッチした候補をインクリメンタルで表示する部品はあるでしょうか?
googleの入力補てんみたいなものです。
自作の必要あり?

339 :デフォルトの名無しさん:2010/03/26(金) 10:45:21
>>338
標準にはない。

原理的にはコンボボックスのエディターが持っているテキストが変更
されるたびに、その時点のテキストに応じてモデルが返す候補一覧を
変化させればよい。

例(ソース付き): http://terai.xrea.jp/Swing/ComboBoxSuggestion.html


340 :デフォルトの名無しさん:2010/03/26(金) 13:24:56
>>334
Swing以外で、サクサクで見た目も良いツールつくれるなら、そっち使えば良い。
無能ほど他人のせいにしたがる。
しかも無能は自分の無能さに気づく能力も無い。

341 :デフォルトの名無しさん:2010/03/26(金) 22:37:45
>>334
オープンソースにして公開すれば、
誰かが高速描画仕様に修正してくれるんじゃないかな。
ここには有能な人も多いみたいだし。
俺は嫌だけどね。

342 :デフォルトの名無しさん:2010/03/27(土) 04:10:43
価値有るものじゃないと弄る気にも成らないけどな。
金払ってプログラマに拘束化してもらうのが確実。

343 :デフォルトの名無しさん:2010/03/27(土) 07:36:53
他人を無能呼ばわりする奴が、
どの程度描画を高速化できるのか興味あるね。
さぞかし有能なコードを書いてくれるんだろうよ。
まずはソースをうぷだ。

344 :デフォルトの名無しさん:2010/03/27(土) 09:19:03
俺は、この前このスレじゃないがソースうpしたけど、
ソースについて何の評価も貰えなかった・・・

そんな俺は腐ったミカンですか?

345 :デフォルトの名無しさん:2010/03/27(土) 09:21:54
2ch ではマジレス・ソースうpするとまともにコメントつかないのが常識

346 :デフォルトの名無しさん:2010/03/27(土) 09:27:07
ヒットアンドアウェーの チンカス ばっかだしな。

347 :デフォルトの名無しさん:2010/03/27(土) 10:29:57
ソースをうぷったのにコメントを戴くことができなかった7つの理由

1.閲覧者のレベルが低かった
2.閲覧者の得意分野が違っていた(学校、仕事、趣味、ゲームetc.)
3.問題のある部分は見当たらなかった
4.ソースが巨大すぎて読む気が失せる
5.あまりにも低レベルすぎて指摘のしようがない
6.誰も見てくれなかった
7.その他

>>344
もう1度ここでうぷってみたら?有能者が応えてくれるんじゃないの

348 :デフォルトの名無しさん:2010/03/27(土) 10:59:18
有能な人のソースを見てみたい
凄く速いのかな

349 :デフォルトの名無しさん:2010/03/27(土) 11:03:42
宿題スレでお礼がくると
あぁネタだったんだなぁ
と思ってしまう

350 :デフォルトの名無しさん:2010/03/27(土) 11:16:44
>>347
1、3、4、6はありえないと思う。
5は、そこまでひどくないとは信じたい

JAVAの勉強で作ったゲームなんだけど・・・
何度も晒すのは、ちょっと気が引ける・・・
ゲームは、まぁまぁおもしろいとは言ってくれたけど

351 :デフォルトの名無しさん:2010/03/27(土) 11:25:43
まずはソースをうぷだ
話はそれからだ

352 :デフォルトの名無しさん:2010/03/27(土) 11:25:53
あえて本気を出さないソースがうけるのか

353 :デフォルトの名無しさん:2010/03/27(土) 11:46:16
これがうpしたゲームだけど・・・
http://toku.xdisc.net/cgi/up/qqq/nm22064.zip

かなり不器用な処理してると思うけど、
まだまだ勉強中なので
いろいろ教えてもらえると嬉しい

354 :デフォルトの名無しさん:2010/03/27(土) 12:20:48
スネークゲームか。

implements Config はやめて static import
NyoroArrayは事実上双方向リストなので、LinkedListあたりを利用
できないか考える。

Foodのもつ画像は、 static イニシャライザを使って、クラス全体で
10個持てばよいと思う。

今はノーマルエサがダイエットエサの出現状態まで管理までしている
ようだけど、ノーマルエサとダイエットエサは同時に各1つしか出な
いみたいなので、ゲーム世界側でそれぞれ1つずつ持つのがよいのでは
ないだろうか。

では、ごはんー。


355 :デフォルトの名無しさん:2010/03/27(土) 13:22:40
ActionKey.java
値が0と1しかないのなら、intじゃなくてbooleanを使ったほうがよいのでは。

初期化
private boolean status = false;
メソッド
public void press() { status=true; }
public void release() { status=false; }
public boolean isPressed() { return status; }


356 :デフォルトの名無しさん:2010/03/27(土) 14:18:47
ゲームの出来ない(コンピュータにも余裕で負けるよ)、俺にはさっぱりルールが分からなかったorz
可愛い女の子の絵だけで、お腹が一杯です

357 :デフォルトの名無しさん:2010/03/27(土) 14:20:09
ゲーム本体の良し悪しはともかくとして、
問題にしてるのはマップエディタの方では?

358 :デフォルトの名無しさん:2010/03/27(土) 14:44:25
uploaderはこちら
http://toku.xdisc.net/


359 :デフォルトの名無しさん:2010/03/27(土) 14:49:47
>>353
向こうのスレで「面白い」とだけコメントしてたものです…

ぱっと見て気になったのは>>354で書かれてる最初のものですね。
あと全般的に、定数は自分だったらEnum使うかな。
Enum使うと振る舞いを持たせられるので夢がひろがりんぐ。

Nyoro2のメインメソッドの中身はSwingUtilities.invokeLater使ってEDTで呼ぶべきでしょうね。
http://java.sun.com/docs/books/tutorial/uiswing/concurrency/initial.html

それとJava関係ないですけど、NetBeansのnbproject/privateディレクトリ以下は
配布しない方が良いかもです。
http://netbeans.org/kb/docs/java/import-eclipse_ja.html の"NetBeans プロジェクトファイル"

360 :デフォルトの名無しさん:2010/03/27(土) 14:53:18
>>357
ゲームの人とマップエディタの人は別人じゃないの?


361 :デフォルトの名無しさん:2010/03/27(土) 15:00:44
ゲームクリアしたら女の子とのセクロスシーンが出てくる、
なんてことになったらウレシくてティンコ旅立ち

362 :デフォルトの名無しさん:2010/03/27(土) 15:03:27
マッポエディッタがうぷられて、マッポvs有能人の壮絶なバトル、ってなことになったら面白いのになあ

363 :デフォルトの名無しさん:2010/03/27(土) 16:18:30
マップのセルが全部JButtonとか、グリッドがJTableとか、
そんなとこをエスパー予想。

…いや、Wizardryレベルのマップならそれで十分なんだけどさ

364 :デフォルトの名無しさん:2010/03/27(土) 16:56:23
>>353
ゲームは全然知らないけど、それでも問題が多いのは分かる。
たぶん354, 355のような指摘は100個くらいは挙げらるし、クラス設計にも問題がある。
(が、設計の能力はすぐには身につかない)
普通の職業プログラマに対してなら、『プログラミング作法』、『Effective Java 第2版』、
『Java言語で学ぶデザインパターン入門』あたりの書籍を勧めるところだけど、ゲームは
文化の違い等があるから、たぶんこれらの本を読むのは遠回りになるだろうな。

>>355
おまえもいろいろと酷そうだなw
boolean型でstatusなんて名前はない(名前は重要だぞ)

private boolean pressed = false;
public boolean isPressed() { return pressed; }

普通はこう。(ただしクラス設計としては問題がある)

365 :デフォルトの名無しさん:2010/03/27(土) 21:11:34
誰か、statusという名前が駄目でpressedならオケという理由を教えてくれまいか
ていうか、変数名に動詞を使うのにはめちゃくちゃ違和感がある
俺の場合、動詞から始まる名前はメソッドにしか使わないからなぁ

366 :デフォルトの名無しさん:2010/03/27(土) 21:20:09
>>365
status = true とか return status とか見てもなにしてんのかわかりにくいだろ。
あと、 pressed は動詞じゃないから。

367 :デフォルトの名無しさん:2010/03/27(土) 21:28:38
statusでは「何の」状態なのか分からない
pressedなら押したかどうかなんだなと分かる
まあキーなら押したかどうかしか状態がないだろという話もあるが
メソッドと命名の方向性は合わせた方がいいと思う

368 :デフォルトの名無しさん:2010/03/27(土) 21:48:11
そういうことか…レスサンクスコ。

369 :デフォルトの名無しさん:2010/03/27(土) 21:54:16
とりあえずJavaコーディング規約おいときますね。
http://www.objectclub.jp/community/codingstandard/CodingStd.pdf

これ以上の命名法の話題は命名系のスレでやった方がいいんじゃないかな。

370 :334:2010/03/27(土) 21:56:30
別にこまってないし、ソースupする気なんてないよ
遅い理由はJTableのレンダラにJLabelを使っているからなんだけど手を抜こうとしたらこれが都合よかったのでそうしてるだけだし。

にしても、あとはSwingのせい。
DataGridView@C#でやったらどんだけ高速だったことか。

見た目がいびつなのは、レイアウトマネージャーの動作がキチガイだから。
SWTのGridLayoutが神レイアウトだと思うんだけど、これのSwing版発見したのでつかってみて

ttp://code.google.com/p/uface/issues/detail?id=8

掲示板添付のzipが使えた。
正式にはどこで公開されているのか知らん。英語わからんし。


371 :デフォルトの名無しさん:2010/03/27(土) 22:01:10
俺はSwingを使うときは無条件でSwingUtilities.invokeLater()を使ってたけど、
よくよく考えると結構重要なのかも
http://wisdom.sakura.ne.jp/system/java/swing/swing4.html

353のソースは、まあ、よくできてるんじゃね?
俺も初心者レベルなんで詳しいことはよくわからんがw
あとは…

ifが連なってるところはswichi にしたほうがいいとか(一般的には条件分岐よりも
ジャンプのほうが速いはず…だけどこれはコンパイラ依存か)、
女の子の画像は裸のほうがいいとか、そのくらいしかわからん。

個人的に、画像の直貼り付けは遅そうな感じがするけどどうなんだろうね。
(もちろん、速度を気にしないなら直貼り付けで全く問題ないけど)
画像データを配列に読み込んで、その配列を処理したほうが速い気がするんだけど、
それをやるとかなりソースが複雑になりそうだなあ。

372 :334:2010/03/27(土) 22:06:05
連続書き込みすまん

swtgridlayoutで見た目は完全に改善された。かなりオススメ

で、とりあえず俺はJavaもSwingも上級レベルで使えると自負してるけど

これで(公開できるほど)まともなアプリをつくるのは
不可能または、並々ならぬ努力が必要と思うので
本気でみんなが何をつくっているのか気になる。
何かまともなもん作ったって事例があったら教えてくれ。

373 :デフォルトの名無しさん:2010/03/27(土) 22:08:09
>>371
あまり関係ないけど、コンパイラ依存じゃなくてVM依存だと思うw

374 :353:2010/03/27(土) 22:55:33
おぉ!沢山のレスありがとうございました!
こんなに沢山アドバイス貰えるとは思ってなかったよ
知らない単語も出てきてるし、参考URLまで貼ってくれてるしで、
いろいろ調べて勉強してみます。
ありがとうございました

ちなみに、トップの絵書いてくれた友達にも、
JAVA質問スレと、このスレで絵についてのレスされてる事を教えた所すごく喜んでましたw

375 :デフォルトの名無しさん:2010/03/28(日) 00:03:48
>>364
で、あんたは>>347のうちどれなの?

376 :デフォルトの名無しさん:2010/03/28(日) 00:05:46
バカでも出来るコードレビューには食いつきが良いのなw

377 :デフォルトの名無しさん:2010/03/28(日) 00:05:59
>>370
> 別にこまってないし
じゃあなんで>>198から1ヶ月もこのスレで頑張ってるの?

378 :デフォルトの名無しさん:2010/03/28(日) 00:07:45
>>376
で、あんたは>>347のうちどれなの?

379 :デフォルトの名無しさん:2010/03/28(日) 00:10:32
>>378
誰と勘違いしてるの?バカなの?

380 :デフォルトの名無しさん:2010/03/28(日) 00:21:39
また猛牛が暴れだしたようだな

381 :353の友達:2010/03/28(日) 00:21:55
>>361さんのために300点クリア絵を描きました><*
皆さんのレス嬉しかったです><*
ありがとうございました><*

ttp://a-draw.com/contents/uploader2/src/up19034.gif

382 :デフォルトの名無しさん:2010/03/28(日) 00:24:27
うpするにしてもレベル低いソースの方が食い付きがいいよね

383 :デフォルトの名無しさん:2010/03/28(日) 00:29:38
>>381
なんだコイツ
受け狙いのつもりなのだろうか

384 :デフォルトの名無しさん:2010/03/28(日) 00:31:30
くだらねぇ話でスレ延びてんな。Swing 関係ねぇじゃん。
もう Java 総合スレで統一したらどうだ。


385 :デフォルトの名無しさん:2010/03/28(日) 02:36:03
嫌あっちで反応悪くて、こっちでうpしたら、みんな気合い入れてコメント下から、当人らが興奮したってだけだろ。
どうせswingスレは普段過疎ってるから有効利用なんじゃねw

386 :334:2010/03/28(日) 04:26:13
>>377
おおおぉ、凄いチェック力。>>198書いたのすっかり忘れてた
このスレで頑張ってるというか、グチ&みんなが何つくってるのか興味で書き込みしてるだけなんだけど

.NETが性能も開発効率も見た目も圧倒的に良いのに、
いまだSwingにこだわる君たちの思考に興味がある


387 :デフォルトの名無しさん:2010/03/28(日) 04:33:39
>>386
.NET って UNIX 系 OS や Mac とかでも動いたっけ?

388 :デフォルトの名無しさん:2010/03/28(日) 10:43:44
春だなあ
java.netでもsf.netでもいいからSwingアプリ探してみなはれ。

389 :デフォルトの名無しさん:2010/03/28(日) 15:31:24
monoの再現度がまだまだ。
というかwinでMS製言語使うにしてもVC++だと思う。

390 :デフォルトの名無しさん:2010/03/29(月) 00:42:14
Swing と比べるなら .NET ではなくて
Windows Forms や WPF じゃなかろうか。

391 :デフォルトの名無しさん:2010/03/29(月) 21:15:04
JDK1.5なのでSwingWorkerが使えません。
この場合

1秒間隔でTimer起動→スレッド起動→バックエンド処理→待ち受け画面表示→イベント処理終了でswingスレッドを戻す
 →バックエンド処理終了→Timerのstaticに終了フラグセット(継承して持たせた)
  →Timer起動で呼ばれる→フラグ立ってるので待ち受け画面非表示

こんなことしないといけないんすかね…
あ〜1.6で書きたい。ただ1.5以上サポートなんで1.6依存でかけない…

392 :デフォルトの名無しさん:2010/03/29(月) 21:42:41
ライセンスとかに問題がなければ
SwingWorkerをパッケージに含めてしまうというのも可能かも。
あるいは似たようなクラスを自分で書くとか。


393 :デフォルトの名無しさん:2010/03/30(火) 00:33:05
>>370
1000x1000程度のJTableなら、全セルにイメージ貼り付けても、
スカスカ動くがな。
大方、全セルにJLabelをnewしてつっこんだとかだろ。


394 :デフォルトの名無しさん:2010/03/30(火) 01:36:30
>>391
https://swingworker.dev.java.net/
This project is a backport of SwingWorker included into 1.6.

395 :デフォルトの名無しさん:2010/03/30(火) 10:10:40
>>394
1.5で使えるとかって書いてないんですけど使えるものなんですかね?

396 :デフォルトの名無しさん:2010/03/30(火) 10:20:14
たいていの質問回答スレには、最初の一行しか読まずに回答始めるあわてんぼさんが常駐してる。

397 :デフォルトの名無しさん:2010/03/30(火) 11:09:30
This project is a backport of SwingWorker included into 1.6.
を訳してみろ…

398 :デフォルトの名無しさん:2010/03/30(火) 11:17:06
あ… もし backport の意味がわからなかったら用語辞典とかで調べるといいよ
http://e-words.jp/w/E38390E38383E382AFE3839DE383BCE38388.html

399 :デフォルトの名無しさん:2010/03/30(火) 11:35:50
意味が分かりました。すみません。躍起になって1.5ばかり探してました・・・

400 :334:2010/03/30(火) 19:48:53
>>393
newなんてするかい・・そこだけはりつけちゃる
public Component getTableCellRendererComponent(JTable table, Object data,
boolean isSelected, boolean hasFocus, int row, int column) {
MapTable mapTable = (MapTable) table;
if (!(mapTable.enableStartColumn <= column && column < mapTable.enableStartColumn
+ mapTable.enableLength)) {
this.setIcon(null);
} else {
if (data != null) {
int item = (Integer) data;
if (item != -1) {
PalletTableItem pi = palletTable.getValueAt(item);
if (pi != null) {
this.setIcon(pi.icon);
} else {
this.setIcon(null);
}
} else {
this.setIcon(null);
}
} else {
this.setIcon(null);
}
}
if (isSelected) {
this.setBorder(lineBorder);
} else {
this.setBorder(emptyBorder);
}
return this;
}

401 :デフォルトの名無しさん:2010/03/31(水) 00:40:49
きったねー

402 :デフォルトの名無しさん:2010/03/31(水) 01:14:53
>>400
動作には関係ないが、ソースは少し見やすくなったかもしれない。

public Component getTableCellRendererComponent(JTable table, Object data,
boolean isSelected, boolean hasFocus, int row, int column) {
MapTable mapTable = (MapTable) table;
Icon icon = null;
Integer item = (Integer) data;
if (mapTable.enableStartColumn <= column
&& column < mapTable.enableStartColumn + mapTable.enableLength
&& item != null && item != -1) {
PalletTableItem pi = palletTable.getValueAt(item);
if (pi != null) {
icon = pi.icon;
}
}
this.setIcon(icon);
this.setBorder(isSelected ? lineBorder : emptyBorder);
return this;
}

403 :デフォルトの名無しさん:2010/03/31(水) 04:22:34
>>393 は逃げたか…

404 :デフォルトの名無しさん:2010/03/31(水) 05:24:22
単に図星だったから、慌ててソース書いただけだろw

405 :デフォルトの名無しさん:2010/03/31(水) 06:55:43
そう思いたいんですね

406 :デフォルトの名無しさん:2010/04/01(木) 08:45:49
最初から示さなかった時点で負けとしか。
後だし乙。

407 :デフォルトの名無しさん:2010/04/01(木) 15:31:23
JTreeの要素の並び順ってJtreeの機能で設定することができるでしょうか?
それとも登録の前にソートして、ソートされた順番で登録しないといけないでしょうか?

408 :デフォルトの名無しさん:2010/04/01(木) 16:07:36
>>407
TreeNodeに対して children() を呼んだときにソート済みで返ってくればよいと思う。
UIよりはモデル側の問題。


409 :デフォルトの名無しさん:2010/04/01(木) 20:20:00
>>406
誰と戦ってんのおまえw

410 :デフォルトの名無しさん:2010/04/02(金) 02:39:22
>>409
お前だろ、粘着乙www

411 :デフォルトの名無しさん:2010/04/06(火) 23:17:26
javafx を始めたいんだけど、入門書ってありますか?

412 :デフォルトの名無しさん:2010/04/07(水) 04:06:16
javafxは辞めておいたほうが。

413 :デフォルトの名無しさん:2010/04/07(水) 04:32:26
入門レベルは英語ばっかだね。

414 :デフォルトの名無しさん:2010/04/08(木) 03:31:16
LaboBrowser っての使ってみたけど全然ダメだの。
マトモに表示できるのは Google トップくらいだ。

415 :デフォルトの名無しさん:2010/04/08(木) 03:56:42
Lobo? あれは JEditorPane よりもマシという程度

416 :デフォルトの名無しさん:2010/04/08(木) 04:05:08
一般的なブラウザ >> [実用性の壁] >>> Lobo >> Swing >>>> HotJava

417 :デフォルトの名無しさん:2010/04/08(木) 07:42:00
JWebPaneまだ〜?

418 :デフォルトの名無しさん:2010/04/08(木) 22:47:25
Flying Saucerの出番か!?

419 :334:2010/04/11(日) 12:07:15
おひさしぶり!

んでもって君らが何つくってんのか教えてくれんの?

420 :デフォルトの名無しさん:2010/04/11(日) 22:24:28
JaneStyleとかすごい恥ずかしいUIだけど公開されてんぞ?

421 :デフォルトの名無しさん:2010/04/12(月) 20:46:27
a

422 :デフォルトの名無しさん:2010/04/13(火) 13:09:55
window自体に最優先のキーイベントを登録したいのですが、
要は、どのパネル、どのコンポーネントを開いていても呼ばれるイベントです。
WindowにWHEN_IN_FOCUSED_WINDOWのイベントをgetActionMap().put(action, action)するみたいな感じです。

423 :デフォルトの名無しさん:2010/04/13(火) 13:10:50
ほほう。それでそれで?

424 :デフォルトの名無しさん:2010/04/15(木) 10:17:51
>>422
KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventPostProcessor(new KeyEventPostProcessor() {
    public boolean postProcessKeyEvent(KeyEvent e) {
        if (e.getID() == KeyEvent.KEY_PRESSED)
            System.out.println(e);
        return false;
    }
});

このサンプルコードのようにすると出来るようです。
あとはKEY_PRESSEDの所と、System.out.println(e)の所を適切に変えればOKです。
1日掛けて調べました。。。

もし宜しければ、私のブログの応援クリックをしてもらえませんか?
http://study-blog.jugem.jp

425 :デフォルトの名無しさん:2010/04/15(木) 10:21:33
間違えました。

KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(new KeyEventDispatcher() {
    public boolean dispatchKeyEvent(KeyEvent e) {
        if (e.getID() == KeyEvent.KEY_PRESSED)
            System.out.println(e);
        return false;
    }
});

426 :デフォルトの名無しさん:2010/05/01(土) 20:59:02
JTableに行ヘッダを追加しようとJScrollPane#setRowHeaderView()でJListのインスタンスを渡しました。
行ヘッダは追加されたのですが、
行ヘッダのJListでカーソル移動やマウスドラッグをするとJTable側がついてこず
JListだけがスクロールします。

JTable側も連動させるにはどうすればよいのでしょう??

427 :デフォルトの名無しさん:2010/05/02(日) 21:41:40
>>426
scrollPane.getRowHeader().addChangeListener(new ChangeListener() {
    public void stateChanged(ChangeEvent e) {
        scrollPane.getViewport().setViewPosition(scrollPane.getRowHeader().getViewPosition());
    }
});

これで、カーソル移動とマウスドラッグはOKでした。たぶん他も大丈夫かと思います。
もしよろしければ>>424のクリックをお願いします。

428 :デフォルトの名無しさん:2010/05/03(月) 09:12:47
>>424
削除ガイドライン違反

8. URL表記・リンク
宣伝・罠・実行リンク
・明らかに宣伝を目的としたリンク・クリックや訪問で課金が発生するもの等は、宣伝掲示板以外では削除します。


429 :デフォルトの名無しさん:2010/05/03(月) 13:13:52
こんなところで宣伝したら馬鹿に突撃されるぞ。

430 :デフォルトの名無しさん:2010/05/03(月) 14:48:00
専門板なら平気だよ。

431 :デフォルトの名無しさん:2010/05/03(月) 23:02:19
>>428
悪気はないんですけどね。
まぁ無職で時間にゆとりがあるので、色々やっとるという訳です。
とりあえずクリックした人はいないようですw

どうにかやっていく方法はないものでしょうか。

1.質問が出る。
2.アフィリエイトをクリックしてもらう。(1クリック数円)
3.解答をする。

という形式にしたいなぁと思っております。

>>429,430
基本的にプログラム板は過疎っていますからね(^^;

432 :デフォルトの名無しさん:2010/05/03(月) 23:03:37
↑スレ違い。適切なスレでやってください

433 :デフォルトの名無しさん:2010/05/03(月) 23:33:06
>>432
そこを何とかお願いします。

434 :228:2010/05/04(火) 07:47:44
じゃあ俺は>>424のブログ?のコメントをエロサイトの宣伝に使わせてもらうよ。
だめ?そこを何とかお願いします。

435 :デフォルトの名無しさん:2010/05/04(火) 09:07:07
>>434
あ、おはようございます。Give&Takeの精神でお願いします。

436 :デフォルトの名無しさん:2010/05/04(火) 12:46:21
宣伝嵐報告してきておk?

437 :デフォルトの名無しさん:2010/05/04(火) 12:53:21
>>436
>>422,426にも意見を聞きたいところですけど。

438 :426:2010/05/05(水) 12:40:32
>>427
できました!つたない質問で的確な回答を頂けてとても感謝しています。
クリックしておきましたよ(^^

439 :427:2010/05/05(水) 20:19:49
>>438
こちらこそ、ありがとう。
迷惑でなければ今後も質問があれば調べて回答したいと思います。

440 :デフォルトの名無しさん:2010/05/10(月) 22:39:00
1つのJPanelのインスタンスを、複数のJFrame上に同時に描画するにはどうすればよいですか?

441 :デフォルトの名無しさん:2010/05/10(月) 23:05:40
シリアライズしてネット越しに垂れ流してデシリアライズとか

442 :デフォルトの名無しさん:2010/05/10(月) 23:57:41
>>441
それじゃ「1つのインスタンス」にはならないじゃん。
>>440
共有すべきはmodelであってviewじゃない。

443 :デフォルトの名無しさん:2010/05/11(火) 00:04:46
          ____
       / \  /\ キリッ
.     / (ー)  (ー)\    共有すべきはmodelであってviewじゃない
    /   ⌒(__人__)⌒ \
    |      |r┬-|    |
     \     `ー'´   /
    ノ            \
  /´               ヽ
 |    l              \
 ヽ    -一''''''"~~``'ー--、   -一'''''''ー-、.
  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒))

444 :デフォルトの名無しさん:2010/05/11(火) 00:33:59
巣に帰れw
http://pc12.2ch.net/test/read.cgi/tech/1178723829/

445 :デフォルトの名無しさん:2010/05/11(火) 22:36:26
>>443-444
ワロタ。

446 :デフォルトの名無しさん:2010/05/12(水) 17:37:21
>>440
描画する数だけインスタンスが必要。


447 :デフォルトの名無しさん:2010/05/14(金) 00:08:32
なんでviewじゃ駄目なんですか?

448 :デフォルトの名無しさん:2010/05/14(金) 01:29:42
>>447
GUIコンポーネントは親を1つしか持てないから、複数のコンポーネントで1つの子を共有することができない。
参考: java.awt.Component とか java.awt.Container のソース。


449 :デフォルトの名無しさん:2010/05/14(金) 01:31:59
てっきりイベントがらみで駄目なのかと思った

450 :デフォルトの名無しさん:2010/05/14(金) 10:36:09
>>449
それもあるから親を1つしか持てないようになってるんだろう

451 :デフォルトの名無しさん:2010/05/25(火) 10:07:14
ルックアンドフィールは、複数同時には使えない?

JFrame 2つつくって、片方は、javax.swing.plaf.metal.MetalLookAndFeel
もう片方は、UIManager.getSystemLookAndFeelClassName() でとってきたやつを
適用する、みたいなことはできないようになってるってことでいい?

452 :デフォルトの名無しさん:2010/05/25(火) 10:14:23
JFrame を表示する前に都度 UIManager#setLookAndFeel()、
SwingUtilities#updateComponentTreeUI() で指定してやれば
見た目は別々になるんじゃないの。全くお勧めは出来ないが。

453 :デフォルトの名無しさん:2010/05/25(火) 10:28:24
MetalLookAndFeelで1.1や1.2のころの昔の紫色のUIに変更するにはどうするんですか?

454 :デフォルトの名無しさん:2010/05/25(火) 10:32:22
JFrame.setDefaultLookAndFeelDecorated(true);
JDialog.setDefaultLookAndFeelDecorated(true);
の事か?

455 :デフォルトの名無しさん:2010/05/25(火) 18:33:26
>>440
http://www.javakb.com/Uwe/Forum.aspx/java-setup/11894/Copying-the-View-of-a-JPanel

このページの2番目のサンプルコードがとても参考になると思います。

>>451
VMを2つ起動という手も・・・ないか。

456 :デフォルトの名無しさん:2010/05/25(火) 20:26:49
>>451
できるけど挙動が狂うって話があった気がする。


457 :デフォルトの名無しさん:2010/05/25(火) 20:33:23
>>452 >>456
基本できないよな 少なくともAPI作り手はそんなこと想定しなていようだな
サンキュー

458 :デフォルトの名無しさん:2010/05/25(火) 23:53:25
>>453

LookAndFeel laf = new javax.swing.plaf.metal.MetalLookAndFeel();
MetalTheme theme = new javax.swing.plaf.metal.DefaultMetalTheme();
MetalLookAndFeel.setCurrentTheme(theme);
UIManager.setLookAndFeel(laf);

多分これのことかな?


459 :デフォルトの名無しさん:2010/05/30(日) 00:19:25
>>443
あたりに関連して、
frame1 : JFrame --- button1 : JButton
frame2 : JFrame --- button2 : JButton
みたいに、なってて、button1とbutton2が同じモデル buttonModel0をsetModelされてるとき、
frame1をクローズして、frame1がGCで回収された後でも、button1は、buttonModel0からリスナ経由で
参照されてるから残る。
もちろん、button1を再利用したいときもあるけど、そのままメモリリークになりやすい。
どこかのタイミングでプログラマの責任で、button1.setModel(null)して、モデルへの参照を切るべきなんだろうけど、
なんか、定石みたいな書き方ありますかね?


460 :デフォルトの名無しさん:2010/05/30(日) 00:27:38
>>459
frame1 のクローズイベントで切り離す。

461 :デフォルトの名無しさん:2010/06/06(日) 22:28:00
JTable でセルをdbl clickだんどするとそのセルをエディットできますよね。
これを無効にしたいんですがどのAPIでしょうか。
それにしてもJTableは複雑ですよね・・・

462 :デフォルトの名無しさん:2010/06/06(日) 22:53:53
日本語でおk

463 :デフォルトの名無しさん:2010/06/06(日) 23:12:24
JTableは本当に複雑ですけど1つのコンポネントにあれこれ機能を詰め込みすぎって感じがします。
dbl clickやF2でセルを編集できるようになりますがこれをoffにするにはどうするんですか?

464 :デフォルトの名無しさん:2010/06/06(日) 23:49:21
JTable.setDefaultEditor()にnullを渡しておくのはどうだろう。
本来は自作TableModelを作るべきだと思うが。

465 :デフォルトの名無しさん:2010/06/07(月) 00:33:23
>>464
javadocみるとそれしかないかなって思ってましたけど、一番単純な方法はやはりそれでしょうね。
javaはclassの継承を中心とした言語設計なのに、swingはDIというかMVCというかプラグインというか、java langにとってswinの設計思想はまったく異質なので非常に複雑なライブラリとなっています。

愚痴を言うわけではないですが複雑な割にこの程度の機能(それもtableとして当たり前のような機能)しかないswing.tableなら、
少なくともhtml,dom,xmlやgridbag + cellの自作コンポでほとんど用が足りると思います。
javascript.prototypeのような考えならまた違ったのかもしれませんが、それをいうとあとの祭りなのでしょうね。
それと日本語のswingを扱ったHPは皆無ですね。グーグルでもこのスレがよくヒットします。

466 :デフォルトの名無しさん:2010/06/07(月) 00:41:38
ああ、誤解を招きかねないですが、spiなら問題ないですがswingのようなui,skinableではspiや
plubableじゃなくてcssや、顧客一人一人に合わせたskin(script)のようにもっと軽く設定できない
(つまりskin,look,feelingについては固定の設定は存在しないという設計思想)と、UI開発者は敬遠するかなって思います。
webクリエーチャ達の髪の毛の軽さと同じく、JEditorPaneのhtmlエディタもしかりです。

467 :デフォルトの名無しさん:2010/06/07(月) 05:26:11
>>465-466
SwingはJavaプログラマのためのライブラリです。
htmlやcssの方が得意な人のためのライブラリではありません。
SwingにhtmlやcssでUIを設定できないと文句を言うのはお門違いだと思います。

468 :デフォルトの名無しさん:2010/06/07(月) 13:05:58
正確に言うとjavaじゃ無くてjvmプラットのUI

469 :デフォルトの名無しさん:2010/06/07(月) 15:55:54
xmlならsynthがある。
JEditorPaneは最初はやる気満々だったけど扱おうとするドキュメントが方言だらけで投げた。
というかここら辺のフォローはSwing labの管轄なんだが。

まあ俺々思想が強すぎて>>465の意図がよく分からんが。

470 :デフォルトの名無しさん:2010/06/07(月) 16:02:48
synthはswing uiに新しい機能を定義したり追加したりするものじゃないですよね・・・

471 :デフォルトの名無しさん:2010/06/07(月) 16:19:01
swin sets 3も見てみましたけど、ただ高機能にしただけってところじゃないですかね。
それら機能の追加などカスタムなことをユーザ(開発者)が簡単にできるようにしないと汎用コンポでもないし汎用ライブラリ(javax swing)としても意味ないです。

少なくともjava,c++(qt3,qt4),dotnet,gameライブラリを当たり前のように使える開発者は時間があればそれぐらいのコンポネントは普通に作れますよ。
swing labのコンポネントはnetbeans apiに組み込んじゃったほうがいいんじゃないかと思います。
今はjavafxでしょうし、lgplのようですし、せっかく有用なコンポなのでswtと同じ感じでnetbeansを特に使う人達への特権ってことで。

472 :デフォルトの名無しさん:2010/06/07(月) 16:42:55
ブログでやれ

473 :デフォルトの名無しさん:2010/06/08(火) 11:39:06
キーバインドの変更だけならInputMap使うほうが素直では。

474 :デフォルトの名無しさん:2010/06/08(火) 21:52:13
htmlしかコーディング出来ないスキルでguiやろうってのが無謀。

475 :デフォルトの名無しさん:2010/06/26(土) 19:50:11
ahe

476 :デフォルトの名無しさん:2010/07/02(金) 10:14:55
低速だとはおもわない

477 :デフォルトの名無しさん:2010/07/02(金) 13:15:39
伝統だから付いてるだけだよ。
# 「Java 高速 GUI SWT」に対する皮肉も込めて…

478 :デフォルトの名無しさん:2010/07/03(土) 02:29:19
教えてください。
JFrame→JDialog(モーダル)→JDialog(モーダル)の画面遷移で、
最後のJDialogをdispose()すると、最後のJDialog残像が残るんですが、(何回かやってると)
dispose()した後、2番目のJDialogをrepaint()しないといけないもんですか?

実際はもうちょっと複雑で、
2番目のJDialogの中にtableがあってTableのセル内のボタンを押した時に、
3番目のJDialogが開くようになってます。
そこで、選択した物をテーブルに表示するという処理になります。

3番目のJDialogを引数無で作成すると残像は起こらないんですが、
オーナー(2番目のJDialog)を指定してJDialogを作成した場合のみ問題が発生します。


479 :デフォルトの名無しさん:2010/07/03(土) 09:30:08
hideしてからdispose

480 :デフォルトの名無しさん:2010/07/03(土) 18:04:51
1.5以降ではhide()は推奨されないメソッドになっているため、
JavaDocの通り、setVisible(false)をしてからとか、
windowクラスのtoBack()をしてからdispose()をするなど、
色々と試してみたんですがうまくいきません。(モーダルなのでtoBack()は効くかもわかりませんが(汗))

あとは、windowsの問題かと思い、VM引数のnoddraw=trueでやってみたりもしたんですがダメでした・・

奥が深いですね・・・

481 :デフォルトの名無しさん:2010/07/03(土) 18:19:52
それが再現出来るような説明を付けてバグ報告

482 :デフォルトの名無しさん:2010/07/03(土) 23:55:02
3番目のJDialogをEventQueue.invokeAndWait()経由で開いてみるのはどうだろう。

483 :デフォルトの名無しさん:2010/07/04(日) 18:14:32
先回りエスパーでinvokeLaterと修正してみるテスト

484 :デフォルトの名無しさん:2010/07/04(日) 23:58:22
SwingUtilsですね
確認してみます。

色々と助言ありがとうございます。

解せないのは、
オーナーを指定した場合と、していない場合の動作ですが
まだわからないことが多いので勉強してみます。

485 :デフォルトの名無しさん:2010/07/09(金) 12:48:41
Apache pivotのWTKって、Swingの補完に使えんのかな。

486 :デフォルトの名無しさん:2010/07/17(土) 17:38:40
Java SE 6環境でNetBeans6.9を使ってSwing勉強中なんですが、手動でフォーカス制御することができなくて詰んでいます。
調べてみたところフォーカス指定にはFocusTraversalPolicyを自力実装する必要があるようなのですが、
フォーカス順が複数のパネルにまたがっている場合にどうすれば良いのか解りません。
(同一パネル内の場合はsetNextFocusableComponentと同じ動きをするpolicyを実装して想定どおりに動かすことができました)

親JPanelの中にボタンと2つの子JPanel 1, 子JPanel 2を配置して、
それぞれの子パネルにいくつかのコンポーネントが在るような画面で、
子供1と2が混在するフォーカス指定をする方法を教えていただけませんか。

例えば、子1.テキスト1 → 子2.ボタン1 → 子2.ボタン2 → 子1.テキスト2 → 親.ボタン → 子1.テキスト1といった感じです。

長文失礼しました。
よろしくお願いします。

487 :デフォルトの名無しさん:2010/07/17(土) 22:24:12
requestFocus()を使うんじゃないの?

488 :デフォルトの名無しさん:2010/07/18(日) 01:40:43
ありがとうございます。
そんなのがあったんですね。。。orz

489 :デフォルトの名無しさん:2010/07/18(日) 12:19:07
別人が返答してて笑った。

requestFocus()を実行するのは誰の仕事になるんでしょうか。コンポーネントが自分の次が誰なのか知っていないといけない実装は避けたく思っています。
何より次のフォーカスがそのコンポーネントの所属していないパネル上の場合は、
親を経由してしかもその先のパネルの情報まで持っていないとダメな強い依存関係が生まれませんか?

と、ここまで書いてきてmediator作れば良いのかなと少し思った。

490 :デフォルトの名無しさん:2010/07/20(火) 13:44:44
>>486
親JPanelから子JPanel は参照できるし、依存してもいいんだよね?

やりたいようにフォーカスしてくれる FocusTraversalPolicy 実装して
親JPanelに setFocusTraversalPolicy(policy) するだけじゃない?

491 :デフォルトの名無しさん:2010/07/21(水) 19:00:35
>>490
レスありがとうございます。
親Panelに独自traversalPolicyを設定しただけではダメでした。
親に対してsetTraversalPolicyProvider(true)することで期待した動作になりました。
ただ、今度は別のパネルに一度でも切り替えるとrequestFocusInWindow()が動作しない(falseが戻り、フォーカスも当たらない)状況に。

初めから画面遷移とフォーカスでハマると考えていましたけど、まさかここまでとは。
JComboBoxのeditableの値で異なる動作になるとか色々とハマりどころが多いので、
どうやってその辺りのハマり回避と使い勝手のバランスをとるかを考えると難しいですね。

492 :デフォルトの名無しさん:2010/07/23(金) 13:05:54
パネルごとにfocustraversalpolicyを切り替える必要がないのなら、フレームに設定したら?

493 :デフォルトの名無しさん:2010/07/23(金) 15:38:19
>>491
画面遷移とか、別パネルに切り替えとか後出しで出てくるし…
どういうGUIを作ってるのか書かないとアドバイスのしようもないよ?
# たぶん非標準的UIでSwingを変な使い方して自らハマリ所に突撃してるんだと思うが…

494 :デフォルトの名無しさん:2010/07/23(金) 21:45:41
>>492-493
ありがとうございます。
フレームにポリシー設定というのは知りませんでした。
おかげさまで全パネルで自由なフォーカス制御ができるようになりました。

情報が後出しになっているとのご指摘については申し訳ありません。
Swingを学び始めて何をどう実現できるのかを色々と試しているところなので、それぞれの問題はすべて別のプロジェクトになっています。

requestFocus()の問題は、CardLayoutにパネルを2枚add()して片方のパネルのボタンを押すともう片方のパネルを表示(CardLayout#show())する実装で、
初回表示では正しくフォーカスされるのに、2回目以降ではrequestFocusInWindow()がfalseを戻して正しくフォーカスされない状態です。

Swingはブラウザベースのアプリに比べてできることが格段に多いので楽しみながら学ばせてもらってます。
何が実現可能で何が実現困難なのか、ActiveX連携とかOCX周りとかもためしたいなと思ってます。


495 :デフォルトの名無しさん:2010/08/02(月) 11:56:19
テキストフィールドにフォーカスが当たった時に背景と文字の色を変えたいと思っています。

テキストフィールドのフォーカスゲインとフォーカスロストのイベントで色指定すればできたのですが
複数のテキストフィールドに対して統一的な設定をする方法があったら教えてもらえないでしょうか。
例えば100個のテキストフィールドがある時にゲインとロストで合わせて200個のメソッドを書かずにすませたいんです。
よろしくお願いします。

496 :デフォルトの名無しさん:2010/08/02(月) 13:28:46
>>495
どう考えてもメソッド書くのは2個でいいだろ…

497 :デフォルトの名無しさん:2010/08/02(月) 15:09:29
>>496
レスありがとう。
2個ですませられるやり方が知りたいです。

自分の知ってるやり方だとテキストフィールドのインスタンスにリスナー登録するから
インスタンスの数に比例してメソッドの数が増えるんです。

498 :デフォルトの名無しさん:2010/08/02(月) 15:42:05
>>497
やり方としては全く同じだと思うが。
FocusListener colorChangeFocusListener = new FocusListener{
 public void focusGained(FocusEvent event) {
  JComponent target = (JComponent)event.getSource();
  target.setBackground(Color.CYAN);
 }
 public void focusLost(FocusEvent event) {
  JComponent target = (JComponent)event.getSource();
  target.setBackground(Color.WHITE);
 }
}
JTextField[] textFields = new JTextField[10];
for (int i = 0;i < textFields.length;i++){
 textFields[i] = new JTextField("Hello");
 textFields[i].setColumns(10);
 textFields[i].addFocusListener(colorChangeFocusListener);
 mainPanel.add(textFields[i]);
}

499 :デフォルトの名無しさん:2010/08/03(火) 12:11:14
>>498
サンプルコードありがとうございました。
やっぱり個々のフィールドにリスナー定義というのは避けられないんですね。
内容は498さんのコードそのままになりそうですがリスナーグループみたいなモノが作れないか考えてみます。

500 :デフォルトの名無しさん:2010/08/03(火) 15:12:33
>>499
リスナーグループとかって作るのは簡単だろうけどそれって本当に必要なの?
同じ性質のTextFieldを大量につくるんならサブクラス化したっていいんだし
フレーム内のコンポーネントを再帰的にたどってリスナーをセットしてまわるコードだって
簡単に書けるだろうし…

125 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)