09/12/19 23:13:39
ハードウェアの高スペック化、描画アルゴリズムの変更、JavaVMの高速化に伴い、パフォーマンスの問題は改善されています。
しかしながら、"Java"というだけで未だに敬遠されるのが現状。
そんなSwingと引き続き付き合っていくみんなのスレッドです。
Java低速GUI Swing 8
スレリンク(tech板)
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:デフォルトの名無しさん
09/12/19 23:14:24
VisualStudioのようなポトペタ開発環境がほしい!!
NetBeans
URLリンク(www.netbeans.org)
Eclipse+VisualEditorPlugin
URLリンク(www.eclipse.org)
URLリンク(www.eclipse.org)
Jigloo
URLリンク(cloudgarden.com)
3:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/12/20 00:19:25
スレ立て乙
Nimbus って、今でも JDK でしか使えないの?
うちの環境では JRE でも Nimbus が使えるけど。
JDK もインストールしてあるから、
JRE が JDK 付属の Nimbus を読み込んでる?
5:デフォルトの名無しさん
09/12/20 00:40:25
Nimbusサポートは6u10以降だから、
前スレ開始とほぼ同じ時期の登場だったかな。
次スレで直せばOKじゃない?
6:デフォルトの名無しさん
09/12/20 01:33:10
XAML使えるようにならないかなあ
7:デフォルトの名無しさん
09/12/20 12:23:00
>>6
はあ?
8:デフォルトの名無しさん
09/12/20 13:27:31
このスレpart10だからな。
前1がSwing/AWTスレ8をディスったからテンプレにないだけで。
9:デフォルトの名無しさん
09/12/20 13:36:32
>>8
Swing/AWTスレ8のアドレス希望
10:デフォルトの名無しさん
09/12/20 14:00:26
断る
11:デフォルトの名無しさん
09/12/20 16:00:39
>>8
Disられてるのは、↓のスレタイじゃないの?
> Java低速GUI Swing 6
> スレリンク(tech板)
12:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/12/21 12:48:48
今は無理
14:12
09/12/21 14:38:45
>>13
どうしようもないってこと?
15:デフォルトの名無しさん
09/12/21 20:07:01
>12
エスパーすると、レンダラーの設定をString.classのカラムに対してやってない?
table.setDefaultRenderer(Integer.class, new TestTableCellRenderer());
にしないとダメだよ
16:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/12/21 23:30:15
そもそも一つのコンポーネントを複数のコンテナに含めることができるのか?
18:デフォルトの名無しさん
09/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
09/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:デフォルトの名無しさん
09/12/22 02:58:29
>>19
CardLayout
21:20
09/12/22 03:00:07
ごめん勘違い。
同じものを配置替えするという方法を取るところだろうね。
22:デフォルトの名無しさん
09/12/22 04:01:20
ユーザーがレイアウトを選ぶたびに
BかCに add し直すしかないのでは
23:デフォルトの名無しさん
09/12/22 04:21:44
同意
24:16
09/12/22 10:14:08
やっぱり、add()し直すしかないですよね
実装する時に手を抜きたかったのですが、無理ですね
ありがとうございました
25:デフォルトの名無しさん
09/12/22 11:19:57
ある画面実行中に、各Componentの登録済み全イベント処理クラスを知りたいのですが、
Component#getListeners(Class<T> listenerType)の中にあるリスナー群がすべてのイベントになるでしょうか?
つまりgetListeners(各イベントクラス)を10イベントリスナークラス分実行してとれたものを、
これ以外のイベント処理クラスは使用していません、と言いきれるものになるでしょうか?
26:デフォルトの名無しさん
09/12/22 11:26:13
何をしたいかよくわからないんだが、とりあえず、10ってどこから出てきた数?
27:デフォルトの名無しさん
09/12/22 15:52:07
>>26
Component#getListeners(Class<T> listenerType)の中で使われてゐたリスナークラスの種類です。
28:デフォルトの名無しさん
09/12/22 15:59:48
事実上、リスナーってインタフェースだからな。
ActionListenerとMouseListenerどっちも実装してるクラスとかあっても、
ちっとも珍しい話ではない。
getListenersで得られたアクションリスナが、
実はマウスリスナでもありました、
というのは自前でinstanceof演算子で判定するしかないのでは。
とエスパー回答。何がしたいかわからんが、java.util.EventListenerProxyも
読んどいた方がいいような。
29:デフォルトの名無しさん
09/12/22 18:07:29
>>27
あぁ、10の意味がわかった
その中に Button とかでよく見る ActionListener が無いのが不思議ではなかったか?
残念ながら Component#getListeners はサブクラスでオーバーライドされている
全部の一覧を得るのは無理じゃない?
30:デフォルトの名無しさん
09/12/22 18:14:03
>>29
うーん。でもJButtonのgetListenersはオーバライドされていないんだよね…
31:デフォルトの名無しさん
09/12/22 18:19:48
JComponentのオーバーライドが効いてる
JComponent以下はEventListenerListを使っててどんなリスナでも入る
32:デフォルトの名無しさん
09/12/22 18:24:55
>>31
おお、すみません。見落としてました。
対象部品のgetListeners呼んでおけば各部品の全イベントが取れそうですね。
33:デフォルトの名無しさん
09/12/22 19:52:37
教えて下さい
今SourceForgeでJavaMIDIMixer作ってるモノですが
MDIウィンドウを画面の下や右にピタッっと張り付ける
そんな事を実現するスタンダードな手順はありますでしょうか?
34:デフォルトの名無しさん
09/12/22 22:10:19
>>33
MDIってことはJDesktopPaneとJInternalFrameか。
ドラッグして外周に近づいたら吸い付くってやつなら
URLリンク(terai.xrea.jp)
こんなの?
35:デフォルトの名無しさん
09/12/22 22:50:44
ありがとうございます^^
これはすばらしいですね
36:デフォルトの名無しさん
09/12/22 23:51:54
ドッカブルでドラッガブルなGUIならDnDAPI使って自前で作ったがjava.netの何処かでみたぞ。
37:デフォルトの名無しさん
09/12/23 22:55:08
JScrollPaneにJTable、JTextPaneなどを追加すると、最小限(現在選択している場所)の描写しかしませんが
どうやって、実装してるんですか?ヒントをください
38:デフォルトの名無しさん
09/12/23 22:57:33
InvalidateRectのこと?
39:37
09/12/23 23:05:40
JPanelあたりを継承して、それをJScrollPaneに追加したいな~と思ったので
40:デフォルトの名無しさん
09/12/23 23:14:23
Graphics#getClipBounds
41:デフォルトの名無しさん
09/12/23 23:20:25
>>40
JTableのソースを読むと、そんな低レベルのメソッド使ってませんよ
42:デフォルトの名無しさん
09/12/23 23:23:44
そりゃ描くのはJTable自身じゃないからな
BasicTableUIみてみろ
43:デフォルトの名無しさん
09/12/23 23:26:39
JTableのソースなんて読まなくていいの
ためしに、JPanelにボタンとかリストボックス配置して、
JScrollPaneでそのJPanelかこってみなさいよ
Graphics2Dとかが自動的に処理してくれるから、ボタンもちゃんと押せるし、ほかの部分の描写かからないし
画像を張りたいなら、スクロール関係なしで、グラフィックを描写するPanelを設計して、
JScrollPane -> JPanel -> Layout -> グラフィックPanelクラス
の順番でつなげればいいだけ
グラフィックパネルの中ではそういうの必要ですけどね、
JTableはJTableUIのソースを見る必要がありそうですね
がんばってね!
44:37
09/12/23 23:32:06
>>42-43
ひとまず、調べてみる
ありがとう
45:デフォルトの名無しさん
09/12/24 00:01:46
まてまて。ここは JViewport の setScrollMode() の賢さを讃えるところじゃないのか?
46:デフォルトの名無しさん
09/12/24 00:33:36
JViewPortのJDKドキュメントの「高速スクロールアルゴリズム」解説とやらに
知りたいことは全部書かれてる気もするが
47:デフォルトの名無しさん
09/12/24 13:22:51
セルの話かと思ったらテーブル全体の話か
48:デフォルトの名無しさん
09/12/24 13:53:54
D&Dで部品の配置を変えるGUIツール的なものを作りました。
自由に配置移動やボタンの追加等行って、それを保存呼び出ししたいと考えてますが、
その場合余計なことをせず、TOPのフレームをシリアライズANDデシリアライズで実現できそうでしょうか?
ComponentがSerializableなので、シリアライズ保存は想定されているんですよね?
49:デフォルトの名無しさん
09/12/24 14:47:00
一応想定されてるんですが、バージョン間の互換性は保証されていません
XMLEncoder/XMLDecoderの方がいいかもしれません
50:デフォルトの名無しさん
09/12/24 15:36:00
互換性って、JDKのバージョンでなく対象クラスのバージョンですかね?
51:デフォルトの名無しさん
09/12/24 16:00:07
Swing各クラスのJavadocに下記の文がいちいち書いてある
> 警告: このクラスの直列化されたオブジェクトは、今後の Swing リリースと互換ではなくなる予定です。
52:デフォルトの名無しさん
09/12/24 20:16:59
JButtonでボタンをクリックすると、あらかじめ登録しておいた内容を実行しますが
だれが、あらかじめ登録していた内容を呼び出すのですか?
53:デフォルトの名無しさん
09/12/24 20:41:17
>>52
どういう内容が知りたいのか図りかねるが
取り敢えずEDTと答えておこう。
54:デフォルトの名無しさん
09/12/24 20:41:56
>>52
JButtonの中の人
厳密にいえばAbstractButton#fireActionPerformed
その呼び元はDefaultButtonModel#setPressed
ButtonUIの中の人がマウスリスナかなんかを使ってマウスの動きを見てsetPressedを呼ぶ
55:52
09/12/24 20:46:07
>>53
単純に誰が呼び出しているか知りたいだけで、
とくに意味はありません
thx
56:デフォルトの名無しさん
09/12/24 21:43:01
IDEでプロファイラ動かすと、Swingアプリの見えないとこでうごめいている
小人さんスレッドがたくさん観察できるよ
※ コンソールからスレッドダンプでもおk
57:デフォルトの名無しさん
09/12/25 01:41:34
イベントとかコールバックとか、
たしかに初めのうちは分かりにくい仕組みではあるよな
58:デフォルトの名無しさん
09/12/25 11:53:30
各画面間の変数アクセスの最良の方法は何でしょう?
画面作成時のコンストラクタで親画面や操作したい画面を渡す?
画面をグローバル(public static)にする。
なんかstritsみたいにこれで行こうフレームワークはないですかね?
59:デフォルトの名無しさん
09/12/25 13:00:35
MVCで設計を見直せばOKでは。
ControllerにViewとModelぶらさげて、
Viewから親画面と子画面をたどり
Modelから親データと子データをたどれば
画面間で変数アクセスできなくても無問題。
Webアプリとやらの「自称MVC」とはたぶん違うので注意。
60:デフォルトの名無しさん
09/12/25 13:27:00
今のところこれで行こう的なフレームワークとかってないんですかね?
もしくはそんな動向の噂とか…
なるべく先をにらんだ設計にしたいもので
61:デフォルトの名無しさん
09/12/25 13:42:32
ラベル、ボタン、チェックボックスなどをD&Dして表示位置を変更したいのですが、
JRE、サーとパーティのライブラリ問わずに、適した便利なクラス(マウスリスナー?)知っていたら教えてください。
62:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/12/25 17:39:53
アプレットでブラウザの×ボタンを押して終了したときに、そのイベントを拾うことっててきますでしょうか?
64:デフォルトの名無しさん
09/12/25 19:01:25
│A.. B
─┼──
.a │
.b │
Jtableの質問です
上記のような縦列表を作りたいのですがどうすれば良いのでしょうか
表の空欄には数値データを入れて計算等が出来るようにしたいと思っています
65:デフォルトの名無しさん
09/12/25 19:16:09
>>63
destroy()メソッドが呼ばれたときに中でメッセージを表示したりは
できるけど、閉じるのを防ぐことは出来ないと思う。
66:デフォルトの名無しさん
09/12/26 10:49:36
>>64
new JTable(3,3)
67:64
09/12/26 12:04:16
説明不足で申し訳ありません
列ABにString[]、行abにString[][]を使って
JTable table = new JTable(String[][],String[])としたのですが、
String[][]を使ったために空セルにInt型のデータを入れられません
どうすれば列AB行abを残したまま空セルに数値データを入れられるのでしょうか
68:デフォルトの名無しさん
09/12/26 12:08:11
String.valueOfで文字列化するというのは?
69:デフォルトの名無しさん
09/12/26 12:54:57
表計算ソフトのようなテーブルを作るなら、
セルレンダラーやセルエディタを駆使しないと難しいよ。
70:64
09/12/26 13:33:55
>>68
>>69
ひとまずチャレンジしてみます
ありがとうございます
71:デフォルトの名無しさん
09/12/26 14:07:03
さがせばスプレッドシートのライブラリあるけど?
72:デフォルトの名無しさん
09/12/28 12:39:08
JScrollPaneの中でJViewportがどの様に動いているか研究しているのですが、
スクロールバーをクリックした後に、JScrollPaneのどのメソッドが呼び出されているのかわかりません
どなたか教えてください
73:デフォルトの名無しさん
09/12/28 15:56:07
スクロールバーをクリックすると、JScrollBarが持ってるBoundedRangeModelのsetValueが呼ばれる
それによってそのBoundedRangeModelに登録されたChangeListenerが起動する
BasicScrollPaneUIがここにChangeListenerを登録していて、その中でJViewport#setViewPositionを呼んで表示範囲を調節している
JScrollPaneはJViewportとJScrollBarとScrollPaneUIを管理しているだけ
74:デフォルトの名無しさん
09/12/29 10:08:01
一般的なダイアログみたいに右下にボタン配置したいんだけど、どういった風にレイアウト組むのが自然?
75:72
09/12/29 11:39:40
>>73
ありがとうございます
76:デフォルトの名無しさん
09/12/29 11:48:24
tes
77:デフォルトの名無しさん
09/12/29 16:12:26
BorderLayoutのPAGE_ENDに置いたBorderLayoutのLINE_ENDに置いたGridLayoutにボタンを置くのが俺流
78:デフォルトの名無しさん
09/12/29 16:35:53
GridBagConstraints.SOUTHEAST でええやん
79:デフォルトの名無しさん
09/12/30 00:03:27
JSliderでツマミのマウスドラッグにより変更された際、ChangeListenerのの中で
((JSlider)e.getSource()).setValue(0);
とかやっても、内部的な値は0にされるのですが、ツマミの位置がドラッグされた場所になってしまい
整合性がなくなってしまいます。これを防いでツマミも0の位置に合わせるにはどうすればいいでしょうか?
80:デフォルトの名無しさん
09/12/30 00:08:36
SwingUtilities.invokeLater
81:デフォルトの名無しさん
09/12/30 00:09:19
あと、e.getSource()とかやめた方がいい
82:デフォルトの名無しさん
09/12/30 01:22:26
SwingUtilitiesよりEventQueueを使ったほうがいい
83:デフォルトの名無しさん
09/12/30 01:22:52
ありがとうございます。
>>80
なんか振動?みたいな動きをしましたが、結局何も解決しませんでした。
>>81
なんでです?調べるキーワードも分からなかったんですが
84:デフォルトの名無しさん
09/12/30 02:10:06
>83
たぶん振動するのは
1.スライダーが動く
2.スライダーの値が0になる
3.マウスがスライダーの上にあるのでスライダーが動く
これが繰り返されてるんだと思う。
スライダーをドラッグしたときどうしたいかがよくわからない、もう少し詳しく話してほしい
85:デフォルトの名無しさん
09/12/30 06:06:09
なんでそんな不便なUIをおつくりなのか、状況が把握できていないので、確実に悪とはいえませんが、、
Swingは、スレッドセーフではないので、操作するときは、invokeLaterは、ほぼ必須です。
ちなみに、invokeLaterは、SwingUtilitiesでもEventQueueでも一緒ですね。
スライダーがかたかたいうのは、
スライダーに値をセットする前に、
マウスをはなした事にするイベントを、
擬似的に発生させれば回避できるかと思います。
86:デフォルトの名無しさん
09/12/30 06:07:13
こんな感じで、スレッドが値と表示値を破壊しないようにできます。
if (EventQueue.isDispatchThread()) {
SwingUtilities.invokeAndWait(runnable);
}else {
SwingUtilities.invokeLater(runnable);
}
87:デフォルトの名無しさん
09/12/30 06:09:48
e.getSource()は、ソースを見てもどのスライダーなのか、把握できないので、お勧めしません。
JSlider jSliderXXXXXなどと、パネル(フレームでも)のメンバー変数として、準備し、
そちらへアクセスしましょう。
88:デフォルトの名無しさん
09/12/30 06:14:15
せめて、e.getSource()の使い道はこれくらいですかね。
if(e.getSource() == jSliderValueA) {
jSliderValueA.hoge();
}eles if(e.getSource() == jButtonX) {
jButtonX.setXXX();
}
89:デフォルトの名無しさん
09/12/30 10:06:54
JSlider#getValueIsAdjusting()の説明は読んだか?
90:デフォルトの名無しさん
09/12/30 13:36:15
JSliderの値を反映させないようにってことなら、MouseListener.mouseReleased()でsetValueすればいいんじゃない?
91:デフォルトの名無しさん
09/12/30 17:13:53
>>87
でももし、明らかな場合はいいよね?ローカル変数にコンポーネントのインスタンス作っては
無名リスナークラスを設定しまくってるから、数十行の間に全ておさまってるんだけど・・・
92:デフォルトの名無しさん
09/12/30 20:19:26
コンストラクタで渡すのが理想だけど、無名クラスならこういう風にすれば?
final JSlider target = slider;
slider.add○○Listener(new ○○Listener(){
public void ○○(○○Event e){ target.・・・; }});
>85
SwingUtilitiesはEventQueueのカバーメソッドなのでなるべくEventQueueを使うように、とどっかに書いてあった
93:デフォルトの名無しさん
09/12/30 20:50:18
>>85
やっぱり不便ですね。皆さんありがとうございました。
94:デフォルトの名無しさん
09/12/30 22:43:21
>なるべくEventQueueを使うように
これswingの実装を知ってる必要があるんじゃね?
95:デフォルトの名無しさん
09/12/31 00:13:30
staticメソッド呼ぶだけだって。
EventQueueのカスタム化も大した労力ではないが。
96:デフォルトの名無しさん
09/12/31 10:51:30
TimerQueueがpublicなら・・・
97:デフォルトの名無しさん
09/12/31 11:57:09
現在JTextAreaで入力を行っていて、入力時のイベントをDocumentListenerで受け取っているんですが、
漢字などの変換決定時に同じ文字のRemoveイベントとInsertイベントが飛んできてしまいます。
例えば"ねこ"を"猫"に変換するときに
INSERT ねこ
[変換する]
REMOVE ねこ
INSERT 猫
[変換決定]
REMOVE 猫
INSERT 猫
まぁ、動作としては正しいのでしょうが、こちらのプログラムの仕様上どうしても最後の重複した猫が
大きな無駄になってしまうので、なんとか変換決定イベントを知りたいのです。
もちろんRemoveイベントも受け取らなくてはならないのでRemoveを無視すれば?というわけにはいきません・・・。
キーイベントかなんかで頑張るしかないのでしょうか?(バグが出そうですが)
98:デフォルトの名無しさん
09/12/31 15:12:59
InputMethodListener使ってInputMethodEventを見張る。
イベントのgetText()やgetCommittedCharacterCount()の長さを
デバッグ文で観察しつつ、いろいろなかな漢字変換操作を試してみよう。
確定した瞬間をとらえる判定式が、おのずと導けると思う。
細かいことは忘れた。
99:デフォルトの名無しさん
09/12/31 15:31:52
普通にprocessEvent辺りだと思うんだが何でそんな面倒に考えるの?
100:デフォルトの名無しさん
10/01/01 00:43:13
なんかややこしそうなので妥協します・・・
ありがとうございました
101:デフォルトの名無しさん
10/01/01 02:57:20
上限4文字Maxの都道府県入力フィールドで
「わかやまけん」とか読みを入力するときだけリミッターを外すとか
みんなしてないのかな?
102:デフォルトの名無しさん
10/01/01 03:02:32
都道府県入力フィールドに入力制限なんてつけないもの・・・
表記ゆれが怖いからコンボボックスじゃない?普通
103:デフォルトの名無しさん
10/01/01 03:47:10
ある程度出来てから調整したほうがいいよ。
たぶん一から作り直しになるだろうけど、frameworkとかlibrary化するってのはそういうものだと諦めたほうがいいだろう。
その変換で無駄な感じとは思っていても、たいていは思ってたほどコストでもないからそのまま逝っちゃうってのがおおいけど。
104:デフォルトの名無しさん
10/01/01 04:24:47
文字一つごとに膨大な計算をするのでフォントが複雑だと体感できるほどに遅くなることがあるんですよね。
入力中もリアルタイムで見た目を更新するので、うひゃ~なんですけど、時間があればやります。ありがとうございました
105:デフォルトの名無しさん
10/01/04 13:20:12
同じデータを用いて2つのテーブルを作りたいのですが、
1つのフレームに複数のテーブルを設置する事は出来るのでしょうか?
また、フレームを2つ作った場合、片方のテーブルのデータを変更した時に
もう片方のデータも同時に自動で変更するという事は出来るのでしょうか?
106:デフォルトの名無しさん
10/01/04 14:01:37
>105
同じデータを使ってTableModelを作ればいいだろう
JTable自体は二つ、TableModelを共通のものとかにすれば自然とそうなるんじゃないか?
107:ウォシュレットのアームめがけて排便する俺 ◆06NY4sFIG.
10/01/04 20:33:06
>>105
JavaAPIのJavadocからもリンク張られてるけど、
URLリンク(java.sun.com)
あたりも読んでみては。
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:デフォルトの名無しさん
10/01/07 20:34:19
ID、パスワード用のテキストボックスがメインのログイン画面があり、
htmlみたいにデザインを変更したいとの要求が上がっています。
Swingのhtml的デザインってどこまでできるのでしょうか?
109:デフォルトの名無しさん
10/01/08 11:33:11
>>108
HTMLを使ったSwingコンポーネントのレイアウトは無理。
Swingの各種LayoutManagerのレイアウト機能はHTMLやCSSよりはるかに優秀。
リキッドデザインとかお手の物。CSSハックとかバカバカしくなって、戻れなくなるよ。
110:デフォルトの名無しさん
10/01/08 11:44:16
htmlはcellも少ないしテーブルでいいのかなって思うけど何がダメなの?
111:デフォルトの名無しさん
10/01/08 12:36:16
だめなとこなんかどこもないよー
でもswingのhtmlがレイアウトできるのはjavax.swing.text.Viewであって
swingコンポーネント(JComponent)ではないんだ
レイアウト周りのAPIは結構似てるけど。
112:デフォルトの名無しさん
10/01/08 12:54:59
108です。
アドバイスありがとうございます。
cgiからアプレットに移行したシステムで、cgiがログイン画面をhtmlで変更できますよ、としていたので、
そのままの要求がアプレットにも上がってきた形になってます。
イメージとしては、表示したいhtmlの内容を設定ファイルに書いておき、
それをロードして、そのレイアウトでアプレットの画面を表示することをしたいです。
つまり、アプリ改修なしで好きなタイミングで好き勝手にデザイン変更することが求められ、
htmlに慣れているので、html以外のデザイン変更方法は受け付けない、というのが要求です。
凝ったことはしない+入力部品はID、パスワードだけで、増減はなしです。
Swingに取り込むときの設計イメージがわきません。アドバイスいただければと思います。
113:デフォルトの名無しさん
10/01/08 12:56:51
>>112
文がおかしかったので、
cgiがログイン画面をhtmlで変更できますよ
↓
htmlでできているのでログイン画面を自由にで変更できますよ
114:デフォルトの名無しさん
10/01/08 13:07:47
それでいくらくれるんですか?
115:デフォルトの名無しさん
10/01/08 13:11:30
DQNはweb何とかだけやってればいいのかなって思うよ。やっぱり改めてそう思った。
116:デフォルトの名無しさん
10/01/08 13:14:25
そういえばJWebPaneってJava7に入るのかな。
>>112
もしその機能が本当に重要なのであれば、
ログイン画面はApplet化しないでウェブブラウザに任せる、つまり
htmlのままおいておくべきだとおもうけど。
117:デフォルトの名無しさん
10/01/08 14:58:19
↓こういう取り組みもあるけどね。
URLリンク(ikemen.googlepages.com)
でもなー、客のレベルも相当アレそうで先が思いやられるので、
難癖付けて断るのがベストだと思う。
118:デフォルトの名無しさん
10/01/08 15:33:54
>>117
うおおお、これはすごいですね。
イメージが付いてきました。
119:デフォルトの名無しさん
10/01/08 19:32:01
こういうDQNってさ、なにげなく白い奴のしゃぶりをやっちゃって、もうフィックスしちゃってんだろうなと思った。
120:デフォルトの名無しさん
10/01/08 19:39:10
狂牛病に取り付かれたスポンジ脳と同じで、脳味噌スカスカって感じはするよね。
121:デフォルトの名無しさん
10/01/08 19:45:08
うおおお、
122:デフォルトの名無しさん
10/01/11 02:01:21
仕事で飯喰うなら、こんな所に丸投げするなよと思う。
そのうちhtmlをswingになんてアフォフレームワークを売り物にしてくる業者が出て来たら(ry
123:デフォルトの名無しさん
10/01/12 11:59:50
>>122
仕事増えるならいいじゃん。
仕事ください
124:デフォルトの名無しさん
10/01/12 23:52:11
JTextComponentのサブクラスは文字を表示することができますが、
文字列の座標情報?などはどうやって管理しているのでしょうか?
JTextComponentはDocumentインターフェイスに依存しているところまではわかるのですが、
そのあとがイマイチわかりません
125:デフォルトの名無しさん
10/01/13 07:44:57
何をしたいの?
解析したいだけならデバックすれば?
126:デフォルトの名無しさん
10/01/13 11:26:39
座標はViewが管理してます
ViewFactoryにDocumentのElementを渡して作ってもらいます
127:124
10/01/13 21:09:05
>>126
確かに、viewで管理しているみたいですね(さっき、軽く読みました)
ところで、どうやって文字を表示しているんですか?
java.awt.graphicsは使っていないみたいなんですが
128:デフォルトの名無しさん
10/01/14 10:32:08
なんかデジャヴが・・・ 前にJTableについて訊いてた人と一緒? まぁどっちでもいいけど
JButtonとかJTableとかJTextComponentとかSwingにあらかじめ用意されてるコンポーネントはみんな、
自分では描かずにButtonUIとかTableUIとかTextUIとかに処理を委譲している
だからJButtonとかJTableとかJTextComponentとかの方には表示関係のコードやマウス・キー処理のコードはない
ButtonUIとかTableUIとかTextUIとかの方にはルック&フィールごとに異なったサブクラスがあって(MetalButtonUI,等)、
それらがルック&フィールごとに異なった内容を表示し、ルック&フィールごとに異なったマウス・キー処理をしている
見るならそっち側
129:デフォルトの名無しさん
10/01/14 10:39:38
>127
View#paint(Graphics g,Shape allocation)ってあるよな?
ちなみにTextUIってのは単なるViewFactoryだ。
130:デフォルトの名無しさん
10/01/14 10:41:49
すまん。「BasicTextUIはTextUIを継承したViewFactory」の間違いだ。
131:デフォルトの名無しさん
10/01/14 22:30:28
>>128-129
ありがとうございます
132:デフォルトの名無しさん
10/01/18 19:29:12
JPanelで、paintComponent(Graphics g) をオーバーライドして描画を行う際
描画範囲がJPanelのサイズを超えた場合、自動でJPanelのサイズを拡大するには
どうすればよいですか?
133:デフォルトの名無しさん
10/01/18 19:33:46
getPreferredSizeもオーバーライドして、描画範囲が超えないようなサイズを計算して返す
134:デフォルトの名無しさん
10/01/19 08:00:54
getPreferredSizeに頼るとほとんどsetSizeが無効になりますよね?
setSizeでセットしたサイズ内で収まるようにするプログラムしたいときはnullレイアウトしかないのでしょうか。
135:デフォルトの名無しさん
10/01/19 08:36:51
getPreferredSizeがsetSizeしたものより大きな値を返さないようにするとか。
136:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/01/19 10:34:24
いや違うんです。
なんか誤解してるようですが、newしたときとかでその初期セットサイズ setSize(a,b)のまま固定しておきたくて、
基本的にサイズのは変更を許さず、resizeとかのレイアウト変更によって初期セットサイズを変更されたくないって意味です。
場合によっては縮小のときだけは許すが、拡大はmax sizeはsetSize(a,b)まで。
そういうときはnullレイアウトしかないのでしょうか。
レイアウトマネージャ使うとsetSizeの設定は実質意味をなしませんよね。
138:デフォルトの名無しさん
10/01/19 10:43:42
paintComponentでやるしょりか?
139:デフォルトの名無しさん
10/01/19 10:52:20
getPreferreSize()だろうがsetSize()だろうが実際はフレームと配下のコンポーネントのバランスをLMが勝手にとるから
AWTならnullレイアウトでいいけどSwingだと修飾がJava2Dだからなぁ。
ゲームだとGUI自前だしCanvasのサイズを強制したいからnullレイアウト使うがね。
140:デフォルトの名無しさん
10/01/19 11:04:06
>>138
あまり分かってないようだけど、setSizeの質問ではswingはまったく関係ないよ。
141:デフォルトの名無しさん
10/01/19 18:29:29
>>140
描画中にリサイズしたらイベントキューが理論的に順番めちゃくちゃにならない?
142:デフォルトの名無しさん
10/01/20 19:04:26
JComponentのpaint(Graphics g)とprint(Graphics g)ってどう違うの?
143:デフォルトの名無しさん
10/01/20 21:02:39
printって印刷だぜ?
144:デフォルトの名無しさん
10/01/25 23:15:21
JTabbedPaneにadd("タイトル", JTableのインスタンス)を5回しています
JTableの列幅に変更があった場合、addした5つ全ての列幅を変更したいと考えています
どのように、すればよいのでしょうか?
145:デフォルトの名無しさん
10/01/26 11:01:06
幅だけじゃなくて列の属性が全部同じなら、全部のJTableで1個のTableColumnModelを共有する
146:デフォルトの名無しさん
10/01/26 20:47:58
>>145
thx
147:デフォルトの名無しさん
10/01/27 06:05:30
Swingでゲームを作る人がいないのはなぜですか?
148:デフォルトの名無しさん
10/01/27 06:12:28
ゲームを作るのに便利なライブラリ (画像効果など) とか手厚く用意されてるわけじゃないから。
149:デフォルトの名無しさん
10/01/28 16:49:41
fillRectで塗った色はprintComponentで再描写しても消えないの?
150:デフォルトの名無しさん
10/01/29 01:27:41
コンポーネントの描画に関して、何か誤解をしているように見える。
151:デフォルトの名無しさん
10/02/05 22:22:26
NetBeansみたいなフォームデザイナってビジネスで使えるの?
IDEのバージョンアップでデザイナそのものが使えなくなるかもとか考えると怖い。
152:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/02/06 20:46:47
手書きなの?
1.6からだけど、手書きならgroup layoutとかいいよ。
grid bagのさらにパワーアップしたレイアウトだからそのブルダークラスとやらと同じ感じで設定できるだろう。
154:デフォルトの名無しさん
10/02/06 23:51:42
JOptionPane の「OK」「キャンセル」みたいなデフォルトのラベルリソースってどこかから取れない?
JOptionPane でキャンセルボタンにデフォルトのフォーカスを置きたいのでユーティリティメソッド
使わないで書いていったんだけど、ボタン名を自分で指定しなきゃいけないのかな。
155:デフォルトの名無しさん
10/02/07 00:26:41
うちMacなんでAqua LaFのしか見当たらないんだけど、
com/apple/laf/resources/aqua.properties (他数言語)に
OptionPane.yesButtonText=Yes
OptionPane.okButtonText=OK
などと書いてあるなあ。
156:デフォルトの名無しさん
10/02/07 00:32:52
javax.swing.UIManager.getString(キー)
で取れそう。
ところで、
URLリンク(sites.google.com)
なんて見つけた。
157:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/02/07 11:03:35
JPopupMenuにたくさんのメニュー項目を入れると、メニュー項目が画面の縦幅に入りきらなくなります。
自動的に上下にスクロールとか、2列にするとかの仕組みはありませんでしょうか。
159:デフォルトの名無しさん
10/02/07 11:51:22
>>158
こんなの見つけた。動作は見てない。
URLリンク(www.beginner-java-tutorial.com)
160:デフォルトの名無しさん
10/02/07 15:17:17
マカってホント情報弱者だな。
161:デフォルトの名無しさん
10/02/07 15:41:54
>>160
どこの誤爆?
162:デフォルトの名無しさん
10/02/07 18:34:50
>>155-157
ありがそうございます ^^
163:デフォルトの名無しさん
10/02/07 18:38:02
AWTUtilities#setWindowOpacity()
で透明度を設定すると、3回に1回くらい一瞬だけ真っ黒になるのだけれど、これはグラフィック性能がクソだからなのでしょうか?
164:デフォルトの名無しさん
10/02/07 19:16:28
>>161
たぶん、PCニュース板あたりじゃない?
あそこではMacを、>>160みたいに馬鹿にしているし
165:デフォルトの名無しさん
10/02/08 00:32:54
XP しか使ってないんだけど Windows Look and Feel って Vista や 7 だと違うの?
166:デフォルトの名無しさん
10/02/08 14:26:22
マカってホントに情報弱者だな。
167:デフォルトの名無しさん
10/02/10 10:32:30
JTableでセルごとに色を変えたいのですが、
どのように処理すればいいのでしょうか?
行ごと、列ごとは出来ましたが、
各セルごとができません。
ご存知の方がおられましたら、
ご教示していただけませんでしょうか?
168:デフォルトの名無しさん
10/02/10 10:43:53
CellRendererじゃねーの?
169:デフォルトの名無しさん
10/02/10 10:45:50
もっとちゃんとご教示していただけませんでしょうか?
170:デフォルトの名無しさん
10/02/10 11:05:04
釣りか
171:デフォルトの名無しさん
10/02/10 11:09:54
分からないなら答えなくても結構ですよ
172:デフォルトの名無しさん
10/02/10 11:13:00
URLリンク(java.sun.com)
ColorRenderer というクラスがあるから見てみ。
173:デフォルトの名無しさん
10/02/10 11:36:45
DefaultTableCellRenderer のサブクラスを作り、getTableCellRenderComponent() (だったかな?) を
オーバーライドし、スーパークラスの同名メソッドを読んだあと this
めんどくせ
174:デフォルトの名無しさん
10/02/10 12:07:42
C#にするからもういいや
175:デフォルトの名無しさん
10/02/10 15:46:45
>>170
このスレ、質問者になりすまして回答してる人がいるね。
176:デフォルトの名無しさん
10/02/10 15:51:16
この板ではよくあること
177:デフォルトの名無しさん
10/02/10 21:46:58
というか最近さらに増えた。
ニートが増えたんだろうな
178:デフォルトの名無しさん
10/02/10 21:55:21
今日はニートの日だったな。
179:デフォルトの名無しさん
10/02/10 22:27:48
卒論提出前の学部生だと予想。
180:デフォルトの名無しさん
10/02/11 09:43:02
GUI部分をnetbeansのGUIエディタで作成して,それ以外はjrubyで作る
みたいなことを簡単にできる方法ってありますか?
181:デフォルトの名無しさん
10/02/11 09:46:28
イベントリスナで jruby 呼べば良いだけじゃん。
そういうフレームワークちょいちょいと作れば?
182:デフォルトの名無しさん
10/02/11 14:21:03
SwingのEDTでスクリプトの実行って実行モデル的にどうなの?
リスナ上でやるには十分遅い処理じゃね?
183:デフォルトの名無しさん
10/02/11 21:52:10
そんな重い処理ならスクリプトなんか使うなよ。
184:デフォルトの名無しさん
10/02/12 03:11:41
ruby廚は巣に帰れよ。
スレリンク(tech板)
Ruby 初心者スレッド Part 34
スレリンク(tech板)
Rubyについて Part 39
スレリンク(tech板)
Rubyの宿題教えてください。2限目
スレリンク(tech板)
愛国Ruby
スレリンク(tech板)
魁け! Ruby 1.9.X
スレリンク(tech板)
Rubyについて(アンチ専用) Part004
スレリンク(tech板)
【ActiveScript】RubyをWindowsで使うスレ【GUI】
スレリンク(tech板)
Ruby最高や!
スレリンク(tech板)
Jython、Groovy、JRuby - どれが一番効率的?
185:デフォルトの名無しさん
10/02/18 12:58:02
で、おまいら GUI コンポーネント組み立てて行く時は上位の JPanel あたりから組み立てる派か
末端の JButton, JTextField あたりから組み立てる派かどっちよ?
186:デフォルトの名無しさん
10/02/18 15:03:13
iTextの質問ってここでよい?
187:デフォルトの名無しさん
10/02/20 11:12:02
iTextの質問ってここでよい? age
188:デフォルトの名無しさん
10/02/20 11:38:01
質問うp
189:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/02/20 22:53:51
SwingかJava2Dの使い方間違えてるかVRAMのデータが使えない状態にあるんだろう。
とりあえずjavaのオプションからDirectXとOpenGLのバージョンとソースすべてうp。
191:デフォルトの名無しさん
10/02/20 23:46:18
>>190
問題のアプリは主に jEdit (URLリンク(www.jedit.org)<)
DirectX のバージョンは 9.0c です。
javaw.exe 起動時に -Dsun.java2d.opengl=true すればこの問題は起こらないんですが、
ときどき他のウィンドウと干渉してゴミが表示されたりします。これを回避するために
できれば OpenGL は使わないで済ませたいのですが、方法が見つからない状態です。
192:デフォルトの名無しさん
10/02/21 15:30:51
ソフト使うだけは板違い。
193:デフォルトの名無しさん
10/02/21 18:16:58
>>189
これ?
URLリンク(bugs.sun.com)
取り敢えず他のオプションも試してみれば。
URLリンク(www.ea.u-tokai.ac.jp)
OpenGLはOpenGLで問題あるみたいだけど。
URLリンク(bugs.sun.com)
とか。
何にしてもスレ違いですね。
194:デフォルトの名無しさん
10/02/23 00:20:02
>>193
ありがとうございます。
リンクしていただいたバグは VRAM 上のイメージとメインメモリ上のイメージとで
動作が異なると言うことで、速度低下だけが問題になっている >189 の問題とは違うもの
みたいです。
translaccel と ddforcevram がそれっぽいなぁと思って試してみたんですが、やっぱり
しばらく使ってると問題が発生してしまいました。
ソースコードに問題があるのなら修正に挑戦する気はあるのですが、再現させる手段が
さっぱりなのでどこに手を付けていいものかさっぱりな状態です。
他に同じ症状の情報が見当たらないので、やっぱり環境に大きく依存する問題なのかも
しれません。
195:デフォルトの名無しさん
10/02/23 12:33:28
beansbinding\u306eObservableListImpl.fireElementChanged(int)
ってどこからも呼ばれないの?
196:デフォルトの名無しさん
10/02/23 12:35:00
修正
beansbinding の org.jdesktop.observablecollections.ObservableCollections.ObservableListImpl.fireElementChanged(int)
197:デフォルトの名無しさん
10/02/23 20:15:56
PCの構成とドライバのバージョンうp
198:デフォルトの名無しさん
10/02/28 04:50:07
まじでおまえらSwingで何つくってんだ?
ゲームのマップエディタ適当にSwingで適当につくろうとして久々触ったけど
相変わらず糞だなぁ、、いつまともになるんだろこれ。。
199:デフォルトの名無しさん
10/02/28 06:00:24
どこが糞なのか何がまともなのか理想を語りたいらしい。
200:デフォルトの名無しさん
10/02/28 06:27:00
こんな夜中に語りだすのか?…
201:デフォルトの名無しさん
10/02/28 09:15:14
糞なら使うなよ
適正な言語も選べないのか
202:デフォルトの名無しさん
10/02/28 21:58:51
マップエディタの実装が糞なだけでswing関係なかったりしてw
cとかで組めるならjni使えばいい話し出し。
203:デフォルトの名無しさん
10/02/28 22:43:23
ここでjni出してくるのはどうかと思う
204:デフォルトの名無しさん
10/03/03 02:33:21
javaからwin32apiは使えないからな。
205:デフォルトの名無しさん
10/03/03 03:32:54
つかえまsが
206:デフォルトの名無しさん
10/03/03 04:57:50
Swing に対する唯一の不満は、Win32 用の L&F が
ネイティブのそれと微妙に違っててイラっとすることくらいなんだけど
操作感覚にダイレクトに突き刺さってくるので困る。
SWT の作りは大嫌いだし(いまどきイベントループとか)
全般的な命名も好きになれないし(Shell って名前をアレに使うなよ)
体感速度に差があるとも思えないんだけど、
この部分だけが引っかかってしまう。
自分で作るんなら Swing なんだが
使うんだったら SWT みたいな。
207:デフォルトの名無しさん
10/03/03 11:35:13
そういうヲレクラス作ればいいだけじゃ?
208:デフォルトの名無しさん
10/03/03 13:39:34
J/DirectなんてJ#にすら見捨てられたよな
209:デフォルトの名無しさん
10/03/03 14:01:08
Browser と半透明ウィンドウのためだけに SWT 使うとる。
210:デフォルトの名無しさん
10/03/03 22:19:17
AWTUtilだっけ?あれとJDICでよくね?
211:デフォルトの名無しさん
10/03/03 23:08:39
JWebPaneってどうなったん? WebKitつかってるとかいう
212:デフォルトの名無しさん
10/03/04 02:13:19
SwingWTという、SWTをSwing APIでラップしたものがある。
URLリンク(swingwt.sourceforge.net)
2005年頃に使ったときは、微妙な互換性不足が残念だった覚えがあるが、
今ならよくなってるかもしれない。試してみたら?
213:デフォルトの名無しさん
10/03/05 17:08:54
>>206
いまどきイベントループ、って
どんな言語でもイベントループなんじゃないの?
214:デフォルトの名無しさん
10/03/05 19:11:48
たしかにイベントループを表に出していない Swing の方が異端だな。
215:デフォルトの名無しさん
10/03/06 09:11:25
どうもイベント廻りの挙動がおかしいと調べてみたら呼び出し先のライブラリで
イベントループしてました、なんて事にさっきまでハマってたところ。
元々イベントループなんざシングルタスク言語やノンプリエンプティブな環境向けの手法だお。
Java のようなマルチスレッド環境では使わないに越したことはない。green thread 時代に
yield() 駆使してた悪夢がよみがえる。
216:デフォルトの名無しさん
10/03/06 21:58:42
最近、日曜プログラムでSwing始めました。
仕事ではCOBOLとかC言語が多かったのでJavaはかじった程度の知識しかありません。
ところで、コンポーネントのリスナークラスとか追加するときって、無名クラス使うのが
一般的なんですか?(本とか読むとそれが多いと書いてあったので)
個人的には画面系のプログラムも作ったこともなかったので、よく分からないんですが、
コンポーネントの生成や属性の設定の中に、ロジックが入ってくる様に思えて
なんか違和感を感じるんで、今は無意味でもクラスに名前を書いて内部クラスにしてます。
でも、無名内部クラスにするが一般的なら、それになれとかないとなぁと思い質問しました。
217:デフォルトの名無しさん
10/03/06 22:03:15
画面系を作ったこともないんですよね?
どういう違和感を感じるんですか。
218:デフォルトの名無しさん
10/03/06 22:07:05
>>216
アプリケーションと画面を同一クラスとして作っていると
そんな感じになってしまうかもしれない。
219:デフォルトの名無しさん
10/03/06 22:13:36
>>217
ちゃんと勉強するとなるとかなり大変なんで初心者・初級者用のgui教本は全てそんなもんですよ。
分離しようとすると結局コード量が多くなるんでもしちゃんとguiやるならIDEないと無理でしょうね。
220:デフォルトの名無しさん
10/03/06 22:14:45
>>216ね。
221:デフォルトの名無しさん
10/03/06 22:40:14
>>216
分かりやすい・自然だと思う方を採用したらいいんじゃないでしょうか。
無名クラスの場合は引数以外に定義された環境の情報にアクセスできるメリットと、
切り分けても命名に困る(~ボタン押したときの処理、以上の名前が思いつかない)
ことが多数なので、私自身は無名クラスで書くことが多いです。
良い名前が思いつかないのであれば、多分分けるべきじゃないと思いますよ。
222:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/03/07 01:00:27
スレリンク(tech板)
文字コード総合スレ part5
スレリンク(tech板)
こんなエディタ・統合開発環境はいやだ 2種類目
224:222
10/03/07 01:10:43
>>223 はは、文字コードスレにいってみます。
225:216
10/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
10/03/07 03:44:09
>>221
221さんが行っているメリットは、無名クラスではなく、内部クラスのメリットだと思います。
一応、外だしの有名クラスにするときも、元のクラスの内部クラスにはして、フィールドとか
までは、利用してます。
結局、無名クラスの場合のメリットとしては
「べつにクラス化しても、結局一ヶ所しかから呼ばれないから意味ない」
「そんなクラスにわざわざ名前つけるのもバカらしい」
「コード見るときに、あっち行ったりこっち行ったりするのも分かりにくい」
のでまとめて書く。ってことかなと思ってます。
(無名クラスの場合のメリットというよりか、外だしにしたクラスのデメリットですが…)
>良い名前が思いつかないのであれば、多分分けるべきじゃないと思いますよ。
命名規則を何となく決めて置けば、まぁ、なんとかしのげます。
MyBtnS11ActionAdapter 見たいなこのボタンのこのリスナーってなクラス名にしてます。
(よい名前かは置いといて…、ってか、BtnS11って、命名なんやねんってツッコミ入りそうですけど)
227:デフォルトの名無しさん
10/03/07 03:53:58
先ずはguiアプリを実際に作ってから半年後にまた考えてみても遅くないでしょうね。
228:デフォルトの名無しさん
10/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
10/03/07 08:44:34
ぐあぁコード間違えた。こうだ。
JButton b1 = new JButton("OK"):
b1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
getSomeLogic().doLogic();
}
});
230:デフォルトの名無しさん
10/03/07 15:49:11
>無名クラスではなく、内部クラスのメリットだと思います。
書いててそう思ったんですが、まあ多分通じると思ってそのままに・・
コンポーネント名+イベント名 な命名しか思いつかない場合、
自分だったら無名内部クラスで片付けてますね。
でもまあその辺りは個人の感覚次第で
何が正しいってわけでもないはず。
(特この件にかんしては明確にどっちが優劣ってのはない。)
「そういう書き方もある」ことを抑えてて、
そういうコード見て面食らう事がないのであれば
別にどっちで書いてもいいと思うんですよ。
vi も Emacs も優れたエディタなんです。
231:216
10/03/07 18:05:59
あぁぁぁぁ。(なんか自分に腹立ってます)
>>230
自分が無知なので広く意見を伺いたく質問したつもりなのに
変な噛みつき方してすみませんでした。
コメント有難うございました。
232:デフォルトの名無しさん
10/03/07 20:35:15
>>226
>良い名前が思いつかないのであれば、多分分けるべきじゃないと思いますよ。
は、名前が思いつくようなクラスは再利用性があるクラスだから、
「名前が思いつくかどうか」自体が、内部クラスにするかどうかの
そこそこ良い基準になるということを言ったんだと思った。
ちょっと思っただけ。
233:デフォルトの名無しさん
10/03/07 21:44:27
やってれば分かるが普通は>>228にいきつく。今のswingはここらで止まってる。
234:デフォルトの名無しさん
10/03/08 08:32:25
>>233
>>228でもいいんだけど、コンポーネントに直接ActionListenerをaddするんじゃなくて、
Action作って使いまわしたほうがマシだと思う。
ひとつのActionを複数のコンポーネントやキーに割り当てたいときとか。
235:デフォルトの名無しさん
10/03/08 23:48:19
サーバサイドしかやったことないと思しき某外資系ITゼネコンのアフォSEが
JAR ファイルの中見て無名内部クラス使いすぎ云々 (品質悪い) と因縁
付けて来た事があったなー。
236:デフォルトの名無しさん
10/03/08 23:52:36
サーバーサイドやっているとね
237:デフォルトの名無しさん
10/03/09 00:04:28
そんなゼネコンと仕事してる時点で質が低いからどうでもいいな。
金が欲しいなら言う事聞くしかないだろ?
238:デフォルトの名無しさん
10/03/09 00:10:36
自分ところが下請けだから下請け前提で読んじゃったんだね君。
239:デフォルトの名無しさん
10/03/09 00:57:47
> ひとつのActionを複数のコンポーネントやキーに割り当てたいときとか。
さすがにそのくらいはやってんじゃなかろうか。
同じことを何度も書くのはそもそもアレだし。
240:デフォルトの名無しさん
10/03/09 15:05:42
ダイアログ表示中に任意のキー押下で任意のアクションを呼び出す方法はあるでしょうか?
241:デフォルトの名無しさん
10/03/09 16:43:51
もしかしてモーダルなダイアログの話?
242:デフォルトの名無しさん
10/03/09 17:46:22
>>241
そうです。
エラーが発生してダイアログを出すときに、スタック情報を適当なpublic static にコピーしておいて、
ダイアログ表示中に隠し機能としてF5を押すと、
コピーしておいたスタック情報をクリップボードに張り付けるということがしたいです。
客から問い合わせがあったときに、簡単に対応したいので。
243:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/03/09 19:35:53
>>243
ありがとうございます。
JOptionPane.getRootFrame()から何とかしてアクションマップを登録して、
JOptionPane.showMessageDialog(…);することはできないでしょうか?
245:デフォルトの名無しさん
10/03/09 19:39:58
JOptionPane の API リファレンスにユーティリティメソッド使わないで
JDialog 参照する方法が載ってるだろう。
246:デフォルトの名無しさん
10/03/10 15:44:20
>>245
JOptionPane.getRootFrame()から何とかして、って書いてあるから答えがかみ合ってないよ。
そんなことは知ってるけどもっと簡単な方法がないかってことだろ。
XXして
JOptionPane.getRootFrame()
で済む方法ってことでしょう。
要はその方法はないってのが正しい返しかな。
247:デフォルトの名無しさん
10/03/10 18:55:30
超絶役に立たないレスだな。
だから JDialog 参照しろという話をしてるわけだが。
248:デフォルトの名無しさん
10/03/11 09:06:33
強引なやり方としては
Toolkitを使って全てのイベントを監視する方法もある。
どのコンポーネントがフォーカスを持っていようと
F5が押されたらスタックトレースをダンプするようにもできると思う。
249:デフォルトの名無しさん
10/03/11 11:01:19
Swingの画面を印刷するにはどうすればよいでしょうか?
ちなみに、スクロールで見えてない部分も含め印刷させることが出来るでしょうか?
WORDの差し込み印刷をSwingでやることになりまして…
250:デフォルトの名無しさん
10/03/11 13:18:00
取ってもアフォな案件だなw
vbaをjavaから呼ぶcom作る輪
251:デフォルトの名無しさん
10/03/11 14:29:22
俺vba苦手だから Apache POI に頼るー。
Apache POI だけはいつも俺の心のアニキ。
252:デフォルトの名無しさん
10/03/11 16:34:54
XML で保存出来るのに今時 POI とかないわ。
253:デフォルトの名無しさん
10/03/11 17:17:17
JEditorPane#getPrintableでRTF文書の印刷とか考えてるならやめとけー。
まずは簡単なWORD文書をディスプレイに描画させてみて、満足いく結果が得られるのか早期に検討すべし。
たぶん Aspose.Words for Java みたいな有料ライブラリが必要になるだろうよ。
>252
XMLなんか差し込み印刷したってしょうがないだろ
254:デフォルトの名無しさん
10/03/11 17:25:41
>>253
Word XML (WordML) 形式の話をしてるんだが、まだ Office が XML で連携できてるって
気付いてない奴って多いんだよな。おまえみたいな。
255:デフォルトの名無しさん
10/03/11 17:43:50
DB 舐めて Word ファイル作るだけにバカみたいな金払わされてる客がいたんで
(レイアウト変更等別料金)、検索結果の XML から XSL で Word ファイル作る
ツール作って XSL の書き方だけ教えてあげたらもの凄く喜ばれた。
んで別のデカい仕事貰った。
256:デフォルトの名無しさん
10/03/11 17:53:46
>254
「Word XML (WordML) 形式の話をしてる」
「WORDの差し込み印刷をSwingでやる」の話じゃなかったんならオレが謝る。
257:デフォルトの名無しさん
10/03/11 17:54:12
もしプロなら人の仕事を奪うのは良くないなと気づかないといけない
258:デフォルトの名無しさん
10/03/11 17:57:02
>>256
Swing から Word XML 出力 & Desktop#print() が思い付かない時点でオ㍗ル
259:デフォルトの名無しさん
10/03/11 18:08:24
>258
重ね重ね申し訳ない。
「Swingの画面を印刷するにはどうすればよい」の話じゃなかったんならオレが謝る。
「スクロールで見えてない部分も含め印刷させる」の話じゃなかったんならオレが謝る。
「Word XML 出力 & Desktop#print()」がSwingなのかスレ違いなのかはオレもよくしらん。
260:デフォルトの名無しさん
10/03/11 18:12:01
バカは黙ってろよ
261:デフォルトの名無しさん
10/03/11 18:18:44
逝ってよし
262:デフォルトの名無しさん
10/03/11 18:19:39
ところで >249 氏はもしかするとWindowsユーザーなのだろうか
263:デフォルトの名無しさん
10/03/11 18:32:57
Wordは最初っからどうでもいいんですが、
結局Swingの画面をjavaのコードだけで印刷って出来ないんですか?
デスクトップの機能を使ってなんとかできないですかね…
Wordの差し込み印刷はバージョンによって動作が違うし、Linuxじゃ動かないのでパスしたいんです。
264:デフォルトの名無しさん
10/03/11 19:50:51
与えられた紙の隅から隅まで自分でお絵かきしたいなら「Java 2D API プログラマーズガイド」の7章を読む
既成コンポーネントやコンテナのprint()がどこまでまじめに印刷に対応してるかはレッツトライ
スクリーンキャプチャがしたいならjava.awt.Robotだ。
265:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/03/11 22:19:15
AWT のスッピン FileDialog なんて久しく使ってないから忘れた。
267:265
10/03/11 22:24:17
ですよねー
ふるーいアプレットのシステムを
ポーティングするお仕事でこの問題が見つかったのですが
事象の起こし方もすごい簡単なのに
調べても調べてもちっとも出てこないので
泣きそうです
HTMLから呼び出すとモリモリなんだけど
アプレットビューワーから呼び出すと起きないのですよ
268:デフォルトの名無しさん
10/03/11 22:35:44
"java.lang.…pData" でまんまググったら出たがこれじゃねーのか。
URLリンク(bugs.sun.com)
269:デフォルトの名無しさん
10/03/11 22:38:29
中身読んだら Java 7 でリサイズした時の話だった。失礼。
270:デフォルトの名無しさん
10/03/12 09:19:25
>>265 を読んだ限りでは、どうもJRE自体のバグっぽいね。
あるいはブラウザとの相性が悪かったか。
実害がないなら放置していいんじゃないかな。
271:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/03/12 15:32:33
RMI-HTTP Tunneling というものがあってだな。
使ったことないけど。
273:デフォルトの名無しさん
10/03/12 16:04:30
>>272
なんすかそれ
274:デフォルトの名無しさん
10/03/12 16:30:26
中身はrmiのままなんだから、http通しても大差ないのにね。
まあ金貰えるなら言う通りに実装してやればおk。
275:デフォルトの名無しさん
10/03/12 16:42:23
単に HTTP にすりゃ良いってだけなら (ファイアウォールでも通すのか?)
SOAP に置き換えりゃ良いんじゃねぇの。
276:デフォルトの名無しさん
10/03/12 17:43:15
>>271
RMIとHTTPってレイヤが違うような…?
277:デフォルトの名無しさん
10/03/12 22:02:48
RMIがいやだからHTTPにしたいって言うのが理解できないんだがまあそんなことはどうでもいい。
Swing関係なくね?
278:デフォルトの名無しさん
10/03/12 22:04:22
RMI か HTTP かで心が Swing してんだろ。
279:265
10/03/13 01:43:58
>>268-270
気にかけていただいてありがとうございます
例外の内容で調べて同じのは出てこなかったけど
「Defaultmodel.なdialogが云々でバグです!」
といったような内容のがBugDataBaseでボロボロ出てくるので
指定しなくてもモーダルだと主張しているFileDialogの
フォーカスの処理とブラウザから呼び出した際の相性に問題があるんだと思います。
(自分でmodalを指定するDialogだと同じ操作をしてもこの問題は起きません)
お客さんには事例を寄せ集めて
「我々のせいじゃないし、どうにもできないので勘弁していただきたい!」
と主張してみることにします。
ありがとうございました。
280:デフォルトの名無しさん
10/03/13 04:32:08
他所に仕事取られる訳だな。物はいい用と思うけどね。せっかくのビジネスチャンスを(ry
281:デフォルトの名無しさん
10/03/14 10:33:40
>>279は月曜日にクソッタレのフニャチンどもにこう言われるはずさ
そんな欠陥のある言語を選択したのはお前の会社のミスだろ?
それにJavaはオープンソースなんだろ?
中追ってお前のところで直せよ
そしたら>>279はExceptionを握りつぶしてこう言ってやるのさ
問題ありませんってね
HAHAHA
282:デフォルトの名無しさん
10/03/14 10:39:45
おまえは書き込む前に一息置いて読み直す癖を付けろ。
283:デフォルトの名無しさん
10/03/15 01:08:29
バグ混入させるぐらいなら、プログラマ辞めればいいのに。
明らかに向いてないというか、能力足りてないだろう。
284:デフォルトの名無しさん
10/03/15 01:40:43
翻訳:極論振りかざすオレカコイイ!
285:デフォルトの名無しさん
10/03/15 03:22:24
バグが混入しないと思ってる時点であほだな
286:デフォルトの名無しさん
10/03/15 04:20:28
優秀なプログラマほどバグが少ない現実。
馬鹿にはプログラミングは向いてないよ。
287:デフォルトの名無しさん
10/03/15 05:29:51
そう自分を責めるな
288:デフォルトの名無しさん
10/03/15 07:44:34
たとえ4秒に1回落ちてもフロントエンドに影響が無いように作れってぐぐるの中の人が言ってた!!(違
289:デフォルトの名無しさん
10/03/15 11:22:12
>>286
いくら優秀でもバグがゼロにはならない。
>>283に従うと、バグを混入させるプログラマは辞めなければならない。
したがって、最終的には全てのプログラマは辞めなければならない。
290:デフォルトの名無しさん
10/03/15 11:49:36
>>283はエンドユーザーだろ
291:デフォルトの名無しさん
10/03/15 14:37:43
ユーザとして使ってるとバグが出るのってホント頭に来るのは事実。
作った香具師出てこいよ。
292:デフォルトの名無しさん
10/03/15 15:05:30
>>291
マ板へどうぞ。
293:デフォルトの名無しさん
10/03/16 20:53:14
やだよ。
あいつら池袋のヤベェ工房から買ったヤニでトんでんだもん。
どうでもいいけど、池袋に溜まってる工房ってだいたい病気持ってるよなw
まじ怖いわw
街中で堂々とコンジローマ自慢してんじゃねえよwくせえw
294:デフォルトの名無しさん
10/03/17 12:17:56
いやだから池袋のヤベェ工房から買ったヤニでトんでる香具師が作ってんだって。
295:デフォルトの名無しさん
10/03/17 19:28:45
でも池袋のガキどもは、本当にヤバい事する時は隠れてやるんじゃね?
そういう現場を生で見たことないし。
だからまだいい方。
三軒茶屋あたりでうろついてるのは、本当にどうにかしてほしい。
あそこは深夜になるとリアル北斗。
296:デフォルトの名無しさん
10/03/17 19:34:13
>>295
マ板でどうぞ。
297:デフォルトの名無しさん
10/03/20 11:10:39
>>294
いまどき香具師って……
298:デフォルトの名無しさん
10/03/20 12:11:20
>>297
たまに使っている人いるよな
死語だけど
299:デフォルトの名無しさん
10/03/20 12:15:45
>>298
元ネタがネットじゃなくて小説だからかな
300:デフォルトの名無しさん
10/03/20 20:38:53
池袋といったらダラーズだよな
301:デフォルトの名無しさん
10/03/20 20:45:23
デュラララカ
302:デフォルトの名無しさん
10/03/21 04:54:29
あらららぎさん
303:デフォルトの名無しさん
10/03/23 09:47:31
Swingで、ドラッグ中のキー入力を取得するにはどうしたらいいでしょうか。
JDesktopPaneを使っていて、JInternalFrame間のDnD中に、アクティブなフレームを
切り替えたいと思っています。
Windowsプラットフォームだと、CTRL-F6で内部フレームが切り替わりますが、
ドラッグ中だと切り替わりません。
304:デフォルトの名無しさん
10/03/23 10:40:52
>>303
まずそのUI設計をやめたら?
305:デフォルトの名無しさん
10/03/23 14:31:09
DnD中にアクティブなウィンドウを切り替える意味は何?
306:デフォルトの名無しさん
10/03/23 14:36:29
下にあるフレームを上に持って来たいんだろ。
307:デフォルトの名無しさん
10/03/23 18:15:39
マウスリリースされたときにlafが勝手にやってくれる動作じゃダメなのか
308:デフォルトの名無しさん
10/03/23 19:00:18
>>303
ExplorerやNautilusのように、ウインドウ内のドロップ対象で動作が変わるのですが、
そのような作りは一般的ではないのでしょうか。
ドロップ元とドロップ先が完全に見える状態にウインドウを並べてドラッグ&ドロップするのでしょうか。
それとも、CLIしか使わないのでわからない、ということでしょうか。
>>305
Windows Explorerでファイルドラッグ開始
→ALT+TABでドラッグ対象ウインドウの非表示部を表に出す
→隠れていた部分のアイコンにドロップ
みたいなことです。
>>307
ドロップされる位置によって動作が変わります。
309:デフォルトの名無しさん
10/03/23 21:13:11
つ nlink
310:デフォルトの名無しさん
10/03/23 22:59:06
Macでもドラッグ中にExposeとかSpacesを使えるけど
あれと似たような感じなのかな。
311:デフォルトの名無しさん
10/03/24 00:14:11
マカって情報弱者だな。
312:デフォルトの名無しさん
10/03/24 00:17:43
おまえってボットなの?
313:デフォルトの名無しさん
10/03/24 00:40:02
九分九厘そうだろう。
314:デフォルトの名無しさん
10/03/24 00:44:35
Mac 使ってるけど
これで来るわけ?
↓
315:デフォルトの名無しさん
10/03/24 01:14:11
マカって情報弱者だな。
316:デフォルトの名無しさん
10/03/24 01:24:17
goto 311;
317:デフォルトの名無しさん
10/03/24 01:27:56
きっちり一時間で巡回してんのかw
318:デフォルトの名無しさん
10/03/24 02:14:30
呪文を唱えるとボットが召喚できると聞いてry
マックって旨いよな!
319:デフォルトの名無しさん
10/03/24 03:14:11
マカって情報弱者だな。
320:デフォルトの名無しさん
10/03/24 09:05:11
>>319
分秒合わせてくるとか、何コレコワイwwwww
321:デフォルトの名無しさん
10/03/24 11:45:52
こいつ自作板にも出るし何年も前からpc11鯖に寄生してるボットだろ
322:デフォルトの名無しさん
10/03/24 14:50:56
eclipseのプラグインで使いやすいお勧めのSwingサポートプラグインはVisual Swing for Eclipseになるでしょうか?
323:デフォルトの名無しさん
10/03/25 11:27:37
Swing Application Frameworkってどう思います?
324:デフォルトの名無しさん
10/03/25 11:34:09
ok
325:デフォルトの名無しさん
10/03/25 11:44:49
>>323
フレームワークというかライブラリ?
326:デフォルトの名無しさん
10/03/25 11:51:42
>>322
Visual Swing for Eclipse かな
327:デフォルトの名無しさん
10/03/25 13:25:28
いや Visual Swing for Eclipse でしょ。
328:デフォルトの名無しさん
10/03/25 14:03:10
JDK1.5で画面をデフォルトプリンタで印刷したいんですけど、print()の引数のGraphicsってどうやって取得すればいいのでしょうか?
というか、swingの印刷のサイトがなさ過ぎ…
あまりやんないんですかね
329:デフォルトの名無しさん
10/03/25 14:45:01
>>323
netbeans platformでおk
まあこっちはミドルウェアに近いが。
たとえばなんだろうか、専ブラの類の規模を作ろうとするとApp Frameworkでは物足りない。
もとからSwing初学者がjavaの流儀でGUI作るのを容易にする目的のものだからね。
それがJava 5のEoDの一環でJDKに含まれるようになるだけだから。
#俺はTiming Framework入れて欲しい。Swing Labsの成果はもっと取り込んでいいと思う。
330:デフォルトの名無しさん
10/03/25 18:46:04
swingにフレームワークはいらんだろう
331:デフォルトの名無しさん
10/03/25 18:49:37
Swing 自体がフレームワークじゃねぇの。
あと自分とこの要件向けにドメインフレームワーク作るだけだろ。
332:デフォルトの名無しさん
10/03/25 18:52:46
>>331
ドメインフレームワーク?
333:デフォルトの名無しさん
10/03/25 21:52:33
SwingはToolKit
334:デフォルトの名無しさん
10/03/26 00:41:08
ホント、マジで教えて欲しいんだが、
おまいらSwingで何つくってんだ?
ゲームのマップエディタつくったんだが、遅くて、見た目もイビツで
恥ずかしくて公開できやしない。
335:デフォルトの名無しさん
10/03/26 01:00:44
>>334
それ Swing のせいなの?
336:デフォルトの名無しさん
10/03/26 02:24:50
センスが無いと何やっても駄目な典型。
337:デフォルトの名無しさん
10/03/26 04:36:59
速い言語で作ったら今度は Segmentation Violation が出まくりの糞言語とか言ってそう。
338:デフォルトの名無しさん
10/03/26 10:27:46
テキストボックス入力中に、ボックス直下に入力でマッチした候補をインクリメンタルで表示する部品はあるでしょうか?
googleの入力補てんみたいなものです。
自作の必要あり?
339:デフォルトの名無しさん
10/03/26 10:45:21
>>338
標準にはない。
原理的にはコンボボックスのエディターが持っているテキストが変更
されるたびに、その時点のテキストに応じてモデルが返す候補一覧を
変化させればよい。
例(ソース付き): URLリンク(terai.xrea.jp)
340:デフォルトの名無しさん
10/03/26 13:24:56
>>334
Swing以外で、サクサクで見た目も良いツールつくれるなら、そっち使えば良い。
無能ほど他人のせいにしたがる。
しかも無能は自分の無能さに気づく能力も無い。
341:デフォルトの名無しさん
10/03/26 22:37:45
>>334
オープンソースにして公開すれば、
誰かが高速描画仕様に修正してくれるんじゃないかな。
ここには有能な人も多いみたいだし。
俺は嫌だけどね。
342:デフォルトの名無しさん
10/03/27 04:10:43
価値有るものじゃないと弄る気にも成らないけどな。
金払ってプログラマに拘束化してもらうのが確実。
343:デフォルトの名無しさん
10/03/27 07:36:53
他人を無能呼ばわりする奴が、
どの程度描画を高速化できるのか興味あるね。
さぞかし有能なコードを書いてくれるんだろうよ。
まずはソースをうぷだ。
344:デフォルトの名無しさん
10/03/27 09:19:03
俺は、この前このスレじゃないがソースうpしたけど、
ソースについて何の評価も貰えなかった・・・
そんな俺は腐ったミカンですか?
345:デフォルトの名無しさん
10/03/27 09:21:54
2ch ではマジレス・ソースうpするとまともにコメントつかないのが常識
346:デフォルトの名無しさん
10/03/27 09:27:07
ヒットアンドアウェーの チンカス ばっかだしな。
347:デフォルトの名無しさん
10/03/27 10:29:57
ソースをうぷったのにコメントを戴くことができなかった7つの理由
1.閲覧者のレベルが低かった
2.閲覧者の得意分野が違っていた(学校、仕事、趣味、ゲームetc.)
3.問題のある部分は見当たらなかった
4.ソースが巨大すぎて読む気が失せる
5.あまりにも低レベルすぎて指摘のしようがない
6.誰も見てくれなかった
7.その他
>>344
もう1度ここでうぷってみたら?有能者が応えてくれるんじゃないの
348:デフォルトの名無しさん
10/03/27 10:59:18
有能な人のソースを見てみたい
凄く速いのかな
349:デフォルトの名無しさん
10/03/27 11:03:42
宿題スレでお礼がくると
あぁネタだったんだなぁ
と思ってしまう
350:デフォルトの名無しさん
10/03/27 11:16:44
>>347
1、3、4、6はありえないと思う。
5は、そこまでひどくないとは信じたい
JAVAの勉強で作ったゲームなんだけど・・・
何度も晒すのは、ちょっと気が引ける・・・
ゲームは、まぁまぁおもしろいとは言ってくれたけど
351:デフォルトの名無しさん
10/03/27 11:25:43
まずはソースをうぷだ
話はそれからだ
352:デフォルトの名無しさん
10/03/27 11:25:53
あえて本気を出さないソースがうけるのか
353:デフォルトの名無しさん
10/03/27 11:46:16
これがうpしたゲームだけど・・・
URLリンク(toku.xdisc.net)
かなり不器用な処理してると思うけど、
まだまだ勉強中なので
いろいろ教えてもらえると嬉しい
354:デフォルトの名無しさん
10/03/27 12:20:48
スネークゲームか。
implements Config はやめて static import
NyoroArrayは事実上双方向リストなので、LinkedListあたりを利用
できないか考える。
Foodのもつ画像は、 static イニシャライザを使って、クラス全体で
10個持てばよいと思う。
今はノーマルエサがダイエットエサの出現状態まで管理までしている
ようだけど、ノーマルエサとダイエットエサは同時に各1つしか出な
いみたいなので、ゲーム世界側でそれぞれ1つずつ持つのがよいのでは
ないだろうか。
では、ごはんー。
355:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/03/27 14:18:47
ゲームの出来ない(コンピュータにも余裕で負けるよ)、俺にはさっぱりルールが分からなかったorz
可愛い女の子の絵だけで、お腹が一杯です
357:デフォルトの名無しさん
10/03/27 14:20:09
ゲーム本体の良し悪しはともかくとして、
問題にしてるのはマップエディタの方では?
358:デフォルトの名無しさん
10/03/27 14:44:25
uploaderはこちら
URLリンク(toku.xdisc.net)
359:デフォルトの名無しさん
10/03/27 14:49:47
>>353
向こうのスレで「面白い」とだけコメントしてたものです…
ぱっと見て気になったのは>>354で書かれてる最初のものですね。
あと全般的に、定数は自分だったらEnum使うかな。
Enum使うと振る舞いを持たせられるので夢がひろがりんぐ。
Nyoro2のメインメソッドの中身はSwingUtilities.invokeLater使ってEDTで呼ぶべきでしょうね。
URLリンク(java.sun.com)
それとJava関係ないですけど、NetBeansのnbproject/privateディレクトリ以下は
配布しない方が良いかもです。
URLリンク(netbeans.org) の"NetBeans プロジェクトファイル"
360:デフォルトの名無しさん
10/03/27 14:53:18
>>357
ゲームの人とマップエディタの人は別人じゃないの?
361:デフォルトの名無しさん
10/03/27 15:00:44
ゲームクリアしたら女の子とのセクロスシーンが出てくる、
なんてことになったらウレシくてティンコ旅立ち
362:デフォルトの名無しさん
10/03/27 15:03:27
マッポエディッタがうぷられて、マッポvs有能人の壮絶なバトル、ってなことになったら面白いのになあ
363:デフォルトの名無しさん
10/03/27 16:18:30
マップのセルが全部JButtonとか、グリッドがJTableとか、
そんなとこをエスパー予想。
…いや、Wizardryレベルのマップならそれで十分なんだけどさ
364:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/03/27 21:11:34
誰か、statusという名前が駄目でpressedならオケという理由を教えてくれまいか
ていうか、変数名に動詞を使うのにはめちゃくちゃ違和感がある
俺の場合、動詞から始まる名前はメソッドにしか使わないからなぁ
366:デフォルトの名無しさん
10/03/27 21:20:09
>>365
status = true とか return status とか見てもなにしてんのかわかりにくいだろ。
あと、 pressed は動詞じゃないから。
367:デフォルトの名無しさん
10/03/27 21:28:38
statusでは「何の」状態なのか分からない
pressedなら押したかどうかなんだなと分かる
まあキーなら押したかどうかしか状態がないだろという話もあるが
メソッドと命名の方向性は合わせた方がいいと思う
368:デフォルトの名無しさん
10/03/27 21:48:11
そういうことか…レスサンクスコ。
369:デフォルトの名無しさん
10/03/27 21:54:16
とりあえずJavaコーディング規約おいときますね。
URLリンク(www.objectclub.jp)
これ以上の命名法の話題は命名系のスレでやった方がいいんじゃないかな。
370:334
10/03/27 21:56:30
別にこまってないし、ソースupする気なんてないよ
遅い理由はJTableのレンダラにJLabelを使っているからなんだけど手を抜こうとしたらこれが都合よかったのでそうしてるだけだし。
にしても、あとはSwingのせい。
DataGridView@C#でやったらどんだけ高速だったことか。
見た目がいびつなのは、レイアウトマネージャーの動作がキチガイだから。
SWTのGridLayoutが神レイアウトだと思うんだけど、これのSwing版発見したのでつかってみて
URLリンク(code.google.com)
掲示板添付のzipが使えた。
正式にはどこで公開されているのか知らん。英語わからんし。
371:デフォルトの名無しさん
10/03/27 22:01:10
俺はSwingを使うときは無条件でSwingUtilities.invokeLater()を使ってたけど、
よくよく考えると結構重要なのかも
URLリンク(wisdom.sakura.ne.jp)
353のソースは、まあ、よくできてるんじゃね?
俺も初心者レベルなんで詳しいことはよくわからんがw
あとは…
ifが連なってるところはswichi にしたほうがいいとか(一般的には条件分岐よりも
ジャンプのほうが速いはず…だけどこれはコンパイラ依存か)、
女の子の画像は裸のほうがいいとか、そのくらいしかわからん。
個人的に、画像の直貼り付けは遅そうな感じがするけどどうなんだろうね。
(もちろん、速度を気にしないなら直貼り付けで全く問題ないけど)
画像データを配列に読み込んで、その配列を処理したほうが速い気がするんだけど、
それをやるとかなりソースが複雑になりそうだなあ。
372:334
10/03/27 22:06:05
連続書き込みすまん
swtgridlayoutで見た目は完全に改善された。かなりオススメ
で、とりあえず俺はJavaもSwingも上級レベルで使えると自負してるけど
これで(公開できるほど)まともなアプリをつくるのは
不可能または、並々ならぬ努力が必要と思うので
本気でみんなが何をつくっているのか気になる。
何かまともなもん作ったって事例があったら教えてくれ。
373:デフォルトの名無しさん
10/03/27 22:08:09
>>371
あまり関係ないけど、コンパイラ依存じゃなくてVM依存だと思うw
374:353
10/03/27 22:55:33
おぉ!沢山のレスありがとうございました!
こんなに沢山アドバイス貰えるとは思ってなかったよ
知らない単語も出てきてるし、参考URLまで貼ってくれてるしで、
いろいろ調べて勉強してみます。
ありがとうございました
ちなみに、トップの絵書いてくれた友達にも、
JAVA質問スレと、このスレで絵についてのレスされてる事を教えた所すごく喜んでましたw
375:デフォルトの名無しさん
10/03/28 00:03:48
>>364
で、あんたは>>347のうちどれなの?
376:デフォルトの名無しさん
10/03/28 00:05:46
バカでも出来るコードレビューには食いつきが良いのなw
377:デフォルトの名無しさん
10/03/28 00:05:59
>>370
> 別にこまってないし
じゃあなんで>>198から1ヶ月もこのスレで頑張ってるの?
378:デフォルトの名無しさん
10/03/28 00:07:45
>>376
で、あんたは>>347のうちどれなの?
379:デフォルトの名無しさん
10/03/28 00:10:32
>>378
誰と勘違いしてるの?バカなの?
380:デフォルトの名無しさん
10/03/28 00:21:39
また猛牛が暴れだしたようだな
381:353の友達
10/03/28 00:21:55
>>361さんのために300点クリア絵を描きました><*
皆さんのレス嬉しかったです><*
ありがとうございました><*
URLリンク(a-draw.com)
382:デフォルトの名無しさん
10/03/28 00:24:27
うpするにしてもレベル低いソースの方が食い付きがいいよね
383:デフォルトの名無しさん
10/03/28 00:29:38
>>381
なんだコイツ
受け狙いのつもりなのだろうか
384:デフォルトの名無しさん
10/03/28 00:31:30
くだらねぇ話でスレ延びてんな。Swing 関係ねぇじゃん。
もう Java 総合スレで統一したらどうだ。
385:デフォルトの名無しさん
10/03/28 02:36:03
嫌あっちで反応悪くて、こっちでうpしたら、みんな気合い入れてコメント下から、当人らが興奮したってだけだろ。
どうせswingスレは普段過疎ってるから有効利用なんじゃねw
386:334
10/03/28 04:26:13
>>377
おおおぉ、凄いチェック力。>>198書いたのすっかり忘れてた
このスレで頑張ってるというか、グチ&みんなが何つくってるのか興味で書き込みしてるだけなんだけど
.NETが性能も開発効率も見た目も圧倒的に良いのに、
いまだSwingにこだわる君たちの思考に興味がある
387:デフォルトの名無しさん
10/03/28 04:33:39
>>386
.NET って UNIX 系 OS や Mac とかでも動いたっけ?
388:デフォルトの名無しさん
10/03/28 10:43:44
春だなあ
java.netでもsf.netでもいいからSwingアプリ探してみなはれ。
389:デフォルトの名無しさん
10/03/28 15:31:24
monoの再現度がまだまだ。
というかwinでMS製言語使うにしてもVC++だと思う。
390:デフォルトの名無しさん
10/03/29 00:42:14
Swing と比べるなら .NET ではなくて
Windows Forms や WPF じゃなかろうか。
391:デフォルトの名無しさん
10/03/29 21:15:04
JDK1.5なのでSwingWorkerが使えません。
この場合
1秒間隔でTimer起動→スレッド起動→バックエンド処理→待ち受け画面表示→イベント処理終了でswingスレッドを戻す
→バックエンド処理終了→Timerのstaticに終了フラグセット(継承して持たせた)
→Timer起動で呼ばれる→フラグ立ってるので待ち受け画面非表示
こんなことしないといけないんすかね…
あ~1.6で書きたい。ただ1.5以上サポートなんで1.6依存でかけない…
392:デフォルトの名無しさん
10/03/29 21:42:41
ライセンスとかに問題がなければ
SwingWorkerをパッケージに含めてしまうというのも可能かも。
あるいは似たようなクラスを自分で書くとか。
393:デフォルトの名無しさん
10/03/30 00:33:05
>>370
1000x1000程度のJTableなら、全セルにイメージ貼り付けても、
スカスカ動くがな。
大方、全セルにJLabelをnewしてつっこんだとかだろ。
394:デフォルトの名無しさん
10/03/30 01:36:30
>>391
URLリンク(swingworker.dev.java.net)
This project is a backport of SwingWorker included into 1.6.
395:デフォルトの名無しさん
10/03/30 10:10:40
>>394
1.5で使えるとかって書いてないんですけど使えるものなんですかね?
396:デフォルトの名無しさん
10/03/30 10:20:14
たいていの質問回答スレには、最初の一行しか読まずに回答始めるあわてんぼさんが常駐してる。
397:デフォルトの名無しさん
10/03/30 11:09:30
This project is a backport of SwingWorker included into 1.6.
を訳してみろ…
398:デフォルトの名無しさん
10/03/30 11:17:06
あ… もし backport の意味がわからなかったら用語辞典とかで調べるといいよ
URLリンク(e-words.jp)
399:デフォルトの名無しさん
10/03/30 11:35:50
意味が分かりました。すみません。躍起になって1.5ばかり探してました・・・
400:334
10/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:デフォルトの名無しさん
10/03/31 00:40:49
きったねー
402:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/03/31 04:22:34
>>393 は逃げたか…
404:デフォルトの名無しさん
10/03/31 05:24:22
単に図星だったから、慌ててソース書いただけだろw
405:デフォルトの名無しさん
10/03/31 06:55:43
そう思いたいんですね
406:デフォルトの名無しさん
10/04/01 08:45:49
最初から示さなかった時点で負けとしか。
後だし乙。
407:デフォルトの名無しさん
10/04/01 15:31:23
JTreeの要素の並び順ってJtreeの機能で設定することができるでしょうか?
それとも登録の前にソートして、ソートされた順番で登録しないといけないでしょうか?
408:デフォルトの名無しさん
10/04/01 16:07:36
>>407
TreeNodeに対して children() を呼んだときにソート済みで返ってくればよいと思う。
UIよりはモデル側の問題。
409:デフォルトの名無しさん
10/04/01 20:20:00
>>406
誰と戦ってんのおまえw
410:デフォルトの名無しさん
10/04/02 02:39:22
>>409
お前だろ、粘着乙www
411:デフォルトの名無しさん
10/04/06 23:17:26
javafx を始めたいんだけど、入門書ってありますか?
412:デフォルトの名無しさん
10/04/07 04:06:16
javafxは辞めておいたほうが。
413:デフォルトの名無しさん
10/04/07 04:32:26
入門レベルは英語ばっかだね。
414:デフォルトの名無しさん
10/04/08 03:31:16
LaboBrowser っての使ってみたけど全然ダメだの。
マトモに表示できるのは Google トップくらいだ。