Java低速GUI Swing 8
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2008/11/21(金) 11:24:21しかしながら、"Java"というだけで未だに敬遠されるのが現状。
そんなSwingと引き続き付き合っていくみんなのスレッドです。
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
0002デフォルトの名無しさん
2008/11/21(金) 11:25:06NetBeans
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
0003デフォルトの名無しさん
2008/11/21(金) 11:25:58Q. AWT と Swing 混ぜちゃ駄目って聞いたんですけど
混ぜちゃ駄目なんですか・・・・?
A.
今まででは、「駄目」というのが正解です。
が、現在開発中(未リリース)のバージョンではSwingとAWTの混在ができるようになっています。
正式リリースがされるまで、情報の錯綜があって混乱すると思いますが
普通の人にとっては「まだ駄目」という状況だと思ってください。
Q. Nimbusって何よ。
A.
次期Swingの標準となるとされているLAFです。
元々は、SUNのGnome環境のテーマに使われていた見た目を移植したものになります。
実装にはXMLベースでLAFを定義できるSynthLookAndFeel を利用しています。
jdk6の開発版で試す事ができます。
Q. こんなプログラムを作れって言われたんですが・・・
A.
宿題スレへどうぞ。
Q. なんでスレタイに低速って入ってるの?
A.
まだまだ速くなるってことさ。
0004デフォルトの名無しさん
2008/11/21(金) 11:37:19こんなGUIのフォームを作りたいんですが、
その中でいくつか質問があります。
テーブルA ボタン テーブルB
ID Name ID Name
[1 ][A ] [1 ][E ]
[2 ][B ] (追加) [2 ][F ]
[3 ][C ] (削除) [3 ][G ]
[4 ][D ] [4 ][H ]
1.テーブルID項目は非表示にさせたいけど方法をおしえていただけませんか?
2.テーブルAセルを選択した状態で追加ボタンをおしてテーブルBに追加したいんですが、
選択したセルの情報を取得する方法をおしえていただけませんか?
以上です。よろしくお願い致します。
0005デフォルトの名無しさん
2008/11/21(金) 12:36:182.JTable#getValueAt(row,col)
0006デフォルトの名無しさん
2008/11/21(金) 12:38:33API読めよw
0007デフォルトの名無しさん
2008/11/21(金) 12:55:57ありがとう御座います。
兆しがみえたのでちょっとやってきます。
>API読めよw
これってSunのクラス説明のこと?
0008デフォルトの名無しさん
2008/11/21(金) 21:52:00一冊読んだほうがよさそうな気がするなw
0009デフォルトの名無しさん
2008/11/21(金) 23:34:02ちょっとのヒントぐらい書いてやればいいものを
0010デフォルトの名無しさん
2008/11/22(土) 19:41:01あと参考書読んだ方がいいってのもヒントだと思うけど…
0011デフォルトの名無しさん
2008/11/22(土) 20:59:12>9はもっと丁寧に、そして空気を悪くするなって言いたいんでしょう。たぶん。
>>4
選択したセル番号を直接得ることはできないけど、選択した行と列を得るメソッドとして
それぞれgetSelectedRowとgetSelectedColumnというのがあります。
0012デフォルトの名無しさん
2008/11/22(土) 21:07:500013デフォルトの名無しさん
2008/11/24(月) 13:10:06Java 6
http://java.sun.com/javase/ja/6/docs/ja/api/
Java 5.0
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/
Java 1.4.2
http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/
0014デフォルトの名無しさん
2008/11/24(月) 13:25:22APIリファレンスってSwingの使い方がわかる人にしか意味ないし、
そういう人はたいてい質問してこないんじゃ・・・
0015デフォルトの名無しさん
2008/11/24(月) 15:16:170016デフォルトの名無しさん
2008/11/24(月) 16:13:29お前が何をしたいのかが分からない
よって答えも出せなければ相談にも乗れない
0017デフォルトの名無しさん
2008/11/24(月) 16:16:06やめておきます
っていうレスの後押しが欲しいんだろ
0018デフォルトの名無しさん
2008/11/24(月) 16:34:380019デフォルトの名無しさん
2008/11/24(月) 16:52:40同意して欲しいのかい?構ってちゃん
0020デフォルトの名無しさん
2008/11/24(月) 16:58:560021デフォルトの名無しさん
2008/11/24(月) 17:02:46何をやるの?
0022デフォルトの名無しさん
2008/11/24(月) 20:35:570023デフォルトの名無しさん
2008/11/24(月) 21:01:58>>18が釣と見た
0024デフォルトの名無しさん
2008/11/25(火) 09:54:160025デフォルトの名無しさん
2008/11/25(火) 11:40:350026デフォルトの名無しさん
2008/11/25(火) 16:39:48いや、20だろ、釣りは。
0027デフォルトの名無しさん
2008/11/25(火) 22:33:130028デフォルトの名無しさん
2008/11/25(火) 22:57:44高さも固定されてしまいます。何か良い方法は無いでしょうか。
0029デフォルトの名無しさん
2008/11/25(火) 23:06:150030デフォルトの名無しさん
2008/11/25(火) 23:15:250031デフォルトの名無しさん
2008/11/25(火) 23:42:14現在、コンボボックスのプルダウン時の表示項目を
個別にDISABLEDにさせられる様にしようとしてます。
表示はCellRendererでどうにかなったものの、マウスで
DISABLEDにした項目をクリックすると選択が出来てしまいます。
この現象を防ぐためにはどのようにすればいいのでしょうか?
よろしくお願いします。
0032デフォルトの名無しさん
2008/11/26(水) 00:30:08この例のようなやり方で自作コンポーネントへ、TransferHandlerによるDnDでドロップ位置の表示を行おうとしています。
この方法でsetDropLocation(←自作コンポーネントに作成したアクセサ)によりDropLocationを設定すべき場所は、TransferHandler内ではどの場所でしょうか?
入力しようとするときに表示させるものなので、現在は
TransferHandler#canImport(TransferSupport)
内でsetDropLocation(support.getDropLocation())
としています。
一応表示はされますが、この方法ではドロップターゲットが変わった場合にsetDropLocation(null)とできないため、ドロップ位置の表示が消えません。
何かドロップ位置を表示するスマートな方法はありませんでしょうか?
0033デフォルトの名無しさん
2008/11/26(水) 11:00:19JTableはなにを使えばオブジェをセットできますか?
0034デフォルトの名無しさん
2008/11/26(水) 11:51:40JTextArea を入れるコンテナのレイアウトを工夫する。
たとえば BorderLayout では
EAST と WEST のコンポーネントは
横幅が preferred size の横幅に固定され、
高さはコンテナのサイズによって変わる。
0035デフォルトの名無しさん
2008/11/26(水) 12:13:470036デフォルトの名無しさん
2008/11/26(水) 12:35:26普通はどうやってるの?
JWindowでだけ特殊だという意味?
ツールチップの設定の仕方自体を知らないという意味?
0037デフォルトの名無しさん
2008/11/26(水) 12:38:260038デフォルトの名無しさん
2008/11/26(水) 12:58:28普通の使い方は、JComponent#setToolTipText()でしょ。
で、うろ覚えだけど、JComponent#setToolTipText()でString引数がnullかどうかで、
ToolTipManagerに登録(registerComponent(JComponent),unregisterComponent(JComponent))されるように実装されてたはず。
なので、
>元々対応していないもの
これの意味が分からない。
ToolTipManagerはそもそも、JComponentしか受け付けないはずだし、
JComponentであれば、ツールチップを表示させられる。
であるのに、元々対応していないものとは?
あとは、JFrameを使用しているほうのバージョンでは、
setInitialDelay()等のhogeDelayプロパティを変更しているとか。
ツールチップを無効にしているとか。
JFrameを使用しているほうのバージョンとJWindowのコードとの差を検査した方が良いと思う。
0039デフォルトの名無しさん
2008/11/26(水) 13:17:3738です。
ちょっとコード書いてみたけど、たしかに動かない。。すまん。
JWindow,ToolTipManagerのソース見たほうが良いかも。
class Hoge{
public static void main(String[] args){
JWindow window = new JWindow();
//JFrame window = new JFrame();
JButton buton = new JButton("Button");
buton.setToolTipText("tip");
window.getContentPane().add(buton);
window.setBounds(0, 0, 450, 450);
window.setVisible(true);
}
}
0040デフォルトの名無しさん
2008/11/26(水) 13:20:43EDTで起動してないとこは大目にみて、修正してね。
0041デフォルトの名無しさん
2008/11/26(水) 13:53:35Frame を表示させないで
Window だけを表示すると
ちゃんと動作しないことがある。
0042デフォルトの名無しさん
2008/11/26(水) 20:29:30JFrameで setUndecorated(true) と setAlwaysOnTop(true)くらいやっとけば、代わりになるんじゃね?
0043デフォルトの名無しさん
2008/11/26(水) 21:15:51あったら教えて。
0044デフォルトの名無しさん
2008/11/26(水) 21:27:27行数なら、JTable,TableModelだけど、
言ってるのは、多分、有効なデータがある最大行インデックスってことだと推測するなら、
そんなapiありません。
0045デフォルトの名無しさん
2008/11/26(水) 22:39:150046デフォルトの名無しさん
2008/11/26(水) 23:47:01JTable#getRowCount()やTableModel#getRowCount()じゃなく、
これ系統の話じゃないのか
ttp://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=47155&forum=7&14
0047デフォルトの名無しさん
2008/11/27(木) 00:05:160048デフォルトの名無しさん
2008/11/27(木) 00:50:48個人的には「何行ある」と「何行まで行がある」では違うと思うけど。
本人じゃないから分からないけどさ。
0049デフォルトの名無しさん
2008/11/27(木) 00:59:26「何行ある」と「何行まで行がある」は双方どう違うのか興味が出てきた
0050デフォルトの名無しさん
2008/11/27(木) 01:02:410051デフォルトの名無しさん
2008/11/27(木) 10:50:13JTextFieldの入力が終わったって判断するにはどうしたらいいんだ?
イメージではフォーカスがかわった時イベントを起こすようにしたいんだけど
0052デフォルトの名無しさん
2008/11/27(木) 10:55:270053デフォルトの名無しさん
2008/11/27(木) 11:01:450054デフォルトの名無しさん
2008/11/27(木) 12:55:10エンターを押してもらう
0055デフォルトの名無しさん
2008/11/27(木) 19:58:14value に関するプロパティのイベントを捕捉すれば、いい感じかも。
フォーカスが外れたりリターンキーが押されたりしたときに
(文字列が変わってれば)イベントが発生するっぽい。
0056デフォルトの名無しさん
2008/11/28(金) 11:02:32CabosってSwingアプリだっけ?
ム板で聞いてもバイアスがかかると思うので、
IDE各種(Eclipse, NetBeans, etc)と2ch専ブラ(V2C,etc)は却下。
いやさ、実行系絡みのトラブルシュート対策のページを
パクらせてもらおうと思って。
0057デフォルトの名無しさん
2008/11/28(金) 13:38:150058デフォルトの名無しさん
2008/11/28(金) 13:48:430059デフォルトの名無しさん
2008/11/29(土) 03:43:200060デフォルトの名無しさん
2008/11/29(土) 04:37:51やっぱリアルタイム性のあるとこかな
0061デフォルトの名無しさん
2008/11/29(土) 09:11:320062デフォルトの名無しさん
2008/11/30(日) 19:08:08アイテムの名前変更できるようにしようとして、ぐぐってもなんも引っかからんぜ
0063デフォルトの名無しさん
2008/11/30(日) 19:31:01けど実装はそんなに難しくないよ
JTableを1列で、とかだめ?w
0064デフォルトの名無しさん
2008/11/30(日) 20:19:02まだ容易されてる入り口と、ぐぐって出てくる手法でしか作ってないから想像もつかないぜ
JListとJTableを組み合わせて使ってるから、JTableのアイテムを編集させてみる。
気が向いたら、その難しくない実装とやらをがんばってみるかな
0065デフォルトの名無しさん
2008/11/30(日) 20:48:410066デフォルトの名無しさん
2008/12/02(火) 22:47:32スクロールペインの中央にJTreeが並んでしまって困ってます
BoxLayoutでJPanelにJTreeを設置するとテキストがまともに表示されない(後半が途切れる)ので
GridBagLayoutで白紙のパネルをJTreeの下に設置し、JTreeを左上になんとか表示してます
こんな無理矢理な方法を使わず、素直にJTreeを二つスクロールペインの左上に設置する方法は無いでしょうか?
何方かご教授下さい…
0067デフォルトの名無しさん
2008/12/03(水) 16:48:33JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
JPanel viewportView = new JPanel(new FlowLayout(FlowLayout.LEFT,0,0));
JTree tree1 = new JTree();
JTree tree2 = new JTree();
viewportView.add(tree1);
viewportView.add(tree2);
frame.add(new JScrollPane(viewportView));
frame.pack();
frame.setVisible(true);
0068デフォルトの名無しさん
2008/12/03(水) 16:50:03JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
FlowLayout fl = new FlowLayout(FlowLayout.LEFT,0,0);
fl.setAlignOnBaseline(true);
JPanel viewportView = new JPanel(fl);
JTree tree1 = new JTree();
JTree tree2 = new JTree();
viewportView.add(tree1);
viewportView.add(tree2);
frame.add(new JScrollPane(viewportView));
frame.pack();
frame.setVisible(true);
0069デフォルトの名無しさん
2008/12/03(水) 22:15:15ありがとうございます!明日試してみます!…ノートPC持って帰ってくるの忘れたorz
口で説明しても伝えられない気がしてきたので簡易ながら図解にしてみました。
ttp://toku.xdisc.net/cgi/up/ttt/nm6024.jpg.html
上の理想像のように配置したいのですが、BoxLayoutだと下図のようにテキストが途切れます…
0070デフォルトの名無しさん
2008/12/03(水) 22:46:19JTreeを1つで、setRootVisible(false)にすればええやん。
0071デフォルトの名無しさん
2008/12/04(木) 06:45:15panel.setLayout(new BorderLayout());
panel.add(tree1, BorderLayout.NORTH);
panel.add(tree2, BorderLayout.CENTER);
scrollPane = new JScrollPane(panel);
0072デフォルトの名無しさん
2008/12/04(木) 19:34:31それやったら何も表示されなくて…
JTree二つあった方がラクかなぁ?と思って組み始めたんです。
>>71
tree2が中央に来ました…orz
0073デフォルトの名無しさん
2008/12/04(木) 21:30:24>>70 でやったときにTreeNodeが表示されないと言っている?TreeModelの使い方は理解してる?
ここ↓をひととおり読んでみた?
http://java.sun.com/docs/books/tutorial/uiswing/components/tree.html
0074デフォルトの名無しさん
2008/12/04(木) 22:31:320075デフォルトの名無しさん
2008/12/05(金) 00:49:360076デフォルトの名無しさん
2008/12/05(金) 00:53:240077デフォルトの名無しさん
2008/12/05(金) 05:22:120078デフォルトの名無しさん
2008/12/06(土) 12:47:42ただ何やってるか分からんけど起動がえらい遅い
0079デフォルトの名無しさん
2008/12/06(土) 23:29:05あとアニメとかはどうだ。滑らかに動くのか。
とにかく生情報がほしいな。
自分はOSバージョンの関係で試せないけど、試したやつ報告よろしく
0080デフォルトの名無しさん
2008/12/07(日) 01:58:370081デフォルトの名無しさん
2008/12/07(日) 02:03:370082デフォルトの名無しさん
2008/12/07(日) 02:17:15siwngはjavacでコンパイルされてバイトコードになるためjvm共通のwidgetになるから
javafxcでJFrame{}とかすれば当然JFrame.classが呼ばれてswingそのものを呼び出しているといえる。
0083デフォルトの名無しさん
2008/12/07(日) 07:32:52・高度なRPG開発が可能な、完全無料のゲーム作成ツールです。
・雰囲気はRPGツクール2000に近い。RPGツクール2000で自作システムを作りこむ際に
不満だったところがいろいろ解消されていて、かなり自由度が高いです。ただし
その分初心者には難しいかも。すでにツクール2000で自作システムを組むのに
慣れた人やRPGツクールでは物足りないけどプログラミングはちょっという方にお勧め。
・作成したゲームは自由に配布したり、コンテストに投稿することも可能。
また本ソフトを持たない人でもプレイ可能!ファイル暗号化も完備してるよ!
・要望、不満点、バグ報告などなど書き込みお願いします。今もどんどん進化中です。
・それとマップやキャラなどのドット素材もじゃんじゃん募集中ですので
一度サイトにお越しくださいませ。
・このツールで作ったゲームをサイトで紹介してるから、ダウンロードしてどういう
ゲームが作れるのか見てみてね。
2ちゃん本スレ
http://pc11.2ch.net/test/read.cgi/gamedev/1226294070/l100
0084デフォルトの名無しさん
2008/12/07(日) 14:02:31このスレの解答者はカスしかないけどから
このスレの解答者はカスしかないけどから
このスレの解答者はカスしかないけどから
このスレの解答者はカスしかないけどから
このスレの解答者はカスしかないけどから
0085デフォルトの名無しさん
2008/12/07(日) 14:36:13>>82 の回答を見ると納得してしまうなw
0086デフォルトの名無しさん
2008/12/07(日) 14:38:40×解答
○回答
0087デフォルトの名無しさん
2008/12/07(日) 15:51:51加算半透明が欲しいけど、そういう人は少ないのかなあ。
0088デフォルトの名無しさん
2008/12/07(日) 16:07:380089デフォルトの名無しさん
2008/12/07(日) 17:21:020090デフォルトの名無しさん
2008/12/07(日) 19:26:39今はCPUに計算させて力でごり押しでもいいだろうけど、本来のやり方は力業計算はjoglとかハードの方を使って(経由して)計算させるものなのかと思う。
そういうの説明してるサイトはあまりないけどね。
0091デフォルトの名無しさん
2008/12/07(日) 21:36:370092デフォルトの名無しさん
2008/12/07(日) 21:53:12packしたい時に呼べばいいだけです
0093デフォルトの名無しさん
2008/12/07(日) 22:33:580094デフォルトの名無しさん
2008/12/07(日) 22:45:500095デフォルトの名無しさん
2008/12/07(日) 22:53:310096デフォルトの名無しさん
2008/12/07(日) 23:12:21自分でサイズを指定したい場合は
setSize() とか setBounds() とか
0097デフォルトの名無しさん
2008/12/09(火) 19:16:25こっちの書き方も悪いんだけど、それを差し引いてもあちこちにデザインの破綻が起きる。
画像アイコンを入れたボタンやカスタマイズした部品の修正が大変。
Metalのほうが細かい操作面や様々なケースで、神経が行き届いていたように思われ。
0098デフォルトの名無しさん
2008/12/09(火) 22:19:01public void addElement(Object obj)指定されたコンポーネントをリストの末尾に追加します。
パラメータ:
obj - 追加されるコンポーネント
DefaultListModelのaddElementのリファレンスを読んでコンポーネントも追加できるのか…?と思い
JPanelをaddしてみたんですが、文字列らしきもの(ポインタ的な何か…?)が表示されるだけで上手く行きません。
そもそもコンポーネントの追加という意味を私が取り違えているのでしょうか?お教え下さい
0099デフォルトの名無しさん
2008/12/09(火) 22:29:41昔のxのウィンド・マネジャの乱立とかwinデスクトップテーマの流行を思い返す。
system uiのwinでぽっぽアップしたときのメニュー文字のギャップをもう少し広げてくれると
win ui (win classic ui)とほぼ同じでハッピーなんだけど。
0100デフォルトの名無しさん
2008/12/09(火) 22:49:05コンポーネントは広い意味でのコンポーネントって表現だと思う。
英語版のjavadocが"Component"になっているから、そう訳したんだと思う。
Objectが引数だから、JPanelだろうが、通常やらないだろうけど、Timerだろうが何でも格納はできる。
表現が的確か分からないけど、ListModelは単なるデータストアであって、
ListModelから取り出したデータを、どう表現するかはCellRendererの役目。
一度、java tutorialとかで基本的なところを勉強するといいと思う。
0101デフォルトの名無しさん
2008/12/09(火) 22:52:29デフォルトのレンダラでは対応していないのでJPanelを要求通りに表示できるレンダラに変更
0102デフォルトの名無しさん
2008/12/09(火) 23:14:46JMenuItemのsetMargin()とか呼んでみたら?
ポップアップメニューのL&Fの更新ってプログラマーの責任だったっけ。
JComponent#setComponentPopupMenu()だけでは自動更新してくれなかった記憶が。
0103デフォルトの名無しさん
2008/12/10(水) 21:52:27本当にありがとうございます。CellRenderer改変して無事に完成しました
JPanel上にBorderLayoutでJLabelを2つ設置してそれを返すようにしたら想像通りのものに…!
JLabelの背景色変更しても色変わらなくて、2時間程経ってからsetOpaqueの存在を知りました。
もっと情報検索を上手いとこ出来るようになりたいですorz
0104デフォルトの名無しさん
2008/12/11(木) 01:05:13>ポップアップメニューのL&Fの更新ってプログラマーの責任だったっけ。
1.7.0で修正されたはず。
0105デフォルトの名無しさん
2008/12/11(木) 02:07:021.7か。遠い未来・・・でもないがまだまだだろうなぁ
0106デフォルトの名無しさん
2008/12/11(木) 03:32:06例えば、文字列の置換のような削除、挿入という複数の処理を1回で元に戻したい場合は
UndoManagerを入れ子にする。
UndoManagerを2つ用意して、基本はサブに追加する。一塊の処理が終わったらend()を呼んでメインに追加する。
void undoableEditHappened(UndoableEditEvent e) {
sub.addEdit(e.getEdit());
if (!compound) {
sub.end();
main.addEdit(sub);
sub = new UndoManager();
}
}
ちなみに普通にUndoをするだけならリスナにUndoManagerを追加するだけで出来ます。
JTextField tf = new JTextField();
tf.getDocument().addUndoableEditListener(new UndoManager());
0107デフォルトの名無しさん
2008/12/12(金) 11:25:310108デフォルトの名無しさん
2008/12/13(土) 12:36:19わー、同士よ。使ってる人、他にもいたんだ。
6u10以降、javax.swing.text.html
でちゃんと日本語HTML表示できている?
WebKitベースの新APIが1.7で登場するという噂はどうなったんだ…
0109デフォルトの名無しさん
2008/12/13(土) 15:29:45JWebPaneでしょ?
JWebPane は、Java7からってことになってるけど、Java7は1年半後らしいからね、いつになるやら。
たしか、AIRはWebBrowserコンポーネントを提供してるから、
JavaFXがAIRに対抗するために、リリース時期が早まるんじゃないかと少し期待してる。
0110デフォルトの名無しさん
2008/12/13(土) 16:33:11また、SwingやAWTの設計でGUI画面作るのもちょっといやだ。
Windows専用のJavaGUIライブラリどこかの会社でうまいことつくってくれないかな?
できれば、Delphi作ってる会社が作ってくれたりするといい。MSでもいいけど絶対作ってくれ無そう。
最悪、Javaで作ったファイルをWindows用exeに変換してくれるだけでもいい。できれば、UIもWindowsっぽくして・・
0111デフォルトの名無しさん
2008/12/13(土) 16:40:45そういう要求って仕事でやってるわけじゃないよね
0112デフォルトの名無しさん
2008/12/13(土) 16:52:180113デフォルトの名無しさん
2008/12/13(土) 17:41:15Excelsior JET + SWT
どっちにしろ Swing とは関係ないネタだ。
0114デフォルトの名無しさん
2008/12/13(土) 18:24:26Cocoaで作りたいとかいうならまだしもWindows寄りの設計って嬉しいか?
0115デフォルトの名無しさん
2008/12/13(土) 21:51:210116デフォルトの名無しさん
2008/12/14(日) 00:27:37あるいはgcjという手もあるな。
Swingと関係ないのは確かにその通りだが。
0117デフォルトの名無しさん
2008/12/14(日) 01:18:32>JavaやってるとWindowsのexeが作れない。。
つJSmooth
>また、SwingやAWTの設計でGUI画面作るのもちょっといやだ。
どこら辺が気にいらんの?
俺、SwingやAWTからGUIに入ったんでよくわからないんだ。
.netもやってるけど、上っ面撫でてるだけならそんなに違わないと
思ったが。
0118デフォルトの名無しさん
2008/12/14(日) 01:43:490119デフォルトの名無しさん
2008/12/16(火) 15:03:36JLabel [JTextField]
JLabel [JTextField]
というように、4の部品がならんでいる。
JTextFieldは、JFrameサイズに応じて幅一杯まで伸び縮みできるようになってほしい。
JLabelは文字列のサイズで固定されてほしい。
ただし、上段と下段でJTextFieldの位置をきっちり揃えたい。
GridBagLayoutだと、位置はきちんとそろうけど、JTextFieldが伸び縮みできない。
GridLayoutだとJLabelとJTextFieldの幅が等間隔に割り付けされてしまうのでだめ。
1段分をBorderLayoutのWESTにJLabel,CENTERにJTextFieldを入れ、GridLayoutで縦にならべると、
だいぶ希望に近づくが、JLabelに入る文字列の長さが異なると、JTextFieldの頭の位置が上下でそろわない。
なんかいい方法ないかなぁ・・・
0120119
2008/12/16(火) 15:10:57PreferredSizeでJLabelのサイズを固定する方法も考えられるけど、
LaFが変更されたとき崩れない保証がなくなるので、できるだけレイアウトマネージャだけで解決したい。
0121デフォルトの名無しさん
2008/12/16(火) 15:44:19GridBagConstraintsを適切に設定してないんじゃないか
public class Test {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setLayout(new GridBagLayout());
frame.add(new JLabel("Label 1:"), new GridBagConstraints(0, 0, 1, 1, 0, 0, GridBagConstraints.LINE_START, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
frame.add(new JTextField(), new GridBagConstraints(1, 0, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0));
frame.add(new JLabel("Label 2:"), new GridBagConstraints(0, 1, 1, 1, 0, 0, GridBagConstraints.LINE_START, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
frame.add(new JTextField(), new GridBagConstraints(1, 1, 1, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0));
frame.pack();
frame.setVisible(true);
}
}
0122119
2008/12/16(火) 19:16:21ありがとう。
IDEのGUIエディタが生成したコードとにらめっこしたのですが、
weightx,weightyの値が1に設定されていなかったのが原因でした。
私はこまかいところに神経が行き届いていなかったようです。
勉強になりますた!
0123デフォルトの名無しさん
2008/12/16(火) 21:37:570124せっかく作ってみたので貼ってみるテスト
2008/12/16(火) 22:01:12JLabel label1 = new JLabel("Label 1:");
JLabel label2 = new JLabel("Label 2:");
JTextField field1 = new JTextField(10);
JTextField field2 = new JTextField(10);
GroupLayout layout = new GroupLayout(frame.getContentPane());
frame.setLayout(layout);
layout.setAutoCreateGaps(true);
layout.setAutoCreateContainerGaps(true);
layout.setHorizontalGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup()
.addComponent(label1)
.addComponent(label2))
.addGroup(layout.createParallelGroup()
.addComponent(field1)
.addComponent(field2)));
layout.setVerticalGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(Alignment.BASELINE)
.addComponent(label1)
.addComponent(field1))
.addGroup(layout.createParallelGroup(Alignment.BASELINE)
.addComponent(label2)
.addComponent(field2)));
frame.pack();
frame.setVisible(true);
0125デフォルトの名無しさん
2008/12/16(火) 22:03:27GridBagConstraints に引数付きのコンストラクタがあることを
初めて知ったよ。
IDEの吐くコードでのみ使えって、ドキュメントにはあったけど。
>>123
いつのまにか java.awt でないレイアウトマネージャが増えてくね。
0126デフォルトの名無しさん
2008/12/17(水) 21:58:56特定の設定になった時はタブが5枚あったら、その3番目と5番目だけを非表示にしたいんだ
setEnabledAtで選択不可には出来たけど、出来ることなら非表示にしたい…
機能的には選択不可で問題無いが、見栄え的に半端な位置のタブが選択不可になってるのはみっともなくて。
何か良い解決策は無いだろうか?orz
0127デフォルトの名無しさん
2008/12/17(水) 22:09:410128デフォルトの名無しさん
2008/12/18(木) 11:38:280129デフォルトの名無しさん
2008/12/18(木) 21:48:35非表示にしたいタブを getTabComponentAt() で取得して
setPreferredSize() で推奨サイズをゼロにする。
あるいはサイズがゼロのコンポーネントを用意して
setTabComponentAt() を呼ぶ。
0130デフォルトの名無しさん
2008/12/18(木) 21:54:38リファレンス読んだけどやりかた分からなかったorz
>>128
非表示にしても、タブ内のデータを見ることがあるから出きれば削除は避けたいんだ…
>>129
おお、ちょっと試してみる!サンクス!
0131デフォルトの名無しさん
2008/12/18(木) 23:43:17>>128がベストアンサーだと思う。
TabbedPaneの外でコンポーネントを自前で管理する。ってことだと思う。
管理といってもHashMapとかのコレクションで持っておくだけだけど。
0132デフォルトの名無しさん
2008/12/19(金) 00:01:02なるほど…
HashMap、名前は良く見るが使い方を知ろうとしてなかったorz
ちょっと調べて色々試してみる。>>130,>>131ありがとう
0133デフォルトの名無しさん
2008/12/19(金) 08:23:390134デフォルトの名無しさん
2008/12/19(金) 09:00:240135デフォルトの名無しさん
2008/12/19(金) 09:09:500136デフォルトの名無しさん
2008/12/19(金) 09:19:360137デフォルトの名無しさん
2008/12/19(金) 10:33:39人に聞いてばかりで自分で調べたりしてないからだろう
おまえの無能さが文章によく出てる
0138デフォルトの名無しさん
2008/12/19(金) 11:43:56連想配列の実装したことあるのかい?
これだからPerl厨は…
0139デフォルトの名無しさん
2008/12/19(金) 12:10:430140デフォルトの名無しさん
2008/12/19(金) 12:59:41キーはもちろん"LEFT"と"RIGHT"さ!
0141デフォルトの名無しさん
2008/12/19(金) 13:11:150142デフォルトの名無しさん
2008/12/19(金) 15:27:100143デフォルトの名無しさん
2008/12/19(金) 18:46:160144デフォルトの名無しさん
2008/12/19(金) 19:00:25対応表片手にビット管理とかもう嫌だお!
0145デフォルトの名無しさん
2008/12/24(水) 01:24:160146デフォルトの名無しさん
2008/12/24(水) 01:36:150147デフォルトの名無しさん
2008/12/24(水) 02:49:51チューニングする場所ってのは限られている。
0148デフォルトの名無しさん
2008/12/27(土) 14:38:42あるボタン(ボタンA)を押したら、新しいボタン(btn)が表示されるようにしたいと思っているのですが、
ボタンAを押しても表示されません。
ボタンを張りつけたJPanelのgetComponentCount()を使ってみると、
add()は正しくできてるようなのですが、それでも表示されません。
btn.repaint()をやっても表示されないのですが、
btn.setVisible(false) → btn.setVisible(true)とすると表示されます。
上のsetVisible()を使うのはスマートじゃないような気がして、
invokeLater()を使ってみたりもしたのですが、結局setVisible()を使わなければ表示できません。
新しくボタンを表示させるにはsetVisible()を使うしかないのでしょうか?
他に良いやりかたがあれば、教えてもらいたいです。
文章へたくそなので、一応ソースのURLも貼っておきますね。
クラスは3つで、それぞれ45行以下のテキストです。
http://www.geocities.jp/mshinke01/Test.java
http://www.geocities.jp/mshinke01/ThreadTest.java
http://www.geocities.jp/mshinke01/LaterThread.java
0149デフォルトの名無しさん
2008/12/27(土) 16:28:080150デフォルトの名無しさん
2008/12/27(土) 16:56:28初めからsetVisible(false)でpanelにaddしておいて
スレッドでsetVisible(true)にするのもうまくいきました。
0151148
2008/12/27(土) 18:44:27>>150
返事ありがとうございます。
revalidateについて調べてみますね。
もし自分が理解できなかったら、>>150 さんの言う方向でやってみたいと思います。
ありがとうございましたorz
0152デフォルトの名無しさん
2008/12/27(土) 18:48:320153デフォルトの名無しさん
2009/01/07(水) 15:45:53便利なクラス(インクリメンタル用)みたいのものはあるでしょうか?
自力で実装しなければならないとき、ヒントになる手法があれば教えていただけないでしょうか?
0154デフォルトの名無しさん
2009/01/07(水) 16:15:200155デフォルトの名無しさん
2009/01/07(水) 22:57:100156デフォルトの名無しさん
2009/01/08(木) 00:23:41JFrame#setVisibe(true)の前でも後でも全然きかない。
JFrame#setLocationByPlatform()もだめ。。
0157デフォルトの名無しさん
2009/01/08(木) 05:15:38ウインドウマネージャ次第では強制的に再配置している可能性も。
0158デフォルトの名無しさん
2009/01/08(木) 12:51:45>Swingでインクリメンタルサーチ
Googleのクエリ候補表示みたいな事を
コンボボックスでやりたいのかな?
それともいわゆるEmacsみたいなインクリメンタルサーチ
をJTextComponentで実現したいのかしら?
0159156
2009/01/08(木) 19:25:06すまん、
実行環境はWinXP、
開発環境はEclipse3.4
ビルドはJDK1.6.0_03、
実行JREは1.6.0_07に設定
現象は、どこにsetLocation()してsetVisible(true)しても画面左上にJFrameが表示されてしまう。
最初からです。
いかがなもんでしょう!?
0160デフォルトの名無しさん
2009/01/08(木) 19:39:57ComponentListenerを使って、
いつ誰が左上に動かしてるのか見張ってみるのはどうでしょう。
0161デフォルトの名無しさん
2009/01/08(木) 21:26:46ソース晒せ。
ふるいやつだと、わざわざgetContentPane().setLayout()するのが面倒だなあ。
ヲレクラスで更にラップするのがめんどくさがりにはよさそうだ。
0162デフォルトの名無しさん
2009/01/09(金) 08:09:060163デフォルトの名無しさん
2009/01/09(金) 08:39:20import javax.swing.*;
public class Foo {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame f = new JFrame();
//f.setLocation(300, 300);//どちらか
f.setLocationByPlatform(true);//どちらか
f.setVisible(true);
}
});
}
}
みたいに単純化したものでも同じ現象になる?
うちはWinXP+1.6.0_11だけど、setLocationでもsetLocationByPlatformでもきちんと機能する。
Windowsの標準シェルならウインドウマネージャが強制再配置するようなことはなさそうだし…
0164デフォルトの名無しさん
2009/01/09(金) 09:02:450165デフォルトの名無しさん
2009/01/10(土) 06:09:58JFrameのコンテンツペインには何も追加しないの?
コンテンツペインに追加したコンポーネントのpreferredSizeに
スクリーンをはみ出さない程度のDimensionを設定したら、
setLocationがちゃんと効いた記憶があるんだけど。
違ってたらごめん。
0166デフォルトの名無しさん
2009/01/10(土) 16:08:05>>159のソースが分からないことには何とも言えんから問題の切り分けってことなら
>>163のようなものでも動作がおかしいのならJava環境かWin環境自体が変な可能性大だし
削ぎ落としたものは大丈夫なんだったら
JFrame自身の位置情報に影響を与えるようなコンテンツが入れられているか
自分でも知らないうちに別の場所で位置を書き換えているようなコードを入れているかなので
差し支えない範囲でソースを出してもらわないと他の人間には判断のしようがないと思う
0167デフォルトの名無しさん
2009/01/10(土) 19:00:090168デフォルトの名無しさん
2009/01/11(日) 18:31:55Mac の上部から 「〜〜を終了」 を選んで終了した際に
ドキュメントが保存されていない場合には保存確認をとり、
キャンセルされたらアプリケーションの終了をキャンセルしたいのですが、
こういうことはどのようにすればいいのでしょうか?
0169デフォルトの名無しさん
2009/01/11(日) 18:44:18とかじゃなかったっけ?
で、WindowListenerで閉じるときの処理を書く。
0170デフォルトの名無しさん
2009/01/11(日) 20:09:41「〜〜を終了」 の時はそこに来ないようなんです。
addShutdownHook なら一応保存確認することはできますが、
アプリケーションの終了をキャンセルすることまではできなくて、
どうしたものかと思っています。
0171デフォルトの名無しさん
2009/01/11(日) 21:00:30http://developer.apple.com/jp/qa/qa2001/qa1187.html
0172デフォルトの名無しさん
2009/01/11(日) 21:13:21ありがとうございます。できました!
0173デフォルトの名無しさん
2009/01/12(月) 20:20:49あれ。なんでJAVAを勉強しようと思ったんだっけwwwwwwww
0174デフォルトの名無しさん
2009/01/12(月) 22:07:560175デフォルトの名無しさん
2009/01/12(月) 22:33:090176デフォルトの名無しさん
2009/01/12(月) 22:35:420177デフォルトの名無しさん
2009/01/13(火) 08:44:10マナタソに飽きたのなら他の娘に乗り換えてみるのも一つの選択肢。浮気性は嫌われるかもだが。
はじめてのJavaとか童貞が飛びつきそうなマヌアル本も必要な時期だなwww
0178デフォルトの名無しさん
2009/01/13(火) 21:43:440179デフォルトの名無しさん
2009/01/13(火) 21:47:460180デフォルトの名無しさん
2009/01/14(水) 04:50:22単に一般的でない変な使い方しようとしてるだけとか?
0181デフォルトの名無しさん
2009/01/14(水) 12:26:180182デフォルトの名無しさん
2009/01/14(水) 13:01:590183デフォルトの名無しさん
2009/01/14(水) 15:46:13java.util.concurret.ThreadPoolExecutor とその関連
0184デフォルトの名無しさん
2009/01/14(水) 16:22:01描画スレッドとかさ
0185デフォルトの名無しさん
2009/01/14(水) 22:19:390186デフォルトの名無しさん
2009/01/15(木) 02:39:010187デフォルトの名無しさん
2009/01/15(木) 03:34:36使うっちゃ使うが小規模なアプリだな。
0188デフォルトの名無しさん
2009/01/16(金) 01:08:240189デフォルトの名無しさん
2009/01/16(金) 03:34:42描画スレッドで特殊な用途?
サブミリナルでも埋め込みたいとか? ちらつき程度ならダブルバッファ使って描画してれば充分だろうし。
0190デフォルトの名無しさん
2009/01/16(金) 23:59:30誰も使いたがらない理由は、たとえば何なんでしょ?
0191デフォルトの名無しさん
2009/01/17(土) 00:33:53・配布サイズでかい
・ツールが弱い
0192デフォルトの名無しさん
2009/01/17(土) 00:57:37なるほど。
逆に軽くて、配布サイズ小さくて、ツールがよければ使うってことですかなぁ。
0193デフォルトの名無しさん
2009/01/17(土) 09:15:20FXよりはFAとかDXとかのほうがよかった感じ。
0194デフォルトの名無しさん
2009/01/17(土) 10:16:23PC98だと終わってしまうから、JavaNXでどーよ。
0195デフォルトの名無しさん
2009/01/17(土) 10:17:530196デフォルトの名無しさん
2009/01/17(土) 10:25:10ぶっちゃけJavaがついてる時点で
0197デフォルトの名無しさん
2009/01/17(土) 11:56:13頓挫した「winFX」への当てつけじゃないの?
0198デフォルトの名無しさん
2009/01/17(土) 16:27:39ttp://www.google.co.jp/trends?q=JavaFX%2CAdobe+Flex%2CMicrosoft+Silverlight&ctab=0&geo=all&date=all&sort=0
重くて、配布サイズでかくて、ツールがいまいち分かりにくいSilverlightが人気なのは、なんなんですかねえ。
0199デフォルトの名無しさん
2009/01/17(土) 16:30:150200デフォルトの名無しさん
2009/01/17(土) 16:42:490201デフォルトの名無しさん
2009/01/17(土) 16:47:230203デフォルトの名無しさん
2009/01/17(土) 17:30:370204デフォルトの名無しさん
2009/01/17(土) 19:28:05%%
%%
0205デフォルトの名無しさん
2009/01/17(土) 22:51:560206デフォルトの名無しさん
2009/01/18(日) 19:03:45http://pc11.2ch.net/test/read.cgi/tech/1229255937/
次スレが無い
0207デフォルトの名無しさん
2009/01/18(日) 19:18:03気にするな
0208デフォルトの名無しさん
2009/01/19(月) 22:19:160209デフォルトの名無しさん
2009/01/19(月) 22:32:490210デフォルトの名無しさん
2009/01/20(火) 02:05:440211デフォルトの名無しさん
2009/01/20(火) 02:45:100212デフォルトの名無しさん
2009/01/20(火) 02:46:24SwingBuilderはなかなかいい。
0213デフォルトの名無しさん
2009/01/20(火) 04:39:310214デフォルトの名無しさん
2009/01/25(日) 06:39:50((DefaultTreeModel)getModel()).removeNodeFromParent(node);
これでノードを外して
parent.add(node);
これでノードを追加してソートしてたんよ
でも、これだと開いてるツリーが閉じてしまうんだ。
開いてるツリーそのままでソートする方法しらない?
0215214
2009/01/25(日) 23:43:39用意されてるメソッドでそれっぽいの見つけられなかったから、
現在展開してるパスを全部しらべて、ソートが終わってから開きなおすようにしたぜ。
0216デフォルトの名無しさん
2009/01/26(月) 01:38:21ここのスレの人はなぜSwingを使うのだろう
C#やVB.NETじゃダメなの?
LinuxやMacで動かしたいわけじゃあるまいし。
0217デフォルトの名無しさん
2009/01/26(月) 02:09:41いや、Linuxでも動かしたい。
0218デフォルトの名無しさん
2009/01/26(月) 02:49:22いや、Solarisでも動かしたい。
0219デフォルトの名無しさん
2009/01/26(月) 05:32:01swing程度で十分というのが大きい。awtでもむしろ十分だが。
まあvs使えないだけとも言うが。コントロールをちまちまマウスで配置するくらいならコードで記述したい訳だ。
0220デフォルトの名無しさん
2009/01/26(月) 19:21:07ポトペタありでswingいじったことないんですけど
0221デフォルトの名無しさん
2009/01/27(火) 03:35:160222デフォルトの名無しさん
2009/01/27(火) 11:30:33大昔は必要がなかったし、今はカススタイラーゆえ意味がない
0223デフォルトの名無しさん
2009/01/27(火) 13:32:51なんか、モデルやコントローラまわりで歪なコード吐きそうだ。
0224名無しさんに接続中…
2009/01/27(火) 16:31:560225デフォルトの名無しさん
2009/01/27(火) 16:54:49Swing+JSR295+JSR296と組み合わせてポトペタできるくらいにまでなってるんだぞ。
ttp://builder.japan.zdnet.com/sp/07ide/story/0,3800082821,20350058,00.htm
0226デフォルトの名無しさん
2009/01/28(水) 14:06:140227デフォルトの名無しさん
2009/01/28(水) 16:28:160228デフォルトの名無しさん
2009/01/29(木) 06:43:530229デフォルトの名無しさん
2009/01/29(木) 08:25:300230デフォルトの名無しさん
2009/01/29(木) 08:54:08GUIフレームワークで流行ってるのってなに?
0231デフォルトの名無しさん
2009/01/29(木) 08:59:550232デフォルトの名無しさん
2009/01/29(木) 09:01:370233デフォルトの名無しさん
2009/01/29(木) 09:18:38Swingはなぜそれらの代替になりえないのか・・・
速度か?やはり速度なのか?
0234デフォルトの名無しさん
2009/01/29(木) 09:20:450235デフォルトの名無しさん
2009/01/29(木) 09:21:56単にSwingに既存のものを置き換えるほどの魅力がなかったってだけでしょ。
0236デフォルトの名無しさん
2009/01/29(木) 09:31:29自分は長いことWindowsアプリケーションを作ってきたんでつが、V2Cという2chビューワを使い始めてSwingアプリの軽快さにびっくりしたです。
V2Cが純Swingじゃなかったらスミマセン
0237デフォルトの名無しさん
2009/01/29(木) 09:37:22やっぱJavaはもうちょいデスクトップアプリケーション強化して、それと速度に関してもどうにかアピールしないとなぁ
0238デフォルトの名無しさん
2009/01/29(木) 13:26:10あと、表示が微妙にださかったり
俺はjavaしかまともに使えないから、swingをやってみた。
swingでダメだったらMS製品買えばいいかなーって感じで。
java以外も使えるようになりたいから、MS製品で遊んでもいいと思うんだけどね
0239デフォルトの名無しさん
2009/01/29(木) 14:11:25> java以外も使えるようになりたいから、MS製品で遊んでもいいと思うんだけどね
じゃあ Express Editions でも入れて C# とかやればいいと思うよまじめな話
0240デフォルトの名無しさん
2009/01/29(木) 15:46:58用途としてはもうそっちしかなかろう
0241デフォルトの名無しさん
2009/01/29(木) 16:03:25Hashtableの内容が変更されたら、それと連動してJTableの表示も変更されるようにしたいのですが
何か常套手段みたいなのが有るんでしょうか?
0242デフォルトの名無しさん
2009/01/29(木) 16:55:15レンダラーやエディターで意図したものにあってるかな?
0243デフォルトの名無しさん
2009/01/29(木) 19:24:1910msおきにHashtableを監視してJTableにイベントディスパッチジョブ投げるスレッドを常駐させる。
Hashtable派生させたりMapやTableModelでラップしてもいいなら、他にも手はある。
0244デフォルトの名無しさん
2009/01/29(木) 19:25:19使ったことないけど
0245デフォルトの名無しさん
2009/01/29(木) 20:25:16あ、言われちゃった。
手抜き実装だけどこんな感じ。2秒ごとにMap操作して、JTableが更新される。
http://bucyou.mydns.jp/up_source2/codeview.php?u=ok&fn=2
>>244
ならんはず。
0246デフォルトの名無しさん
2009/01/29(木) 21:17:110247デフォルトの名無しさん
2009/01/30(金) 04:09:12変更する処理にトリガ噛ませてイベント受け取るようにしたほうがよく無いか?
ウェブ系とかjava前提の製品とかだとインストーラからjava GUIだったりはするね。
インストーラ作成用との便利なフレームワークとかあるんだっけか?
表示が微妙にださいってのは人それぞれだからなあ。窓すらださいって言い出すマカみたいな変人も居るし。マルチモニタとかにすら対応できてないマクのほうがださいだろって感じだが。
GCがアレなのか、使ってるともっさり感が増すし、メモリも喰いまくってるのが駄目だな。
それ故、MFC, VBにすら負けてしまう。java使いが作る側には不満無いけどね。純粋にアプリユーザの側にはjavaじゃないほうが快適。
0248デフォルトの名無しさん
2009/01/30(金) 07:39:08>変更する処理にトリガ噛ませて
それが243の言ってる”Hashtable派生させたりMapやTableModelでラップ”で、
その実装が、244のソースだろ。
MFC、VBには負けるかもしれないけど.NetのWinFormsとはいい勝負だと思う。
場合によってはSwingのほうが速いし。軽い。
0249デフォルトの名無しさん
2009/01/30(金) 10:30:43スレチだがマルチモニタ環境ってのはMacのほうが歴史がずっと長いんだけどな…
Windows XPじゃマルチモニタでカラープロファイルを別のをあてる、とかはできないしね。Vistaは知らん。
まー最近はWinのドライバのほうがマルチモニタでできること多いけれどもw
0250デフォルトの名無しさん
2009/01/30(金) 10:38:42個人的に、Macが先でMSがそれを追いかけたってのは、MSが先行するより信憑性がたかいw
0251デフォルトの名無しさん
2009/01/30(金) 10:52:35win98からマルチモニタ対応、しかしMacの対応時期がわからんかったw
0252デフォルトの名無しさん
2009/01/30(金) 13:35:57画像を拡大表示しているのですが、アニメーションGIFの拡大表示で困っています。
JLabelのアイコンにアニメーションGIFを設定すると、
フレーム切り替えのたびに以下のメソッドが実行されます。
public void paint(Graphics g)
public boolean imageUpdate(....
この時、毎回アニメーションGIFの画像を拡大してると表示がもっさりしてしまいます。
だから、一度拡大表示したフレームは拡大したイメージを保存しておいて、再利用したいのです。
そこで問題になるのは「表示しようとしてるのは何フレーム目なのか?」
これが分からないことなんです。
何か分かる方法しってる人いませんかorz
0253デフォルトの名無しさん
2009/01/30(金) 16:59:16問題なのはメニューとか操作GUIの設計。
マクの実装だと、メニューはメインモニターにしか表示されないはず。
窓や犬は、メインウィンドウ自体にメニュー付いてるから、メインモニターとかサブモニターとか関係無く自由に使える。
0254デフォルトの名無しさん
2009/01/30(金) 17:45:12サブモニタで右クリックしたら、メインモニタにメニューが出たり、
サブモニタで最大化したら、メインモニタで最大化したりw
サブモニタで最大化したら、メインモニタの解像度に広がった時は非常に困ったw
0255デフォルトの名無しさん
2009/01/30(金) 20:29:06やっぱりサブモニタに出て欲しいなあ。アプリはちゃんとサブ側に出る。
あ、当方WinXP+Sunの1.6系Java。
そのへん、Macはどうなんでしょ。
0256デフォルトの名無しさん
2009/01/30(金) 20:39:500257デフォルトの名無しさん
2009/01/30(金) 20:48:28前回終了時の表示位置覚えてるだけじゃなくて?
0258デフォルトの名無しさん
2009/01/30(金) 22:00:26俺のwinはタスクバーがサブモニタにあるんだが、これだと全部サブモニタに出ないとおかしくなるぜ
>>257でいいと思う
0259デフォルトの名無しさん
2009/01/30(金) 22:37:13プライマリモニターと呼ぶわけじゃないんだ?
0260デフォルトの名無しさん
2009/01/30(金) 22:52:01てなわけで、俺のタスクバーはサブモニタに配置してあります
メインかサブかは、画面の解像度とか設定する画面で設定できるっす
0261255
2009/01/30(金) 22:56:24・サブモニタに移動したエクスプローラからJARファイルをダブルクリック
いずれもサブモニタにアプリが出る。
ジオメトリ関連でやってることはsetLocationByPlatform(true)のみ。
これを外してもやはりサブモニタに出る。
サブモニタのコマンドプロンプトからjava.exe経由で起動すると
さすがにメインモニタにアプリが出た。
サブモニタのNetBeansから起動してもやっぱりメインモニタ。
0262デフォルトの名無しさん
2009/01/30(金) 23:03:33おもすれー
ちょっと試しになんか作ってみよう
0263デフォルトの名無しさん
2009/01/30(金) 23:09:57今自分はタスク管理系アプリを作成しています。
メモ帳でいいじゃんはいいこなしでw
0264デフォルトの名無しさん
2009/01/30(金) 23:22:40社内用にファイル処理系のアプリ。
0265デフォルトの名無しさん
2009/01/30(金) 23:33:15エロ画像を楽しく閲覧するためのツール
0266デフォルトの名無しさん
2009/01/31(土) 00:11:062chのスレッド監視してエロ画像勝手に収集するツール
0267デフォルトの名無しさん
2009/01/31(土) 00:30:01携帯電話とmacとwinでスケジュールを一元管理するソフト
0268デフォルトの名無しさん
2009/01/31(土) 00:50:080269デフォルトの名無しさん
2009/01/31(土) 01:01:11無駄にリッチなUIをもつ画像ビューワー
をJavaFXでつくりたい。
0270デフォルトの名無しさん
2009/01/31(土) 21:00:021) Canvasみたいなコンポーネントを作って、図形を全部自前で管理する。
2) 図形の種類毎にコンポーネントを作って、Panelとかに貼り付ける。
3) それ以外。思い付かないけど。
0271デフォルトの名無しさん
2009/01/31(土) 22:29:30ありがちなパターンだとShapeクラスを作ってそのクラスを継承したクラスを作る。
でJPanelを継承したShape描画用のコンポーネントを作って、paintComponentですべてのShpaeを描画する。
0272デフォルトの名無しさん
2009/01/31(土) 23:16:09ネットワーク・グラフ描画用のライブラリをいくつか使ったことがあるんだけど、
そのどちらでもない設計が多かった。>>271が近い。
図形の管理はドロー用コンポーネントが行い、
実際の描画は図形オブジェクトに委譲している、と言えばいいかな。
図形の種類ごとにクラスを作るのは2と一緒だけど、
これらのクラスは独自のクラス階層を構成していて、
つまりJComponentのサブクラスではないので、そのままではSwingに乗っからない。
代わりに、図形を載せて描画する専用のSwingコンポーネントがある。
このドロー用コンポーネントは、paintComponentをオーバライドしていて、
addされた図形オブジェクトすべてに対して、paint系メソッドを呼ぶようになっている。
これらの図形クラスのpaint系メソッドは、各図形のための適切な描画を行うことになっている。
図形の追加の度にドロー用コンポーネントを変更しなくていいので、すっきりする。
Open-Closed Principleに合致しているね。
ライブラリによっては、図形クラスのpaint系メソッドがさらに別のオブジェクトに委譲可能で
ここがAdaptableだったり(JListのレンダラみたいなの)、
図形クラスを、Swing非依存のモデルクラスと、Swing依存のビュークラスに分けて設計していたり、
さまざまだった。
この手のライブラリはいろいろあるので、見てみるといい刺激になると思う。
挙げるなら、OpenJGraphとかJGraphとかJungとかかな。
0273デフォルトの名無しさん
2009/01/31(土) 23:59:22思い切って資産捨てて透過JComponentベースで作り直す勇気も必要かも。
ドローツールとのことなので、まずは
・位置サイズのgetset、
・可視性のgetset、
・クリップしたGraphicsを渡すpaint
ぐらいの軽い独自インタフェースで十分だと思うけど。
0274デフォルトの名無しさん
2009/02/01(日) 00:07:19thx! 「グラフィックJava2」とか「Filthy Rich Clients」とか
引っくり返しながらいじってるんですが、既存コンポーネント以外
の話になると極めてプリミティブな部分しか載ってなくて、
どういう風に設計すればよいか、という部分については頭を
かかえてたので参考になります。
0275デフォルトの名無しさん
2009/02/01(日) 00:16:38や、今のところ、「JComponentのサブクラス作って、その上にマウスで
Rectangleが描けるようにナッター\(゚∀゚)/」というレベルなので……。
その先に進もうとして、「これをつかんで移動させたり変形させたりしよう
と思ったら、図形もJComponentのサブクラスにした方がええんちゃうか?」
というのが質問の発端です。
0276デフォルトの名無しさん
2009/02/01(日) 00:37:470277デフォルトの名無しさん
2009/02/01(日) 01:09:59宣伝乙。
0278デフォルトの名無しさん
2009/02/01(日) 01:36:34あれは素直にすごいだろ
jadで十分読めるから読んでごらん
0279デフォルトの名無しさん
2009/02/01(日) 02:05:58むしろ消せるオプションを標準実装にして欲しいくらいだ。気持ち程度、余計な事をしない分、起動が速く成るだろうし。
窓は融通が利くけど、マクはマクらしいとアポーが決めてるアプリの使い方しか出来ないように強制されてるのが嫌。
俺が買ったものくらい自由に使わせろって。
0280デフォルトの名無しさん
2009/02/02(月) 00:12:19既存のフロントエンドをSwingに移行させるんなら
そこそこ市民権を得そう。
0281デフォルトの名無しさん
2009/02/02(月) 05:31:37JavaSE6の機能でスプラッシュ出してるなら、起動速度は変わらない
0282デフォルトの名無しさん
2009/02/02(月) 12:00:55一定以上の時間指定したい
0283デフォルトの名無しさん
2009/02/02(月) 12:12:28起動すればソフトのタイトル見えるんだし、わざわざ邪魔なスプラッシュ表示しとく意味ねえよ
0284デフォルトの名無しさん
2009/02/02(月) 13:38:010285デフォルトの名無しさん
2009/02/02(月) 13:40:56スプラッシュって起動中だからちょっとまっててな。ってニュアンスが一番よさげなのにw
0286デフォルトの名無しさん
2009/02/02(月) 13:44:23#include<gcj/cni.h>
#include<javax/swing/JFrame.h>
#include<javax/swing/JButton.h>
#define JS(str) ::JvNewStringUTF(str)
int main(void)
{
::JvCreateJavaVM(NULL);
::JvAttachCurrentThread(NULL,NULL);
{
JFrame *frame=new JFrame(msg);
frame->add(new JButton(JS("Okey")));
frame->setDefaultCloseOperation(JFrame::EXIT_ON_CLOSE);
frame->pack();
frame->setVisible(true);
}
::JvDetachCurrentThread();
return 0;
}
JFrameが表示された後、即main関数を脱出してしまう。
当然といえば当然だが、これを上手いこと防ぐ方法は無いか?
0287デフォルトの名無しさん
2009/02/02(月) 15:02:38try {
while (frame->isVisible()) {
Thread->sleep(1000);
}
} catch (InterruptedException e) {
// 華麗にスルー
}
0288デフォルトの名無しさん
2009/02/02(月) 20:39:52Frameの表示を遅らせれば?
0289デフォルトの名無しさん
2009/02/02(月) 22:08:46スレッドで分離する方法とかもあるんだけど、
定石的な方法は無いだろうか?
>>288
どういう事?いまいち想像が付かないが。
0290デフォルトの名無しさん
2009/02/02(月) 22:24:38普通にjavaだけでやる分には、main抜けても問題ないからわかんないっす。
そして、俺も助けて欲しいことが。
ttp://sandalman-no-blog2.blogspot.com/2008/01/java6-jtree_03.html
ここのソースなんだけど。
JTree内でDnDすると、ツリーが閉じてしまうんだ。
JTreeの以外からドラッグしたのをJTreeにドロップする分には閉じない。
JTreeからJTreeにDnDするとドロップされた側が閉じてしまう。
わけわかんねーっす、誰か助けて。
0291290
2009/02/02(月) 22:39:56// node.removeFromParent();
((DefaultTreeModel)tree.getModel()).removeNodeFromParent(node);
// ((DefaultTreeModel) tree.getModel()).reload();
0292290
2009/02/02(月) 22:41:26node.removeFromParent();
((DefaultTreeModel) tree.getModel()).reload();
↓
// node.removeFromParent();
((DefaultTreeModel)tree.getModel()).removeNodeFromParent(node);
// ((DefaultTreeModel) tree.getModel()).reload();
こうしたら閉じなくなったっす。
node.removeFromParent();ってなんか使いにくいんですかね?
0293デフォルトの名無しさん
2009/02/03(火) 04:35:280294デフォルトの名無しさん
2009/02/03(火) 09:55:010295288
2009/02/03(火) 14:44:18スプラッシュが消えるのはFrame等が表示されるまでだから。
下のを-splash:temp.pngとかで適当にスプラッシュ表示させてみ。
import javax.swing.*;
public class SplashTest {
public static void main(String[] args) throws Exception {
Thread.sleep(5000);
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame frame = new JFrame();
frame.add(new JLabel("てすと"));
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
}
0296デフォルトの名無しさん
2009/02/05(木) 19:47:24いいだけなんだけどな。
0297デフォルトの名無しさん
2009/02/05(木) 21:28:430298デフォルトの名無しさん
2009/02/05(木) 21:36:090299デフォルトの名無しさん
2009/02/05(木) 23:08:460300デフォルトの名無しさん
2009/02/05(木) 23:20:25スプラッシュにラーメンタイマー機能をつければいい!!
で、何の話だっけ?
0301デフォルトの名無しさん
2009/02/06(金) 02:12:040302デフォルトの名無しさん
2009/02/06(金) 02:15:240303デフォルトの名無しさん
2009/02/06(金) 02:18:000304デフォルトの名無しさん
2009/02/06(金) 04:22:440305デフォルトの名無しさん
2009/02/06(金) 20:05:070306デフォルトの名無しさん
2009/02/06(金) 23:02:170307デフォルトの名無しさん
2009/02/06(金) 23:04:42頭使えよ
5分設定で起動してから1分後にお湯を入れればいいんだ
0308デフォルトの名無しさん
2009/02/06(金) 23:19:520309デフォルトの名無しさん
2009/02/07(土) 18:06:37もうお前らこれ使えよ…
0310デフォルトの名無しさん
2009/02/07(土) 18:27:570311デフォルトの名無しさん
2009/02/07(土) 19:01:30Swing Application Frameworkをバリバリ使ってます、方ってこのスレでいますでしょうか?
創るJavaでJavaを再学習しているのですが、実際のアプリSwingだといろいろ管理が面倒だな、と思っていたときに
上記のフレームワーク見つけたのですが、1.03になってもあまり流行っている感じがなかったので
問題があったのかぁ、と思ったので・・・・
使っている方で、「この辺が便利だよ」、とか「これが使えない」とかありましたら教えていただけないでしょうか?
0312デフォルトの名無しさん
2009/02/07(土) 19:57:39使ってないけど、J2SE7に含まれるらしいよ
けど誰か忘れてたけどアプリケーションクラスがシングルトンになってる時点でだめだとか書いてたような・・・
0313デフォルトの名無しさん
2009/02/07(土) 23:27:34JMenuにはないでしょうか?
ポップアップメニューにJMenu追加して分岐させたら、
分岐させたメニューが表示できませんでしたw
setLightWeightPopupEnabled使わないとポップアップメニューを出せないような作りが悪いのかもしれませんが。
もしあったら教えてください。
0314デフォルトの名無しさん
2009/02/07(土) 23:41:38JMenu#getPopupMenu() で取ってきたポップアップメニューに setLightWeightPopupEnabled
0315デフォルトの名無しさん
2009/02/07(土) 23:47:57どう考えてもSwingの描画ぶっ壊してるから他の部分でも見えてないだけで問題があるかと。
0316デフォルトの名無しさん
2009/02/08(日) 00:01:10はい、継承してコネコネしてるJLabelの上だとポップアップメニューがでないんです。
いつか直さないと。
>>314
ありがとうございます。
JMenuの中にpopupMenuがあって気になってましたが、それでいけそうな気がします。
0317デフォルトの名無しさん
2009/02/08(日) 00:35:27めでたく上手くいきました。
ありがとうございました。
0318デフォルトの名無しさん
2009/02/09(月) 17:16:44この時、最大化した状態で終了すると、元に戻すボタンを押した時のサイズを取得できません。
この元の位置(できればサイズも)を最大化してる状態で取得する方法はないでしょうか?
※自分でやった事
ComponentAdapter#componentMovedを使って、
getExtendedState() == NORMALの時に位置を記憶させてみたものの、
最大化した時にgetExtendedStateがNORMALの状態で動いてしまい、
位置を-4,-4で記憶してしまいます。
マルチモニタでも動かしたいため、0以下の値を弾くわけに行かなくて困っています。
componentResizedが動く時はgetExtendedState() == MAXIMIZED_BOTHになっているため、
サイズはなんとか記憶させることができました。
0319デフォルトの名無しさん
2009/02/09(月) 18:12:180320デフォルトの名無しさん
2009/02/09(月) 20:23:340321デフォルトの名無しさん
2009/02/09(月) 21:02:12EDTを取得して何すんの?
↓でできるけど
import javax.swing.SwingUtilities;
public class GetEDT {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
//↓こいつがEDT
Thread edt = Thread.currentThread();
System.out.println(edt);
}
});
}
}
0322デフォルトの名無しさん
2009/02/09(月) 21:27:51それは分かりますが、単純にEDTが走ってればそれを返して、動いてなければnullみたいなのがありそうだなーと思っただけです。
確かに用途は少ないですね。
Thread#setUncaughtExceptionHandler()をEDTに設定したかったのですが、すでに取得する方法があればそれを使用しようと質問しました。
わざわざくだらない質問に答えていただきありがとうございました。
0323デフォルトの名無しさん
2009/02/09(月) 23:04:02ttp://java.sun.com/javase/ja/6/docs/ja/api/java/awt/EventQueue.html#isDispatchThread()
ttp://java.sun.com/javase/ja/6/docs/ja/api/java/lang/Thread.html#currentThread()
0324デフォルトの名無しさん
2009/02/10(火) 00:58:11OpenSwingはどうなん?
0325デフォルトの名無しさん
2009/02/10(火) 14:02:26それAWTのシステムキューだろ。
0326デフォルトの名無しさん
2009/02/10(火) 18:23:34その際空白文字は入力されないようにしたいのですが、
以下のようなやり方(いちおう動く)でよいのでしょうか?
もっと一般的な方法はあるでしょうか?
Keymap keymap = textComponent.getKeymap();
// スペースバーにアクションをマッピング
KeyStroke stroke = KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, 0);
keymap.addActionForKeyStroke(stroke, action);
// スペースバーが押されても空白文字が入力されないようにする
keymap.setDefaultAction(new DefaultEditorKit.DefaultKeyTypedAction() {
@Override public void actionPerformed(ActionEvent ae) {
String cmd = ae.getActionCommand();
if (!cmd.equals(" ")) {
super.actionPerformed(ae);
}
}
} );
0327デフォルトの名無しさん
2009/02/10(火) 20:08:46コピペでスペースが入ってきてもやっぱり弾くのかな。
ならばjavax.swing.text.DocumentFilterで弾くのが楽じゃない?
0328sage
2009/02/10(火) 21:13:11Documentに、特定の文字列が挿入されるのを防ぐ場合には、通常DocumentFilterを使う。
Documentにスペースが挿入されても構わなくて、キーボードからの入力のみフィルタするなら、
KeyListenerを使ったり、processKeyEvent(),processKeyBinding()等をオーバーライドして
実装することもできるけど、いずれもコードが汚くなるから、326の処理でいいと思う。
あとは、瑣末な問題だけど、個人的には、ActionEvent#getActionCommand()の戻り値が
nullでないとは規定されてないから、if (!cmd.equals(" ")) を!" ".equals(cmd)にするか、
if (cmd != null && !cmd.equals(" "))に変更するぐらいかな。
0329デフォルトの名無しさん
2009/02/10(火) 23:12:34おれが作るならばDefaultKeyTypedActionの継承はしないで
keymap.getDefaultAction()して保存おいてスペース以外ときは
そっちに移譲するようなActionにするかもしれない。なんとなく。
0330デフォルトの名無しさん
2009/02/10(火) 23:25:06ttp://java.sun.com/javase/ja/6/docs/ja/api/javax/swing/SwingUtilities.html#isEventDispatchThread()
> 現在のスレッドが AWT イベントディスパッチスレッドの場合に true を
> 返します。JDK Version 1.3 以降、このメソッドは
> java.awt.EventQueue.isDispatchThread() を呼び出すだけです。
なので、EDTの判定に用いるのは間違いじゃない。
0331326
2009/02/11(水) 00:24:39今回はキーが押された場合のみを処理したいので
DocumentFilter は使えないのですが、
回答ありがとうございます。
>>328 >>329 を参考にして
こんな感じにしてみました。
final Action defaultAction = keymap.getDefaultAction();
keymap.setDefaultAction(new AbstractAction() {
@Override public void actionPerformed(ActionEvent ae) {
String cmd = ae.getActionCommand();
if (!" ".equals(cmd)) {
defaultAction.actionPerformed(ae);
}
}
} );
UIによって独自のデフォルトアクションが
セットされるかもしれない(?)ので、
>>329 の案のほうがよいかと。
0332デフォルトの名無しさん
2009/02/11(水) 00:30:05単にEDTと言ったらjavaの場合SwingEDTの方を指す場合が多いからややこしい。
0333デフォルトの名無しさん
2009/02/11(水) 01:47:13システムキューって何ぞ?
用語が一般的過ぎて、ぐぐってもそれらしきものが引っかからん。
説明資料へのリンク希望。
AWTイベントキューとは違うもんなんだよね?
0334sage
2009/02/11(水) 10:31:21Actionに委譲するのは良いんだけど、
>UIによって独自のデフォルトアクションがセットされるかもしれない
ということを考慮するなら、委譲するActionの参照を保存してたらダメでしょ。
UI変更時に、上記のコード自体が再実行されるなら、アリだけど。
0335デフォルトの名無しさん
2009/02/11(水) 17:23:09同じ、AWTのEDTの事をAWT event queues systemと表記する場合とSystem Queueと表記する場合がある。
今はどうなってるが知らんが。
0336デフォルトの名無しさん
2009/02/11(水) 19:36:49んー、そうすると、昔は知らんが、今はシステムキュー==AWTのEDT==SwingのEDTなんじゃ?
>>330に書いたように、Java1.3 以降は
javax.swing.SwingUtilities.isEventDispatchThread() == java.awt.EventQueue.isDispatchThread()
なんだし。
0337326
2009/02/11(水) 23:57:03説明不足でしたが
updateUI() をオーバーライドして
super.updateUI() の後に処理を書いているので
たぶん大丈夫だと思います。
0338デフォルトの名無しさん
2009/02/19(木) 21:59:44http://java.sun.com/javase/ja/6/docs/ja/api/java/awt/FontMetrics.html#getMaxDecent()
0339デフォルトの名無しさん
2009/02/19(木) 22:48:12ところで Cloneable はスペルミスなのに
Closeable は間違いじゃないんだな。
ややこしい。
0340デフォルトの名無しさん
2009/02/20(金) 13:56:330341デフォルトの名無しさん
2009/02/20(金) 18:53:19問題ないと思うけど。
0342デフォルトの名無しさん
2009/02/21(土) 15:16:20互換用のjar吐くフリーソフトとか作ったら需要あるかな。
メソッドシグネチャだけコピーして、どれを呼んでもErrorなげる実装とかいうやつ。
0343デフォルトの名無しさん
2009/02/23(月) 09:18:34java.*、javax.*、sun.*以下のクラスは変えちゃいかんのよ。
勝手にクラス追加するのも禁止されてる。
0344デフォルトの名無しさん
2009/02/24(火) 17:34:57<a href="#hoge">Hoge</a>
. . . . . .
<a name="hoge">ここにくる</a>
とやって、ページ内でジャンプさせることってできないんだっけか?
0345デフォルトの名無しさん
2009/02/24(火) 18:54:43クリック監視はHyperlinkListenerで。
そこからJEditorPane#scrollToReference("#hoge")でなんとかなんないかな。
0346デフォルトの名無しさん
2009/02/24(火) 19:42:27ありがとう!
これから試してみる。
0347デフォルトの名無しさん
2009/02/24(火) 22:07:18ありがーと!
うまくいった。
JEditorPane#scrollToReference("hoge")
で、#はいらないようです。
0348デフォルトの名無しさん
2009/02/24(火) 22:28:040350デフォルトの名無しさん
2009/02/26(木) 20:39:23あほらしい方法だけど
public void mouseClicked(MouseEvent e) {
JComponent c = (JComponent)e.getSource();
for(MouseListener l :c.getParent().getMouseListeners()){
l.mouseClicked(e);
}
}
0351デフォルトの名無しさん
2009/02/26(木) 22:34:160352デフォルトの名無しさん
2009/02/26(木) 22:48:150353sage
2009/02/26(木) 22:54:12350 みたいに実装するなら、MouseEventを変換してやらないと。
0354デフォルトの名無しさん
2009/02/26(木) 22:57:080355デフォルトの名無しさん
2009/02/26(木) 23:07:01俺も>>350みたいにリスナーぶち込みで対処したことがある
0356sage
2009/02/26(木) 23:17:41java.awt.Component#dispatchEvent(AWTEvent)嫁。
0357349
2009/02/27(金) 00:35:17>>350から355のみなさん、どうもありがとうございました。
0358デフォルトの名無しさん
2009/02/27(金) 01:09:26addMouseListener(MouseEvent) を呼べば
>>349 に書かれてるような挙動になるけど。
0359デフォルトの名無しさん
2009/02/27(金) 01:40:53public void keyPressed(KeyEvent e) {
c.removeKeyListener(this);
}
});
どさくさにまぎれて、一度だけ実行されるリスナーの小技。(流れ上、マウスリスナでないのは手抜き)
めったに使う機会がないと思うけど。。
0360デフォルトの名無しさん
2009/02/27(金) 01:54:28Iteratorのループで出来ないかと思ってた〜
0361デフォルトの名無しさん
2009/02/28(土) 12:05:56とすると一回目だけすごく遅いんですが、フォントの読み込みは
何かテクニックがあるんでしょうか?
0362デフォルトの名無しさん
2009/02/28(土) 17:07:54いずれにせよロード時間はかかる
0363デフォルトの名無しさん
2009/03/01(日) 17:17:19Eclipse3.4.1
WindowsXP SP3
上記の環境があり、そこでGUIアプリをJavaで作成しようと思っています。
Swing(?)ってのをElipseのメニューから探したのですが、見当たりません。
JavaSEをアンインストールして、JavaEEをインストールするのが妥当な選択なのでしょうか?
それともplug-inがまた別にあるのでしょうか?
0364デフォルトの名無しさん
2009/03/01(日) 17:39:46LANケーブルを抜いてクビをククルのが最速
0365デフォルトの名無しさん
2009/03/01(日) 17:49:20最速か否かは聞かれてないだろww
0366デフォルトの名無しさん
2009/03/01(日) 17:54:37自分でソースコード書いて全部作ることになるっす。
net beansとかいうの使うと、VBみたいなポトペタを標準でできるらしい
eclipseもプラグイン導入するとポトペタできるらしい
が、swingでポトペタやったことないんでわかりません。
0367デフォルトの名無しさん
2009/03/01(日) 18:23:02Swingやるなら現状ではNetBeans一択らしい。
EclipseプラグインのVE(VisualEditor)は使いもんにならんそうな。
俺はEclipseで手打ちしてるけどナー。
# EcilpseからSwingアプリを起動すると、フォント構成ファイルが無視されて、
# 日本語じゃないフォントで日本語がレンダリングされるという問題も……。
# おかしいなー、フォント構成ファイルの読み込み自体は正常に行われてるんだが。
0368デフォルトの名無しさん
2009/03/01(日) 20:00:470369デフォルトの名無しさん
2009/03/01(日) 21:02:050370デフォルトの名無しさん
2009/03/01(日) 22:51:25他にもいるでしょ、こんな人。
0371デフォルトの名無しさん
2009/03/01(日) 23:11:34VEは使ってみて、脱力した。
正直、自分の脳内でレイアウト組んだほうがマシ。
最近は更新もされてないんじゃなかったっけ?
0372デフォルトの名無しさん
2009/03/03(火) 01:20:54これって普通なの?
0373デフォルトの名無しさん
2009/03/03(火) 08:18:06アンチエイリアスかければ?
0374デフォルトの名無しさん
2009/03/03(火) 23:11:33余裕で俺、とウチの社内全員。
0375デフォルトの名無しさん
2009/03/04(水) 00:14:31NetBeansでそのままつくらずに、Eclipseに持ち込む理由はなんですか
0376デフォルトの名無しさん
2009/03/04(水) 00:27:24Javaで比較的簡単にホットデプロイする方法。
まず、デプロイしたいクラスのベースとなるHogeを作っておきます。
そして、それを継承したHoge00というクラスを作ります。
ただし、このクラスのファイル名はHogeXX.javaという風にします。
コンパイルできなければ対策を考えますが、クラスをpublicにしなければ通るようです。
そして、修正してデプロイするときには、Hoge00をHoge01という風にクラスの名前も変えます。
ファイル名はそのままです。
クラス名を変えるとコンストラクタ名まで変えないといけません。この時の小技として
コンストラクタの処理を全て関数にしてHoge00クラスにはコンストラクタを記述しないようにします。
その為、Hogeクラスには空のデフォルトコンストラクタを用意しておきます。
あとは、コンパイルしてシステムのクラスローダを使ってHoge01クラスを読み込んで
Hogeにキャストして使用できます。Hogeにはインターフェースとなる関数を用意しておきます。
従来の方法だと別のクラスローダを使ったりするので、同じクラスを違うクラスであるとしてしまう為
キャストしたり出来ません。なので、リフレクションなどを使ってアクセスする事になります。
これがどうもうまくないと思ったので、別の方法を考えたら思いつきました。
今からサンプルを作ります。
0377デフォルトの名無しさん
2009/03/04(水) 01:39:21ホームページに置きました。
なぜか、antから起動しないとToolProvider.getSystemJavaCompiler()がnullになってしまうので
antを使ってください。この辺を調べてみます。でゎ、おやすみ。
0378デフォルトの名無しさん
2009/03/04(水) 01:53:060379デフォルトの名無しさん
2009/03/04(水) 10:33:20だんだんわかるようになってきた
とりあえず簡単なテキストエディタやブラウザは作れるようになった
0380デフォルトの名無しさん
2009/03/04(水) 11:28:11JAVA_HOME\lib\tools.jarにクラスパスが通ってない事が原因でした。
0381デフォルトの名無しさん
2009/03/04(水) 20:24:280382デフォルトの名無しさん
2009/03/05(木) 02:06:570383デフォルトの名無しさん
2009/03/05(木) 09:36:170384sage
2009/03/06(金) 00:33:36それとも検証方法自体が間違ってるの?
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4765353
0385デフォルトの名無しさん
2009/03/06(金) 00:42:390386デフォルトの名無しさん
2009/03/06(金) 00:44:550387デフォルトの名無しさん
2009/03/06(金) 00:46:000388デフォルトの名無しさん
2009/03/06(金) 00:50:16↓スレッドセーフだと書いてあるんだが・・・
http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/javax/swing/text/JTextComponent.html#setText(java.lang.String)
0389デフォルトの名無しさん
2009/03/06(金) 01:13:56テキストのモデルであるDocumentへの書き込みがアトミックであったとしても、
UIスレッドを用いてコンポーネントから何らかの値をとってくるメソッドで
Documentのインスタンスを2回以上使うような操作をする全てのメソッドは
その間はDocumentへの書き込みを排他していないといけないはずなのだが、
少なくとも、getTextメソッドでは、そんなめんどくさいことはやってない。
0390389
2009/03/06(金) 01:15:330391デフォルトの名無しさん
2009/03/06(金) 01:18:310392デフォルトの名無しさん
2009/03/06(金) 01:43:30>.少なくとも、getTextメソッドでは、そんなめんどくさいことはやってない。
setTextの話だったんだけど、typo?
0393デフォルトの名無しさん
2009/03/06(金) 01:53:44getTextが変な値を返す原因がsetTextをUIスレッド以外でアクセスしたことにあるなら、
setTextはスレッドセーフだといえる?
0394デフォルトの名無しさん
2009/03/06(金) 07:33:43setTextの時点で変な値にならないのであれば、setTextはスレッドセーフじゃないの?
(よくわかってないかもしれん・・・)
そもそも>>384の再現コードは、getTextした値が""や"12"や"21"になることがあり、
以下のように思ってるんだが、違うかな?
""は、setTextが値を一度クリアしたタイミングで、getTextしているから。(getTextがスレッドセーフではないから)
"12"や"21"はsetTextがロックする前にAbstractDocument#getLengthを呼び出していることが原因。
(setTextもスレッドセーフではない?)
0395デフォルトの名無しさん
2009/03/06(金) 13:04:40別スレッドからsetText()して結果的に画面に"12"や"21"や""が描画される
ことがないのであれば setText() はスレッドセーフといえる…のかな?
でも現状は >>394 のいうようにsetText()もスレッドセーフじゃないように見えるなぁ
0396デフォルトの名無しさん
2009/03/06(金) 17:43:09setText()するたびに文字列を溜めておいて、最後に検証するというのはどうだろう。
0397デフォルトの名無しさん
2009/03/06(金) 19:28:23たまに、"12"と"21"が出てくる。
0398デフォルトの名無しさん
2009/03/06(金) 22:27:20Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: java.io.NotSerializableException: com.sun.java.swing.plaf.windows.XPStyle$Skin
っていわれるんだけど、どうすりゃいいの?
0399デフォルトの名無しさん
2009/03/08(日) 00:12:39これは期待してもいいんだろうか。
0400デフォルトの名無しさん
2009/03/08(日) 01:08:000401デフォルトの名無しさん
2009/03/10(火) 10:41:550402デフォルトの名無しさん
2009/03/10(火) 20:24:140403デフォルトの名無しさん
2009/03/14(土) 13:39:140404デフォルトの名無しさん
2009/03/15(日) 01:06:200405デフォルトの名無しさん
2009/03/15(日) 01:15:03Javaの勉強を始めたばかりで、プログラミング言語Java第四版を読み終わったところ。
まあまあ読みやすかった。訳も気にならなかった。
Head Firest Java 第二版を読んでる最中で、
面白いと思うけど、実用性には欠けると思っている。
ざっと機能を概観する入門書と、詳しい内容の2冊進めてもらえるとうれしい。
こんなところでどうでしょう。
0406デフォルトの名無しさん
2009/03/15(日) 02:16:030407デフォルトの名無しさん
2009/03/15(日) 06:07:53わしは本読んでると眠くなるんで、いきなりソースコードと戦う派なんだが
0408デフォルトの名無しさん
2009/03/15(日) 15:29:020409デフォルトの名無しさん
2009/03/15(日) 15:39:15詳しい内容ではないが実践的な内容ならEffective Java。
Swing関係ないけど。一通りJavaで組めるようになって開発規模が
大きくなってきた頃に手に取ると大変有用な本だと思う。
0410デフォルトの名無しさん
2009/03/15(日) 19:03:06Swing本当に関係ないなww
Swingの本を薦めてくれ。
0411デフォルトの名無しさん
2009/03/15(日) 19:23:35申し訳ない。ただJava勉強中のようだったのでつい。
確かにSwing関係ないけど間違いなく勉強になる良い本だよ。
「良いクセ」を学べる本なので、中級へのステップアップ時には
是非読んだ方が良いですよ。
Swing本については、他の人よろしく〜
0412デフォルトの名無しさん
2009/03/15(日) 19:27:20気持ちはありがたいが、既に本棚にあるのだww
0413デフォルトの名無しさん
2009/03/15(日) 19:29:06Swingはグーグル先生に聞いてなんとかした、
読んでないからいい本なんて分からないんだぜ
Effective Javaは良さそうだな、読んでみようか
0414デフォルトの名無しさん
2009/03/16(月) 00:31:160415デフォルトの名無しさん
2009/03/16(月) 00:57:22ちゃんと本を読まなかったので、
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
の必要性を知らなかった。
人が書いたコードを見ても、余計なことをしてると思っていた。
0416デフォルトの名無しさん
2009/03/16(月) 02:46:43解説頼む。
0417デフォルトの名無しさん
2009/03/16(月) 03:12:48Swingは、スレッドセーフじゃないから、初期化もイベントディスパッチスレッドで実行しないといけない。
invokeLaterを使うと後でイベントディスパッチスレッドで実行される。
0418デフォルトの名無しさん
2009/03/16(月) 03:23:09スレッドセーフじゃないんだってさ。
0419デフォルトの名無しさん
2009/03/16(月) 10:10:35Swingの入門書の次くらいに読むといい本。
0420デフォルトの名無しさん
2009/03/16(月) 23:55:45本屋でSwing Hackをみてきました。見た感じTIPS集みたいですね。
よさそうな入門書だと「Java GUIプログラミング」のVol.1, Vol2なのですが、
ちょっと本気すぎる感じです。以外にSwingの本って売ってないですね。
0421デフォルトの名無しさん
2009/03/18(水) 02:54:08本を買う前に最初はsunのjavaサイトにあるswing関連のチュートリアルで十分じゃないか?
APIリファレンスのswingコンポーネントクラスの説明文の多くにリンクがあったりする。
0422デフォルトの名無しさん
2009/03/18(水) 02:58:11>>414で紹介されてるね。
0423デフォルトの名無しさん
2009/03/18(水) 03:06:57いや読むけどさ(ブツブツ
0424デフォルトの名無しさん
2009/03/18(水) 04:21:31入門書ってどれもほとんど大差ないから。
「Java GUIプログラミング」が本気すぎるとなると習う前に慣れたほうが良いかも。
となるとSwingチュートリアルのソースがベストかな。
英文を隅々まで読まなくても、ソース読んで、実行してみればだいたいわかってくる。
0425デフォルトの名無しさん
2009/03/18(水) 20:45:24ありがとう!やってみる。
0426デフォルトの名無しさん
2009/03/18(水) 22:52:15表示した際にダイアログのボタンじゃなくてJPanel内の特定のコンポーネントの
方にフォーカスがあたるようにすることってできる?
0427デフォルトの名無しさん
2009/03/19(木) 01:06:24???
0428デフォルトの名無しさん
2009/03/19(木) 01:47:02JOptionPaneをカスタマイズしてJPanelを埋め込んだ場合に、ダイアログのOK/Cancelボタンではなくて追加したJPanel内のコンポーネントに入力フォーカスを当てたい、ということだと思われる。
0429デフォルトの名無しさん
2009/03/19(木) 08:22:29swing フォーカスでぐぐりゃ解決しそう
0430デフォルトの名無しさん
2009/03/19(木) 11:23:07そういうことです.わかりにくい文ですみません.
>>492
ぐぐってみました.ttp://terai.xrea.jp/Swing/DefaultFocus.html
JOptionPane#showXXXDialog()系だとJDialogやJFrameがとれないから
FocusTraversalPolicyをセットしたりWindowLister#windowOpend()や
ComponentListner#componentShown()でrequestFocus()呼べないよなー
とか思ってました.
んで上のページの EventQueue#invokeLater() 方式を試してみましたが
手元の環境ではJOptionPaneの場合フォーカスはOKボタンの方になってしまいました…
0431430
2009/03/19(木) 11:39:29public static void createAndShow(){
final JTextField textField = new JTextField("Hello");
EventQueue.invokeLater(new Runnable(){
public void run() {
textField.requestFocusInWindow();
}
});
int result = JOptionPane.showConfirmDialog(
null, textField, "Input Text",
JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
}
0432デフォルトの名無しさん
2009/03/19(木) 12:09:21実際にフォーカスを取得するまで、
requestFocusInWindow() を何度も呼んでみるとか。
ちょっと力技かもしれないけど HierarchyListener を使えば
JOptionPane.showXxxDialog() で作られるダイアログを取得できる。
そのダイアログに対して
WindowListener か ComponentListener を使えばよい。
「コンポーネントが画面に表示されたときに特定の処理を行う」
って、意外と難しいよね?
JSplitPane が表示されたときディバイダを中央に移動させる方法を
見つけるのに、すごく苦労したことがある。
0433430
2009/03/20(金) 00:09:49なるほど HierarchyListener は思いつきませんでした。これなら動きそうですね。
>>431 のコードはEventQueue#invokeLater()じゃなくて javax.swing.Timer で
1秒後とかやったら期待通り動いたんでタイミングの問題なんでしょうねぇ…
PC性能によって必要な delay 時間が変わるからTimerでやるのは微妙だなー
と思ったけど何度でも呼んでみる的アプローチで繰り返しありの Timer を
設定してフォーカスがとれたら Timer を止める、とかでもできそうですね…
0434デフォルトの名無しさん
2009/03/20(金) 01:56:28JOptionPane pane = new JOptionPane(textField, JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION);
JDialog dialog = pane.createDialog("Input Text");
dialog.addWindowListener(new WindowAdapter() {
@Override public void windowOpened(WindowEvent e) { textField.requestFocusInWindow(); }
});
dialog.setVisible(true);
dialog.dispose();
Object o = pane.getValue();
int result = (o instanceof Integer) ? (Integer)o : JOptionPane.CLOSED_OPTION;
うそくさいし、ひどく面倒
0435430
2009/03/20(金) 13:14:55確かに JOptionPane を直接使えばJDialogがとれますね。参考になります。
戻り値の扱い周りとかが大変面倒くさそうですけど…
0436デフォルトの名無しさん
2009/03/20(金) 13:26:02>「コンポーネントが画面に表示されたときに特定の処理を行う」
Component#addNotify() / removeNotify()をオーバーライドでできると思う。
0437デフォルトの名無しさん
2009/03/20(金) 17:46:14addNotify() が呼ばれたとき、
そのコンポーネントが表示されてるとは限らない。
たとえば Window.pack() を呼んだとき、
(たとえウィンドウが不可視であっても)
ウィンドウ内のすべてのコンポーネントの
addNotify() が呼ばれる。
あと、親コンテナの doLayout() が呼ばれるまでは
コンポーネントのサイズが確定しないので、
オーバーライドした addNotify() から
JSplitPane.setDividerLocation() を呼んでも機能しない。
0438デフォルトの名無しさん
2009/03/21(土) 15:59:56どういう方法が一番いいでしょうねぇ・・・
0439デフォルトの名無しさん
2009/03/21(土) 19:12:38その具体的な方法でしょうか?
0440デフォルトの名無しさん
2009/03/21(土) 19:57:58上から1行ずつアニメーションしてさらさらと出てくるような表や
項目を追加したらふわっと最終行が浮かんでくる
といったような描画をどうやってやるかということに悩んでいます
Timer自体はいくらでも使えるのですが
0441デフォルトの名無しさん
2009/03/21(土) 20:18:33上げられた二つの例に限ってですが、代替策として、glasspaneでだますというのはどうでしょう?
それがいやなのであれば、Timerかなにかでアニメーションさせてください。
0442デフォルトの名無しさん
2009/03/21(土) 22:18:49JXLayer使えばいいと思うよ。
0443デフォルトの名無しさん
2009/03/21(土) 23:44:17どうにか、普通にスクロールさせる方法はないかね
0444デフォルトの名無しさん
2009/03/22(日) 04:22:23無効にするしか。
0445デフォルトの名無しさん
2009/03/22(日) 13:51:40ツールチップを常に重量コンポーネントとして表示すればよいと思う。
普通 JScrollPane でコンポーネントがスクロールされるときは、
現在表示されているビューポートの外観を少しずつずらしてコピーすることで、
高速なスクロールを実現している。
しかし、軽量コンポーネント(たとえばツールチップ)が
上のレイヤーに重なっているときは、
スクロールされるたびにビューポート全体を再描画しなくてはならないので遅くなる。
0446デフォルトの名無しさん
2009/03/22(日) 20:35:26ありがとうございます
GlassPaneを調べてみますね。それ以外の場合、Timerでアニメーションするとよいとのことですが
アニメーションの内容はどのようなものを?
TableSellRendererやJTableなどをいくら拡張しても中々難しそうですね・・・
>>442
なかなかすごそうなコンポーネントです。これはどういうものでしょうか?
0447デフォルトの名無しさん
2009/03/26(木) 02:49:32ColumnBindingに対してvalidatorを設定した場合、
バリデーションエラーが発生した行の取得はどのようにすればよいのでしょうか?
0448デフォルトの名無しさん
2009/03/28(土) 01:00:270449デフォルトの名無しさん
2009/03/28(土) 07:03:52Y_AXISなBoxLayoutで子コンポーネントそれぞれにsetAlignmentX()でCENTER_ALIGNMENTを設定するのは?
FlowLayoutと違って子コンポーネントの幅は推奨サイズでなく最大サイズに影響されるので、
推奨サイズにしたいなら子コンポーネントの種類次第では最大サイズを設定してやらないといけないけれど。
0450デフォルトの名無しさん
2009/03/28(土) 10:24:26JLabel lb = new JLabel(text);
lb.setAlignmentX(Component.CENTER_ALIGNMENT);
lb.setMaximumSize(new Dimension(300,30));
return lb;
}
public static void main(String[] args) {
JPanel pn = new JPanel();
pn.setLayout(new BoxLayout(pn,BoxLayout.Y_AXIS));
pn.add(createLabel("hoge"));
pn.add(createLabel("fuga"));
//...
}
このようなコードで試してみましたが、やはりY方向には上に詰められてしまいます。
中央寄せしたいコンポーネントの上下をBox.createVerticalGlue()で詰めるというのはありでしょうか?
0451デフォルトの名無しさん
2009/03/28(土) 12:54:35縦方向に中央揃えでコンポーネントを並べることと勘違いしてた。
Box b = Box.createVerticalBox();
b.add(Box.createVerticalGlue());
b.add(コンポーネント);
b.add(Box.createVerticalGlue());
みたいな感じでいけるんじゃないかな。
でももしかすると上下のグルーが同じ比率で伸びずに完全なセンタリングにならないかも。
その場合、どれくらいで簡単な実現方法とならないかが分からないけれど、
GridBagLayoutやGroupLayoutみたいな少し複雑なレイアウトマネージャを使うとか、
縦方向について中央配置するマネージャを自作するとか。
0452デフォルトの名無しさん
2009/03/28(土) 12:57:58JLabel label1 = new JLabel("Hello, World!!");
label1.setBorder(BorderFactory.createTitledBorder("label1"));
label1.setAlignmentX(JComponent.CENTER_ALIGNMENT);
JLabel label2 = new JLabel("Goodbye, world!!");
label2.setBorder(BorderFactory.createTitledBorder("label2"));
label2.setAlignmentX(JComponent.CENTER_ALIGNMENT);
JPanel inPanel = new JPanel();
inPanel.setLayout(new BoxLayout(inPanel,BoxLayout.Y_AXIS));
inPanel.add(label1);
inPanel.add(label2);
inPanel.setAlignmentY(JComponent.CENTER_ALIGNMENT);
inPanel.setBorder(BorderFactory.createTitledBorder("in"));
JPanel outPanel = new JPanel();
outPanel.setLayout(new BoxLayout(outPanel,BoxLayout.X_AXIS));
outPanel.add(inPanel);
outPanel.setBorder(BorderFactory.createTitledBorder("out"));
JFrame frame = new JFrame("VerticalCenterLayout");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//frame.add(BorderLayout.WEST, outPanel);
frame.add(BorderLayout.CENTER, outPanel);
frame.pack();
frame.setVisible(true);
0453デフォルトの名無しさん
2009/03/29(日) 13:32:37javaでゲーム製作の本を買って、
コードがすべてAWTで書かれてるんですが、
swing用の本を買いなおしたほうがいいですか?
0454デフォルトの名無しさん
2009/03/29(日) 15:23:18別にそんなことないだろ。
Swingの本なら、awtの知識は前提としているだろうし。
0455デフォルトの名無しさん
2009/03/29(日) 17:13:35ありがとうございます。
今の本で勉強してみます。
0456デフォルトの名無しさん
2009/03/29(日) 23:39:38時間の無駄をいとわないならその本でOK。
時間の無駄がいやなら買いなおすべし。
0457デフォルトの名無しさん
2009/03/30(月) 00:44:33買い直す必要は全くないと思うが…
Swing の勉強をするつもりで買ったの?
0458デフォルトの名無しさん
2009/03/30(月) 04:25:34基本は大事。
0459デフォルトの名無しさん
2009/03/30(月) 06:53:59>>453
ゲームで、グラフィック表示ばっかりなら、Swingはあまり関係ないと思われる。
java.awt.Graphics2Dを使ってるから「コードがすべてAWT」というオチではないよな?
0460デフォルトの名無しさん
2009/03/30(月) 09:44:160461デフォルトの名無しさん
2009/03/30(月) 09:49:530462デフォルトの名無しさん
2009/03/30(月) 11:50:26コマンドアドベンチャーとかなら、普通に既存コンポーネントだけで作れるべ。
0463デフォルトの名無しさん
2009/03/30(月) 17:57:11シミュレーションだとJava2DとSwingでがっちり組むみたいよ。
最近ので、ちょっと期待してしまうDarkSideとか
http://www.darkside-game.net/index.jsp
自分ではJava3Dを使いたいんだけど再配布がな・・・
0464デフォルトの名無しさん
2009/03/30(月) 22:06:37Java Web Startにすると、そのあたりも自動でインストールしてくれるらしい
0465デフォルトの名無しさん
2009/04/02(木) 23:33:46そんなうまい話があるわけない。
開発者の手間は変わらない。(JNLPの分面倒か)
0466デフォルトの名無しさん
2009/04/03(金) 04:05:320467デフォルトの名無しさん
2009/04/03(金) 04:11:55http://pc11.2ch.net/test/read.cgi/tech/1033703640/909-915
詳しくはここを
https://j3d-webstart.dev.java.net/test/
これが参考になるかもしれない。
http://ziddy.japan.zdnet.com/qa4257080.html
0469デフォルトの名無しさん
2009/04/03(金) 08:21:420470デフォルトの名無しさん
2009/04/03(金) 08:59:32ネットワークアクセスしてもいいから
0471デフォルトの名無しさん
2009/04/03(金) 09:41:540472デフォルトの名無しさん
2009/04/03(金) 11:24:57マイコンピュータにしたいんですが、どうしたらいいでしょうか?
0473デフォルトの名無しさん
2009/04/04(土) 16:14:590474デフォルトの名無しさん
2009/04/04(土) 18:51:590475デフォルトの名無しさん
2009/04/05(日) 04:49:56まぁ JWS でデスクトップに好きな画像のショートカットアイコン作れるけどさ。
0476デフォルトの名無しさん
2009/04/05(日) 12:17:50編集不可能にするにはどうしたら良いでしょうか。
netBeansのエディタみたいにするには?
0477デフォルトの名無しさん
2009/04/05(日) 14:27:24setEditable() で切り替えるとか。
0478デフォルトの名無しさん
2009/04/05(日) 15:35:57DocumentListener とか使うのでは
0479デフォルトの名無しさん
2009/04/05(日) 15:38:42キャレットが移動するたびに必要に応じて
setEditable(boolean) を呼ぶとか。
こっちのほうがいいかも。
0480デフォルトの名無しさん
2009/04/07(火) 14:41:24試してみます。
0481デフォルトの名無しさん
2009/04/14(火) 19:46:23FileSystemView fileSystemView = FileSystemView.getFileSystemView();
この冗長さは、どうにかならんのか?
0482デフォルトの名無しさん
2009/04/14(火) 19:49:550483デフォルトの名無しさん
2009/04/14(火) 20:03:54嫌ならもう少し短い変数名使えば?
0484デフォルトの名無しさん
2009/04/14(火) 23:28:39import ore;
ore = new ore.gFSV();
で出来るようになるぜ。
0485デフォルトの名無しさん
2009/04/15(水) 01:13:41InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonWindowNotFocusedState.java
0486デフォルトの名無しさん
2009/04/15(水) 17:57:46おなじ行に3回も FileSystemView と書かなくてはならないのが問題というか。
せめて、こうするべきだったのでは。
FileSystemView fsv = FileSystemView.instance();
Toolkit.getDefaultToolkit() も同罪。
0487デフォルトの名無しさん
2009/04/15(水) 18:00:070488デフォルトの名無しさん
2009/04/16(木) 00:47:23おとなしくIDEに補完させましょう
# 型推論があればもうちょっとなんとか…
0489デフォルトの名無しさん
2009/04/16(木) 09:07:280490デフォルトの名無しさん
2009/04/16(木) 23:43:570491デフォルトの名無しさん
2009/04/17(金) 00:01:30Javaっぽい書き方
Map<String, String> map = new HashMap<String, String>();
いわゆる型推論
final map = new HashMap<String, String>();
↑HashMap<String, String>と補完される。
結局上みたいなやつじゃなくてコンストラクタの型引数が省略可能になるだけになったらしいが。
0492デフォルトの名無しさん
2009/04/17(金) 00:08:210493デフォルトの名無しさん
2009/04/17(金) 00:15:510494デフォルトの名無しさん
2009/04/17(金) 06:35:020495デフォルトの名無しさん
2009/04/18(土) 00:34:160496デフォルトの名無しさん
2009/04/18(土) 01:09:100497デフォルトの名無しさん
2009/04/18(土) 01:45:50SWTって本を見かけないから全く触れたことないなあ。
軽いのならちょっと調べてみる、�d
0498デフォルトの名無しさん
2009/04/18(土) 01:57:110499デフォルトの名無しさん
2009/04/18(土) 05:55:19シングルスレッドってw
0500デフォルトの名無しさん
2009/04/18(土) 11:28:270501デフォルトの名無しさん
2009/04/18(土) 11:31:55現存するGUIツールキットでスレッドセーフなものは無いぞ。
0502デフォルトの名無しさん
2009/04/18(土) 17:33:320503デフォルトの名無しさん
2009/04/18(土) 18:49:460504デフォルトの名無しさん
2009/04/18(土) 20:50:07軽いけれど役立たずだよ。
0505デフォルトの名無しさん
2009/04/19(日) 07:12:42それ以外は特にいらないけど。
0506デフォルトの名無しさん
2009/04/19(日) 11:10:11自前でパースして適当に配置したほうが(ry
0507デフォルトの名無しさん
2009/04/19(日) 11:23:390508495
2009/04/19(日) 15:11:00Swingでやるとして、500KBのHTMLを一気にでは無く少しずつ表示させることは出来ないだろうか。
スレッドを使ってやってみたら、HTMLの先頭部分は表示できたんだけどスクロールができない、助けて
0509デフォルトの名無しさん
2009/04/19(日) 15:39:35メモリ減らしたいならそんな感じだがスクロール早くしたいなら
スクロール時の描画アルゴリズムを考えるとかじゃなかろうか。
0510デフォルトの名無しさん
2009/04/20(月) 05:26:43EDT 処理やコンポーネントは相互変換できるから、あとそれができれば SWT との混在も
不可能じゃなさそうな気がするけど。
0511デフォルトの名無しさん
2009/04/20(月) 06:58:540512デフォルトの名無しさん
2009/04/20(月) 08:59:15さっさと俺アプリを修正しよう
0513デフォルトの名無しさん
2009/04/20(月) 15:07:48次のプログラムを実行して、サブフレーム表示ボタンを押すと描画領域を含むサブフレームが表示されるのですが、
サブフレームのクローズボタンを押して閉じてから再度サブフレーム表示ボタンを押すと、サブフレーム表示の瞬間に
ちらつきが起こります。一瞬白い部分が見えてから黒く塗りつぶされるのが目につくのです。JFrameのコンテントペインは
isDoubleBuffered() がtrueになるので、自動的にダブルバッファリングしてくれるはずと私は理解しているのですが、
なぜかちらつきが起こります。ちなみにactionPerformedメソッドをコメントアウトしてある方に置き換えるとちらつきが
起きないようです。しかし、この回避策はスマートとは言えませんし、なぜこれでうまくいくのかも不明です。
適切な解決策をご存知の方、ご教授ください。私の環境はMac OS X 10.4.11 J2SE 5.0です。
0514デフォルトの名無しさん
2009/04/20(月) 15:11:27import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JFrameTest extends JFrame{
JFrame subFrame;
DrawArea drawArea;//subFrameに貼り付ける描画領域
JButton button;//subFrame表示ボタン
public static void main(String[] args){
JFrameTest f=new JFrameTest();
f.setVisible(true);
}
public JFrameTest(){
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
button=new JButton("サブフレーム表示");
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(subFrame==null){
subFrame=new JFrame();
DrawArea drawArea=new DrawArea();
subFrame.add(drawArea,BorderLayout.CENTER);
}
subFrame.setBounds(210,0,500,400);
subFrame.setVisible(true);
}
0515デフォルトの名無しさん
2009/04/20(月) 15:13:16/*
public void actionPerformed(ActionEvent e){
if(drawArea==null){
drawArea=new DrawArea();
}
if(subFrame!=null){
subFrame.dispose();
}
subFrame=new JFrame();
subFrame.add(drawArea,BorderLayout.CENTER);
subFrame.setBounds(210,0,500,400);
subFrame.setVisible(true);
}
*/
});
getContentPane().add(button, BorderLayout.CENTER);
setSize(200,100);
}
class DrawArea extends JComponent{
public void paintComponent(Graphics g) {
g.fillRect(0,0,getWidth(),getHeight());
}
}
}
0516デフォルトの名無しさん
2009/04/20(月) 15:14:33以上です。
0517デフォルトの名無しさん
2009/04/20(月) 18:30:14手元の環境(OS X 10.5.6 Java 1.6.0_07) だとどちらの
コードでも初回表示の時からちらつく.
>DrawArea drawArea=new DrawArea();
>System.out.println("drawArea.doubleBuffered : " + drawArea.isDoubleBuffered());
としたときどうなるか?
0518513
2009/04/20(月) 23:49:50もちろんfalseと表示されますね。JComponentのdoubleBufferedはデフォルトでfalseですから。
ttp://wisdom.sakura.ne.jp/system/java/swing/swing8.html
を参考に
public void actionPerformed(ActionEvent e){
if(subFrame==null){
subFrame=new JFrame();
subFrame.getRootPane().setDoubleBuffered(true);
((JComponent)subFrame.getContentPane()).setDoubleBuffered(true);
DrawArea drawArea=new DrawArea();
subFrame.add(drawArea,BorderLayout.CENTER);
}
subFrame.setBounds(210,0,500,400);
subFrame.setVisible(true);
}
と変えてみましたが、結果は同じでした。
これってどうしようも無いんですかねえ。実はJFrameだけでなく、JDialogでも同様のことが起こるわけですが、
みなさんこの辺のことは不満を感じないのでしょうか。まあ実用上問題はないのだけれど、見た目も大事だと思うんですよ。
0519デフォルトの名無しさん
2009/04/21(火) 00:55:01横幅を指定するのはどうやるのでしょうか?
DefaultListModelで3文字ぐらいをaddしても横幅は8文字分とかにしたいです。
0520デフォルトの名無しさん
2009/04/21(火) 01:59:410521デフォルトの名無しさん
2009/04/21(火) 02:30:230522デフォルトの名無しさん
2009/04/21(火) 05:20:38コンピュータ関係だと使いやすい Unix 端末として使ってる人も多そうなのに。
0523デフォルトの名無しさん
2009/04/21(火) 08:13:22Macは昔から嫌いだが、MacのJavaは動作が違うのか妙に嫌われてるな
0524デフォルトの名無しさん
2009/04/21(火) 08:43:10を発表する会社のページ見るとかなりトンデモな発表になりそうで今から楽しみだぜ、
ttp://www.sys-audit.com/indexjp.html
0525デフォルトの名無しさん
2009/04/21(火) 08:53:44そこ読んだ限りでは単なる C/S システムライクなアプレット実装だな。
つうかページ一番下
> 探偵を使って当研究所関係者を執拗に尾行する企業があります。社員として採用してただ
> 同然で技術を入手しようとお考の上でのことでしょうが、暴力行為であり甚だしい
> 人権侵害ですのでお止めください。不正競争防止法に触れる可能性もあります。
妄想ワロタw
0526デフォルトの名無しさん
2009/04/21(火) 10:48:11つっこみどころ多すぎてワロタw
>ウィンドウの大きさを少し変化させてウィンドウの重なり具合を変化させることにより、
>ウィンドウマネージャに描画指示を出させます
コンポーネント入れ変えたら JComponent#revalidate() 呼べば?とか
そもそも CardLayout 使えばいいんじゃね?とか…
0527デフォルトの名無しさん
2009/04/21(火) 18:27:38revalidate呼べよ。
0528デフォルトの名無しさん
2009/04/22(水) 01:24:03言ったなら感想書いてくれよ
http://www.sys-audit.com/index1.html
とか見るとこの会社(というかこのおっさん)すごすぎるぞww
0529デフォルトの名無しさん
2009/04/22(水) 04:28:42xterm始めまともなターミナルいくらでもあるし。
わざわざマク使う様な香具師は皆無。マクって、あんまりオープンな環境じゃないしな。ソース見たい時に詰まる事は多い。
0530デフォルトの名無しさん
2009/04/22(水) 07:47:58Unix 系のターミナルやコマンド、gcc が付いてて Photoshop, Illustrator も動く。
名前を聞いて一般人が引かない。家族も使うしそこらの PC 屋で吊るしで買ってこれる。
そんな理由で MacBook 使っている。カーネルのソース必須な人は Linux 使えば
良いと思うけど、Unix のシェル積んでて主要なプロプライエタリソフトも使えるんで
便利だよ。仕事場で 5 人ほど自宅 PC を Mac に乗り換えてる。
スレチなんでこれ以上はやめとくが。
0531デフォルトの名無しさん
2009/04/22(水) 08:41:24飽きたとか言う以前にwindows(PC)使ってる人は、わざわざ高いMACなんか使わずそれぞれ目的があるんからPCにしてるんだと思うよ。
macだとquicktimeとobjcが標準なのが魅力だけどそれだけかもね。
windows media はどうしてるの?
ほかにwinだとゲーム(GPUプログラム)とか。
0532デフォルトの名無しさん
2009/04/22(水) 10:48:48QuickTimeよりは、DirectShowの方がスジが良いんじゃないかと思う。
といってもQuickTimeのAPIとかぜんぜん知らないんで、想像だけど。
DirectShowを使ったアプリ、コーデックはたくさんあるのに、
QuickTimeを使ったアプリってあまり見ない
のを考慮すると、使いづらいんじゃないかと思う。
個人的にはQuickTimeアプリってiTunesしか知らない。
コーデックはDivXとFlip4macとPerianぐらい?Flip4macはでかいwmv動画再生しようとすると、
「インポートしています」というダイアログで長々と待たされるのでイライラする。
0533デフォルトの名無しさん
2009/04/23(木) 00:07:250534デフォルトの名無しさん
2009/04/23(木) 00:18:270535デフォルトの名無しさん
2009/04/23(木) 01:26:240536デフォルトの名無しさん
2009/04/23(木) 10:37:08俺は市販のゲームだとかネトゲだとか、
自分の好きなフリーソフトがあるから、
それだけの理由でずっとメインストリーム使ってる。
0537デフォルトの名無しさん
2009/04/25(土) 03:37:230538デフォルトの名無しさん
2009/04/25(土) 05:03:45あとMSの売り上げ減らすことで、相対的な売り上げがあがる。
0539デフォルトの名無しさん
2009/04/25(土) 16:22:35msの客とは重なってないと思うよ。あっちは出来る本とかの充実やみんな使ってる安心感が大事。
0540443
2009/04/26(日) 11:24:07ツールチップを出したままホイール回してもスクロールしなくなりました。
さらに、ツールチップをクリックしてもツールチップ消えません。
なんいこったいでした。
そんなわけで、ホイール回したら問答無用でツールチップを消したいのでちょっと試してきます。
0541443
2009/04/26(日) 12:23:22spdf.addMouseWheelListener(new MouseWheelListener() {
@Override
public void mouseWheelMoved(MouseWheelEvent e) {
// ホイールを回したらツールチップを消す
ToolTipManager.sharedInstance().mousePressed(null);
}
});
こんな酷いコードになりましたが、
どうにかマウスホイール回したらツールチップが消えるようになり
スクロールもスムーズに感じます。
0542デフォルトの名無しさん
2009/05/13(水) 10:53:54そのページの一部分をマウスで選択します。
選択した部分だけのhtmlコードを取りたいのですが。
どうすればいいでしょう? お願いします。
0543デフォルトの名無しさん
2009/05/13(水) 10:58:31その通りのコードをくめば良いだけ
0544デフォルトの名無しさん
2009/05/13(水) 10:59:020545デフォルトの名無しさん
2009/05/13(水) 12:43:26その通りのコードをくめば良いだけのレベルとは思えないのだが。
>>542
まず、Javaで最近のホームページをまともに表示できるコンポーネントがありません。
Firefoxなどを埋め込む必要があります。SwingXにそういうコンポーネントがあったはずだけど、いま落ちてて確認できません。
https://swingx.dev.java.net/
そのコンポーネントで、選択位置のHTMLを取得するようなことができれば、それを使えばいいと思います。
Firefox + Firebugつかえばそのまま同じことができるので、そっちを使うほうが楽だと思う。
0546542
2009/05/13(水) 14:30:43目的とするページはなんとか表示できます。
JEditorPaneにurlを指定して表示させて見ました。
(表示で特定の文字が異様に大きく表示されてしまいます。なんとか制限したいです)
そして、マウスで特定の部分を選択しそのコードを抜き出そうとしたのですが。
文字しか取れませんでした。
期待しているのは、<a href="○○○〜">○○〜</a>とか、○○○○<br />
などですがなんとかなりませんでしょうか。
0547デフォルトの名無しさん
2009/05/13(水) 14:49:47別途読んでおいて、マウス選択した部分と生コードの合致部分のマッチングを
掛けるような処理が必要になるのではないですか?
生コードをDOMとして保持しておいて選択部分を条件にXQueryで切り出してくるとか。
或いはそれと類似の処理が可能なコンポーネントを使うとか。
0548デフォルトの名無しさん
2009/05/13(水) 17:28:06http://pc12.2ch.net/test/read.cgi/tech/1137771139/
【OLE】オートメーション総合スレ【ActiveX】
0549デフォルトの名無しさん
2009/05/14(木) 00:55:13プラットホーム依存の機能を呼ぶのは最後の手段だろ...
0550デフォルトの名無しさん
2009/05/14(木) 02:34:10選択してコードを抜き出すときに、どんな処理したんだ?
0551デフォルトの名無しさん
2009/05/14(木) 02:44:120552デフォルトの名無しさん
2009/05/14(木) 06:45:31IEならウィンドウズ依存でおk。
0553542
2009/05/14(木) 07:50:09>>547 さんのXQueryみたいなのはとても理解不能でむりです。
0554デフォルトの名無しさん
2009/05/14(木) 08:14:54選択してコピーしてクリップボードを見てみたら、なんかオブジェクト形式で入ってないかな?
XQueryは思ったより難しくないから、ちょっと気合いれて勉強してみると便利。
0555542
2009/05/14(木) 08:54:46もうひとつ質問お願いします、
他のブラウザではちゃんと表示されるのに、
JEditorPaneにhtmlページを表示させると、文字が異常に大きく
表示してしまうのですが、小さく設定する方法はないでしょうか?
0556デフォルトの名無しさん
2009/05/19(火) 00:42:28キーを押しっぱなしだと、スムーズに描画が行われず、数秒おきに数十行追加、削除される感じになってしまいます。
PCのスペックにも問題はなく、処理中に負荷もかかってないようなのですが、何が悪いのでしょうか?
0557デフォルトの名無しさん
2009/05/19(火) 23:25:420558デフォルトの名無しさん
2009/05/20(水) 10:31:360559デフォルトの名無しさん
2009/05/20(水) 18:08:580560デフォルトの名無しさん
2009/05/20(水) 18:19:50http://www.jcraft.com/
http://www.jcraft.com/wiredx/index.html
0561デフォルトの名無しさん
2009/05/21(木) 01:38:42Vectorでは拒否されるらしいな
0562デフォルトの名無しさん
2009/05/21(木) 01:49:060563デフォルトの名無しさん
2009/05/21(木) 02:50:530564デフォルトの名無しさん
2009/05/21(木) 11:53:240565デフォルトの名無しさん
2009/05/23(土) 10:55:24これじゃだめですか
ttp://javafx.com/samples/
0566デフォルトの名無しさん
2009/05/23(土) 11:43:320567566
2009/05/23(土) 11:44:18ttp://www.itmedia.co.jp/news/articles/0905/21/news022.html
0568デフォルトの名無しさん
2009/05/23(土) 16:11:42国内ではそこそこユーザーがついたんだが、
海外で使ってもらうのにどこで宣伝すればいいのか
わからなくて困ってたんで。
でもサンはコンシューマー相手の商売がヘタだし、
あっという間に閑古鳥が鳴きそうな気もする。
0569561
2009/05/23(土) 16:45:39そういう事ではなくて、
フリーソフトの検索サイトで投稿できる所知らないかって事ね。
せっかく作っても検索サイトに載せられなきゃ探してもらえんでしょう
0570デフォルトの名無しさん
2009/05/23(土) 19:01:030571デフォルトの名無しさん
2009/05/23(土) 19:21:380572561
2009/05/23(土) 19:52:24一応2chに聞いてるんだけどね
まぁそんなサイトないっていうか、Swingスレに
この質問自体がタブーって事ですか(笑)
0573デフォルトの名無しさん
2009/05/24(日) 00:40:54そういった背景込みで質問しないと聞かれたほうも分からないんじゃないかい
0574デフォルトの名無しさん
2009/05/24(日) 00:44:420575デフォルトの名無しさん
2009/05/24(日) 09:09:410576561
2009/05/24(日) 11:53:48せっかくJWSがあるのにVectorとかに登録できないのはつらいですね〜
0577デフォルトの名無しさん
2009/05/24(日) 16:55:060578564
2009/05/25(月) 16:38:31こんな構想があるんだね.JWS リリースしたころにこういうの
やってれば今頃もっとアプリケーション用途に Swing アプリケーションが
普及してたかもしれないのに…まぁ JavaOne の発表に期待.
0579デフォルトの名無しさん
2009/06/23(火) 10:37:53∧,,∧ ∧,,∧
∧,,(´-ω-)(-ω-`)∧,,∧
( ´-ω)旦o) (o旦o(ω-` )
(_ o[( ´-) (-` )]o _)
└'ー-(_ )][( _)ー'┘
'ー'^ー' 'ー'^ー'
0580デフォルトの名無しさん
2009/06/25(木) 20:42:43DefaultStyledDocument
のUNDO処理にバグみつけた
IMEがらみでデータが壊れるパターンがあるみたい
日本語入力はやっぱあんましSUNでもテストできてないんかねえ
0581デフォルトの名無しさん
2009/06/25(木) 21:01:350582デフォルトの名無しさん
2009/06/26(金) 02:05:47再現コードを作って、BugParadeに投稿しておくれ。
0583デフォルトの名無しさん
2009/06/26(金) 07:33:01投稿直後に自動メールが着たきり
なしのつぶてで
いつのまにかエントリーごと消えてた
英語が意味不明なので嵐あつかいされたのかもしれんけど
サンプルソースためしもしない
英語めんどくさいのでもう投稿したくない
0584デフォルトの名無しさん
2009/06/26(金) 07:39:32最小の再現ソースに JDK ソースの該当箇所まで出して指摘したのに。
英語云々じゃなくて、最新βのフィクス最優先で安定リリース版の些細なバグなんて後回しって雰囲気。
0585デフォルトの名無しさん
2009/06/26(金) 15:42:48ここに書いてSunのチームがみることもある。
0586580
2009/06/26(金) 21:28:19まあサンプルの方のバグでないことの証明の意味でも一応再現コード張る
ぶっちゃけJFrameにJTextPane貼り付けて
UNDO対応に最低限のコードを追加してるだけ。
一応実行環境はWindows(他の環境でどうなるかも興味ある)
再現手順
1、起動したら複数行適当に入力する
2、2行目以降の先頭文字から適当に選択状態にする
3、IMEをONにして選択状態の文字列を日本語の適当な文字列で置き換える
4、UNDO(ctrl+Z)を繰り返して日本語入れ替え前まで戻る。
⇒最初に選択した文字列が元の場所と前の行の末尾に2箇所出現する。
(この状態でもう内部のデータが壊れているのでこのままいじりつづけると例外とかおきる事もある)
0587580
2009/06/26(金) 21:35:27import javax.swing.*;
import javax.swing.undo.*;
public class UndoBug extends JFrame {
public UndoBug() {
this.setSize(200, 200);
JTextPane jTextPane = new JTextPane();
this.getContentPane().add(jTextPane);
final UndoManager undoManager = new UndoManager();
jTextPane.getDocument().addUndoableEditListener(undoManager);
ActionMap actionMap = SwingUtilities.getUIActionMap(jTextPane);
InputMap inputMap = SwingUtilities.getUIInputMap(jTextPane,
JTextPane.WHEN_FOCUSED);
0588580
2009/06/26(金) 21:37:06public void actionPerformed(ActionEvent arg0) {
if (undoManager.canUndo())
undoManager.undo();
}
});
actionMap.put("REDO", new AbstractAction() {
public void actionPerformed(ActionEvent arg0) {
if (undoManager.canRedo())
undoManager.redo();
}
});
inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_Z, ActionEvent.CTRL_MASK),
"UNDO");
inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_Y, ActionEvent.CTRL_MASK),
"REDO");
}
public static void main(String[] args) {
(new UndoBug()).setVisible(true);
}
}
0589デフォルトの名無しさん
2009/06/26(金) 23:51:310590デフォルトの名無しさん
2009/06/27(土) 09:11:32英語環境で再現出来なきゃ、あちらは確認できず消すしか無いと思う。
youtubeにでも動画うpして説明したら?
あとマクのはアポー謹製だから、アポーにバグ報告するべき。
0591デフォルトの名無しさん
2009/06/27(土) 12:25:300592デフォルトの名無しさん
2009/06/27(土) 12:37:350593デフォルトの名無しさん
2009/06/27(土) 12:45:480594デフォルトの名無しさん
2009/06/27(土) 13:37:32マクは移植部分以外はSUNのソースを取り入れてるだけ(Swingも)
LinuxカーネルのバグをLinusのMLじゃなくてUbuntuとかLedHatにするようなもん
無駄とはいわないが迂遠すぐる
0595デフォルトの名無しさん
2009/06/27(土) 13:40:40お前のJavaのchar型は何ビットか言ってみろ
0596デフォルトの名無しさん
2009/06/28(日) 03:02:01文字列使うときはマルチバイトで処理しないと。
0597デフォルトの名無しさん
2009/06/28(日) 04:50:18確かにUndo出来る回数を勘違いしてる????
0598デフォルトの名無しさん
2009/06/28(日) 04:56:44>587 のどこにストリームが使われているか言ってみろ
0599デフォルトの名無しさん
2009/06/28(日) 05:11:11UNDO回数を間違えているというより
DefaultStyledDocumentのデータ構造が壊れて
同じ部分文字列が二箇所にレンダリングされてしまっている
Default(以下略)の中の
GapContentの文字列そのものは重複していない
0600580
2009/06/28(日) 05:13:11もうすっかり朝だよ寝る
0601デフォルトの名無しさん
2009/07/03(金) 23:49:02JCalendarのコンポーネントをカスタムで追加する方法
および追加できるコンポーネントをご存知の方いませんか?
Kai Toedter氏が作成した jcalendar-1.3.3.jar
http://www.toedter.com/en/jcalendar/index.html
などよさげだったのですが、こういうのをポトペタで使えるようにしたいんです。
0602デフォルトの名無しさん
2009/07/04(土) 13:18:46ツール > パレット > Swing/AWTコンポーネント > JARから追加
0603デフォルトの名無しさん
2009/07/04(土) 15:34:13しかし、そのコンポーネントが機能しない(ボタンのフォームだけで押せないとか)んですが、次はどうやればいいんでしょうか。
グリッドレイアウトを使うとリストっぽくレイアウト出来るのですが、JListとかの要素にしてしますとコンポネントじゃなくてレンダラーとなってしまい機能しないんでしょうか。
0604デフォルトの名無しさん
2009/07/04(土) 15:55:200605デフォルトの名無しさん
2009/07/04(土) 16:09:11それは仕方ないなぁ
JListやJTableなんかだとあくまでレンダラで、実際にそこにコンポーネントは存在しないからね
0606デフォルトの名無しさん
2009/07/04(土) 16:09:46つまりそれはリストのレンダラーであって、それはボタンじゃないようなんですけど、リストの要素にするともうそれはコンポーネントとして扱うことは出来ないんでしょうか。
いま、コンポーネント開発してるところなんですけど無理ならあきらめます。
0607デフォルトの名無しさん
2009/07/04(土) 16:15:20インタフェイスの適当なモデルを実装して、それと同じようにすることは出来ないんでしょうか。
スイングはポトペタなら楽ですがコンポネントを新しく開発するのは複雑で骨が折れます。
0608デフォルトの名無しさん
2009/07/04(土) 16:23:10JListならJList自身のマウスイベントとかを受け取って、それがJList中のどこのアイテムのどの辺の位置なのか、という変換を行って、レンダラにその変換したイベントを送ればできそうだけど。
もちろんその際レンダラからJList側に適切なリペイントの要求を出さないといけないだろうけどね。
0609デフォルトの名無しさん
2009/07/04(土) 16:40:24そんなことして開発してるようじゃそのうち保守できなくなりますよ。
0610デフォルトの名無しさん
2009/07/04(土) 16:45:52じゃあ自分でコンポーネント作りなさいw
0611デフォルトの名無しさん
2009/07/04(土) 17:38:02そうすると差別化出来ないけどなwww
0612デフォルトの名無しさん
2009/07/04(土) 23:53:41その方法でできるけどそれは設計間違えてるからなぁ。
レンダラの実装にComponent使ったSwingチームのミスだと思う。
0613デフォルトの名無しさん
2009/07/06(月) 00:33:59むしろセル内にコンポーネントを配置できるようにしてほしかった (が数千行とか行くと
リソース面で死ぬかな)。
0614デフォルトの名無しさん
2009/07/06(月) 01:16:220615デフォルトの名無しさん
2009/07/06(月) 01:57:420616デフォルトの名無しさん
2009/07/06(月) 02:58:40別にIDEとか使わなくてもjavafxはエディタのみで開発しやすいから、sdkとかコンパイラは、低PC(1G,500MB程度)でも動くようにしてほしい。
この辺りがどうにかならないなら、javaseの方でいいかなって思う。
0617デフォルトの名無しさん
2009/07/06(月) 04:18:540618デフォルトの名無しさん
2009/07/06(月) 05:15:58セルにコンポーネントを貼り付けるんじゃなくて、セルにあるコンポーネントを普通に使いたいってことだろ。
日本語に不自由してるようだね。
0619デフォルトの名無しさん
2009/07/06(月) 06:55:370620デフォルトの名無しさん
2009/07/06(月) 08:54:12なんか君、もう終わってるよね。
0621デフォルトの名無しさん
2009/07/06(月) 09:00:240622デフォルトの名無しさん
2009/07/06(月) 09:13:44おじさんは多分skinにこだわりすぎてんだろうけど、cui, guiにはまったく関係ない。
そのうちjavafxとかリッチ何とかのskinが多くなるけど、硬いおじさんの石頭でもguiとはどういうものなのか分かってくるんじゃないの?w
0623デフォルトの名無しさん
2009/07/06(月) 10:21:39ユニックス系とウィンドウズ系は融通効くよ。同じサンからの直接配布だし。
0624デフォルトの名無しさん
2009/07/06(月) 14:10:340625デフォルトの名無しさん
2009/07/09(木) 20:25:370627デフォルトの名無しさん
2009/07/09(木) 23:27:160628デフォルトの名無しさん
2009/07/10(金) 01:41:100629デフォルトの名無しさん
2009/07/10(金) 03:57:270630デフォルトの名無しさん
2009/07/10(金) 07:11:000631デフォルトの名無しさん
2009/07/10(金) 14:56:21一部のOpenTypeフォントが使えないよね。
Windows OSがレンダリングできるフォントであっても。
0632デフォルトの名無しさん
2009/07/10(金) 21:12:04それとOpenTypeの描画が実装されてないだけでモノは揃ってる。
0633デフォルトの名無しさん
2009/07/11(土) 04:53:400634デフォルトの名無しさん
2009/07/11(土) 10:05:46そこまで使いたければ、自前でTT組み込んでビットマップ展開して表示すれば?
普通にwin32アプリ組んで、JNIで機能だけ頂いたほうが幸せになれそうだが。それなんてjava3d状態だが。
0635デフォルトの名無しさん
2009/07/11(土) 10:28:190636デフォルトの名無しさん
2009/07/11(土) 14:44:05>そもそもOTのフォント使いたいような理由とか有るのか?
それを決めるのは、アプリ開発者じやなくて、アプリ利用者。
>そこまで使いたければ、自前でTT組み込んでビットマップ展開して表示すれば?
>普通にwin32アプリ組んで、JNIで機能だけ頂いたほうが幸せになれそうだが。それなんてjava3d状態だが。
そんなことせずに、C#/WinForms使う。黙ってSwingを捨てる。
こういう不自由さや、不自由がいやなら自分でやれよ的な空気が、Java/Swingは(業務用アプリのような)
ユーザーに選択権の無いアプリにしか使えないって評価につながるんだよ。
使いたいアプリじゃなくて、使わされるアプリ。
0637デフォルトの名無しさん
2009/07/11(土) 22:00:43キチガイの言い分にまんまと乗って、それがswingの全てだと思ってるだろ?
お前にはjava自体向いてないかもな。
0638デフォルトの名無しさん
2009/07/12(日) 16:53:27画面が100とかあるようなものだと、
J2EE見たいな構成になってしまいます。
●アプリケーション全体の画面遷移を司るオブジェクト
●画面+メディエーター+その画面で利用するオブジェクトを入れたロケータ これを大体画面数分
皆さんどんな形になりますか?
それと、swing用にJSFみたいなフレームワークってあるのでしょうか?
画面の初期化処理と終了処理を共通化するようなフレームワークでもいいです。
0639デフォルトの名無しさん
2009/07/12(日) 19:11:100640デフォルトの名無しさん
2009/07/12(日) 19:14:26それってnetbeansについてるあれか?
0641デフォルトの名無しさん
2009/07/13(月) 01:36:14今の風潮から言えば、こういう奴は即効嫌われる。
0642デフォルトの名無しさん
2009/07/13(月) 01:58:160643デフォルトの名無しさん
2009/07/13(月) 20:14:210644デフォルトの名無しさん
2009/07/14(火) 20:17:380645デフォルトの名無しさん
2009/07/15(水) 13:24:23このサンプルプログラムを実行したのですが、
実行例のようにはならずにボタンが引き延ばされずに全て左寄せで小さいままのボタンになってしまうのですが何が原因でしょうか?
0646デフォルトの名無しさん
2009/07/15(水) 13:58:43多分、中の人も知らないだろうから、もっと内容を良く出来るかもよ。
0647デフォルトの名無しさん
2009/07/16(木) 05:11:23javaのバージョンはなに使ってるの?
こっちは、1.6.0_13-b03 WindowsXP
0648デフォルトの名無しさん
2009/07/16(木) 10:06:19配布元のアポーに文句言えば?
0649645
2009/07/16(木) 12:08:141.5.0_18から1.6.0_14に変えたら動作例の通りになりました。
0650デフォルトの名無しさん
2009/07/22(水) 07:42:17substance使いたいんだけど、JAppletのinit(),start()周辺の初期化が
よくわからない
0651デフォルトの名無しさん
2009/07/22(水) 12:37:43やりかたは一緒だと思うけど
0652デフォルトの名無しさん
2009/07/25(土) 12:46:15長時間ウインドウ最小化して、いざ再開すると10秒くらい操作受け付けないし、画面真っ白なんだけど。
MS製品もそういうのあるけど、Javaだと長時間でなくとも普段から切り替えは遅い。
これってSwingの仕様なのかな。それともJavaの仕様なの?
0653デフォルトの名無しさん
2009/07/25(土) 19:36:270654デフォルトの名無しさん
2009/07/25(土) 19:57:09OSの仕様。
0655デフォルトの名無しさん
2009/07/26(日) 02:30:200.5秒くらい真っ青になるのが気になる。
SPSSのグラフなんかは全て画像ファイルに変換して出力してるのでグラフィック関係の問題ではなさそうだな。
SWINGやOSあたりを疑ってもいいかもね。
0656デフォルトの名無しさん
2009/07/26(日) 15:54:330657デフォルトの名無しさん
2009/07/26(日) 15:54:550658デフォルトの名無しさん
2009/07/27(月) 01:10:38どっちが本当なの?
0659デフォルトの名無しさん
2009/07/27(月) 01:25:35まぁ、なによりawtだと出来ることが限定されて窮屈だよね。
0660デフォルトの名無しさん
2009/07/27(月) 18:12:350661デフォルトの名無しさん
2009/07/27(月) 23:35:34awtで同じようなことやろうとすると面倒で人によっては遅いプログラムになってしまう。
結果としてSwingのほうが速いと言える。
こんな認識でいいの?
0662デフォルトの名無しさん
2009/07/28(火) 04:36:11ここでは、AWTはAWT重量コンポーネントのことだろ。
0663デフォルトの名無しさん
2009/07/28(火) 06:28:23包丁とサバイバルナイフぐらい似て非なるもの。
0664デフォルトの名無しさん
2009/07/28(火) 16:30:330665デフォルトの名無しさん
2009/07/29(水) 02:05:19ただ・・・・・詭弁だな。
普通は、>>662 の認識でいいはず。
0666デフォルトの名無しさん
2009/07/29(水) 09:16:48年よりは早く死ねよ
0667デフォルトの名無しさん
2009/07/31(金) 08:07:300668デフォルトの名無しさん
2009/07/31(金) 09:39:120669デフォルトの名無しさん
2009/07/31(金) 14:40:560670デフォルトの名無しさん
2009/08/11(火) 08:54:30AWTとSwingが出てきました。
どちらを覚えればいいのでしょうか?
(スレタイに「低速」とあるので、Swingは遅いんでしょうか…)
また、この2つ以外にも方法はあるんでしょうか?
もっといいのがあれば教えてください。
よろしくお願いします。
0671デフォルトの名無しさん
2009/08/11(火) 10:22:33もっといいかどうかは知らないが、SWTというのもある
0672デフォルトの名無しさん
2009/08/11(火) 10:33:15やっぱりJaneに戻すか
0673デフォルトの名無しさん
2009/08/11(火) 12:27:57SWTというのは知らなかったので、調べてみました。
それぞれ一長一短があるんですね。
http://oshiete1.goo.ne.jp/qa2962803.html
AWTとSwingはどの環境でも使えるということなので、
やっぱりこの2つを使いこなせるようにしたいと思います。
ありがとうございました!
0674デフォルトの名無しさん
2009/08/11(火) 19:21:27このスレになって勝手にスレタイから消されてAWTと入ってるSwingスレもテンプレに入れてないのはなんで?
>>1の独断?
0675デフォルトの名無しさん
2009/08/11(火) 20:25:520676デフォルトの名無しさん
2009/08/12(水) 00:21:56SWTを今使う必要はほとんどないと思う。
SwingとAWTを比較する場合は、コンポーネントのことだと思うが、AWTコンポーネントを今使う必要はまったくない。
SwingにしろAWTにしろ、NetBeansでいろいろコンポーネント配置していじくればいい。
0677デフォルトの名無しさん
2009/08/12(水) 06:42:41Swingが遅いというのはほぼ「神話」レベルの話。
Swing+java2Dでもこれくらいはできる
ttp://jdrafter.com/
オープンソースでNetBeans製だから参考にするといい。
0678デフォルトの名無しさん
2009/08/12(水) 15:07:51古いパソコンだと激重で使い物にならないので
参考書の説明に従ってテキストエディタ+コマンドプロンプトでやってます。
NetBeansは必須でしょうか?
昔Borland C++ Builderというのを使ったことがあって、GUIをエディタで
配置してイベントを手入力するだけでソフトを作れたので便利でしたが、
NetBeansを使うメリットもそれと同じでしょうか?
0679デフォルトの名無しさん
2009/08/12(水) 17:57:26必須ではないが..
GUIの画面デザインでコンポーネントをダブルクリックすれば
イベントハンドラを自動で作成してくれるから、処理を記述する
だけで簡単なモノは作れる。
そのほか、"."でクラスのメゾッドやフィールドの候補の表示や
自動的にインポートを記述してくれたり、クラス内のメゾッドの
名称変更すれば、参照している全てのソースの名称を変えてくれ
たり、コンパイル前にエラーを指摘してくれたりするし、デバッガ
も付いてるし...あげればきりがない。
ま、エディタ+コマンドプロンプトの環境から比べれば、開発効率は
移植ゴテとショベルカー位の差はあるな。
てか、激重ってどんなパソコン使ってんだ
0680デフォルトの名無しさん
2009/08/12(水) 18:18:230681デフォルトの名無しさん
2009/08/12(水) 18:30:19ありがとうございます。
そんなに便利ならぜひ使いたいですね…。
パソコンはメインのマシンが壊れたので、古いのを使ってます。
Pentium3 866GHz、メモリ256MBで、HDDがカリカリ鳴ってアクセスに時間がかかるミニノートです ><
0682デフォルトの名無しさん
2009/08/12(水) 18:36:37使えば分かる
どっちもCPU/メモリ食いだし、どんなに便利でも使いたくないって人が少なくないのも事実
便利さが分かる前に操作がややこしくて諦める人もいる
0683デフォルトの名無しさん
2009/08/12(水) 18:59:28イタいな。平成ひとケタのテクノロジーつーか886GHzてスパコンか?
0684614デフォルトの名無しさん
2009/08/12(水) 19:51:53環境が整えばどっちもどっちかな。
でも、エクリプスでNetBeans並の環境を整えたければ、いくつかプラグインを入れる必要があるし、
プラグインも玉石混交でカオス状態。NetBeansには、最初から必要な環境が整ってるから、これ
から始める初心者にはおススメかな。
GUIはNetBeansで、その他はエクリプスという人もいるけど。
0685デフォルトの名無しさん
2009/08/12(水) 21:50:31残念だが、Javaで開発するにゃメモリが絶望的に足り無さ過ぎる。
最低でも1GBは欲しい。
0686デフォルトの名無しさん
2009/08/13(木) 00:01:370687デフォルトの名無しさん
2009/08/16(日) 00:37:330688デフォルトの名無しさん
2009/08/16(日) 09:39:20NetBeansの利点を見出せず結局キーバインドやリファクタリングが使いやすいeclipseで書いてる。
0689デフォルトの名無しさん
2009/08/16(日) 21:03:310690デフォルトの名無しさん
2009/08/17(月) 12:09:23ウィンドウ数の制限とか管理してるの?
0691デフォルトの名無しさん
2009/08/17(月) 12:47:260692デフォルトの名無しさん
2009/08/17(月) 15:05:020693デフォルトの名無しさん
2009/08/17(月) 23:28:050694デフォルトの名無しさん
2009/08/18(火) 05:11:55これが便利だなー。NetBeansっていつからかEclipseのプロジェクトを読み込むことができるようになったしね。
両方開いたままで編集しても、特に問題は起きないよ。
0695デフォルトの名無しさん
2009/08/21(金) 19:52:45それは小細工。
ローカルチューニングは、よほど上手くないと害の方が大きい。
富豪的プログラミングは、リソース気にしないでまず書いてみて
そこから直していくというスタイル。
はじめから細かいこときにすんなって、教えだよ。
どんだけ気を使ってバブルソート書いたって、
メモリ使いまくるマージソートの方が、まだ何とかできる余地があるってこと。
0696デフォルトの名無しさん
2009/08/22(土) 00:21:17/,.=゙''"/
/ i f ,.r='"-‐'つ____ 細けぇ事はいいんだよ!!
/ / _,.-‐'~/⌒ ⌒\
/ ,i ,二ニ⊃( ●). (●)\
/ ノ il゙フ ::::::⌒(__人__)⌒::::: \
,イ「ト、 ,!,!| |r┬-| |
/ iトヾヽ_/ィ"\ `ー'´ /
0697デフォルトの名無しさん
2009/08/22(土) 23:35:180698デフォルトの名無しさん
2009/08/22(土) 23:37:060699デフォルトの名無しさん
2009/08/22(土) 23:52:080700デフォルトの名無しさん
2009/08/22(土) 23:58:020701デフォルトの名無しさん
2009/08/23(日) 00:30:10まぁSwingには関係ないんだけど。
0702デフォルトの名無しさん
2009/08/23(日) 18:24:310703デフォルトの名無しさん
2009/08/23(日) 20:07:220704デフォルトの名無しさん
2009/08/23(日) 23:29:15メモリに画像を全部置いておくとOutOfMemoryになるし、
SoftReferenceとかで画像を持っておいて参照切れたときに退避させてた
一時ファイルから読み込むってロジックにすると重くて軽快さゼロ。
こういうのってみんなどうやって対処してるの?
俺Webアプリ畑でやってきたからこういうときの
クライアント側の処理がさっぱり分からん。
0705デフォルトの名無しさん
2009/08/24(月) 01:31:44あとどのAPI使ってんのかも
0706デフォルトの名無しさん
2009/08/24(月) 01:35:05アクセスパターン依存だから何とも言えんが、LRUなキャッシュを(どっかから探してくる|自分で実装する)とか、アクセスパターンの局所性を利用して、次にアクセスされる可能性のあるあたりをバックグラウンドでプリフェッチしておくとか。
0707デフォルトの名無しさん
2009/08/24(月) 04:13:48想定する必須スペック:PenM1.6 メモリ1G程度
イメージをロードするAPI:ImageIO
画像形式:PNG
画像サイズ:640x480〜1920x1200ぐらい
画像数:100枚程度
こんな感じかな。
>>706
画像は順序があって、現在見ている画像の周辺は
サムネイルとして表示さるのでアクセスされる可能性が高いと思う。
先頭と最後もなんとなくアクセスされる可能性が高そう。
けど、アクセスパターンを分析してそれに最適化した実装をするのはまだ段階として早い気がする。
けど、LRUキャッシュは有効な気がしてきたんでとりあえずそれでパフォーマンス見てみます。ありがとう。
0708デフォルトの名無しさん
2009/08/24(月) 04:47:1132ビット階調なら特にメモリ喰う。
0709デフォルトの名無しさん
2009/08/24(月) 09:45:13jpg JPEGImageDecoder
bmp ImageIO
GIF ImageIcon
上記以外 ImageIcon → ImageIconで読み込めなかったらImageIO
最後のはなんでこんな処理にしたんだ
0710デフォルトの名無しさん
2009/08/24(月) 13:49:06IIOは自分で制御しなかったらメモリに全部置いたような。
>結構な大きさの画像を画面にガンガン出す
PenMのmem 1Gにこれは無理。遅くなって当然。
>>706のやり方がいいんだろうねぇ
あと1920*1200はスケーリングせずに表示するの?
>>706
LRUじゃなくてLFUじゃね?
0711デフォルトの名無しさん
2009/08/24(月) 13:55:09正直言ってAPIはダサいけどね。
俺はJPEG,GIF,PNGはToolkitで読み込んで、
それ以外はImage IO使ってる。
0712デフォルトの名無しさん
2009/08/24(月) 15:15:35>>709だとGIF,PNGはToolkit
jpgが将来消えても不思議じゃないとかwebに書かれてるJPEGImageDecoder
他はToolkitを試して無理ならImageIO
JPEGImageDecoderじゃないと色が化けるファイルがあってな…
0713デフォルトの名無しさん
2009/08/29(土) 16:32:040714デフォルトの名無しさん
2009/08/31(月) 06:27:48当時は最適化の技術も低く、DirectDrawの利用も積極的ではなく、マシンのメモリも少なかったので、Swingは重かった。
ただしAWTコンポーネントはメモリやリソースを喰うので、最初の表示は重いかもしれない。
今は、Swingでも実用に十分耐えるレベル。
0715デフォルトの名無しさん
2009/08/31(月) 08:33:50逆に、描画サブシステムの高速化で、Windowsにしろ、Linuxにしろ、Macにしろ、プラットフォームネイティブの
ウィンドウシステムのコンポーネント使う方が、ウィンドウシステムとのやりとりが重くなって
きてる。Windowsでいうと、SendMessage/PostMessage。
その証拠に、OS(Windows/Mac/Linux)、Webブラウザ(IE/Safari/Firefox)問わず、ウィジェットを
大量かつ頻繁に生成し、レイアウトも変わるものは、軽量ウィジェットをつかってる。
つまり、現時点では、ネイティブのコンポーネント使うよりも、軽量ウィジェットの方が、動作を高速化する余地がある。
0716デフォルトの名無しさん
2009/08/31(月) 14:47:58実線等に変更するにはどうすればよいでしょうか?
0717デフォルトの名無しさん
2009/08/31(月) 18:42:52軽量かどうかに関係なくコンポーネントをたくさんポトペタすりゃ遅くなるから、コンポネントの自作が進むのはあたりまえじゃないの?
どうせコンポネント開発すらしたこと無いのに知識を披露したいだけなんでしょ?w
0718デフォルトの名無しさん
2009/08/31(月) 22:14:35>>>715
>軽量かどうかに関係なくコンポーネントをたくさんポトペタすりゃ遅くなるから、コンポネントの自作が進むのはあたりまえじゃないの?
まー、数の問題じゃないんだな。これが。
コンポーネント1個でも、ウィンドウシステムとのやりとりが増えると、耐え難いほどパフォーマンスが落ちる。
やってみればわかるよ。
0719デフォルトの名無しさん
2009/08/31(月) 22:20:480720デフォルトの名無しさん
2009/08/31(月) 22:27:410721デフォルトの名無しさん
2009/08/31(月) 22:42:34それって、ネイティブは遅い、JVM(java ツールキット)は速いってことでしょ。
その速い遅いって根拠が自分が作ったAWT,SWINGアプリを根拠として遅いって言うなら君が無知なだけ。
最近awtが速くなったのはネイティブ(directxとか)を使うようになったからなのに、まるで根拠も無くネイティブ(ツールキット)って遅いって勘違いしてるでしょ。
そんなに知識を披露したいなら、AWTイベントキューの話とかできるの?
0722デフォルトの名無しさん
2009/08/31(月) 23:27:42そんなに間違ってはいないと思う。
確信はない。
0723デフォルトの名無しさん
2009/09/01(火) 02:25:28それに今はマシンスペック上がったんで気にすることじゃない。
最近だとSwingのパイプラインの効率が悪くて遅かったが5,6辺りで改善されたからやっぱり今は遅くない。
0724デフォルトの名無しさん
2009/09/01(火) 12:58:32> 最近awtが速くなったのはネイティブ(directxとか)を使うようになったからなのに、
> まるで根拠も無くネイティブ(ツールキット)って遅いって勘違いしてる
この発言はそうとう恥ずかしい
0725デフォルトの名無しさん
2009/09/01(火) 15:12:11恥ずかしいやつ登場ww
0726デフォルトの名無しさん
2009/09/01(火) 16:18:13宿題終わった?w
0727デフォルトの名無しさん
2009/09/01(火) 16:19:550728デフォルトの名無しさん
2009/09/01(火) 16:40:160729デフォルトの名無しさん
2009/09/01(火) 17:20:32俺はお前が何と戦っているのか(ry
0730デフォルトの名無しさん
2009/09/01(火) 17:46:420731デフォルトの名無しさん
2009/09/01(火) 17:55:23きみって馬鹿?w
0732デフォルトの名無しさん
2009/09/01(火) 18:04:130733デフォルトの名無しさん
2009/09/01(火) 18:15:17今日は誰と戦ったんですか?
0734デフォルトの名無しさん
2009/09/01(火) 19:00:56隊長〜
おつかれ−っす^^
0735デフォルトの名無しさん
2009/09/01(火) 21:34:240736デフォルトの名無しさん
2009/09/02(水) 03:55:560737デフォルトの名無しさん
2009/09/02(水) 04:03:21724や732に煽りを入れたくなるのは、ひとりしか考えられないしな。
自演と見ていい。
ひとり変なやつが来て変な流れになっているだけだな。
0738デフォルトの名無しさん
2009/09/02(水) 04:32:36自己紹介乙
0739デフォルトの名無しさん
2009/09/02(水) 12:24:430740デフォルトの名無しさん
2009/09/02(水) 17:48:42アルゴくんおつ
0741デフォルトの名無しさん
2009/09/03(木) 21:44:12全く的外れ。
ネイティブを使うと遅くなるのは、描画が原因じゃなくて、メッセージパッシングの性能差だから。
メソッド呼び出しに関してはJavaはCよりも速い。比較対象がウィンドウとのメッセージパッシングになれば、
実行コスト差は2桁以上。
レンダリングが高速化したんで、メッセージパッシングがボトルネックになっている、
それを克服する解として軽量ウィジェットがある。
0742デフォルトの名無しさん
2009/09/09(水) 18:49:40そんな知識、どこで入手できるの?
javaに対する学習をどこでどうやってするのか初学者のぼくに教えてください。
0743デフォルトの名無しさん
2009/09/10(木) 19:50:38ヘビーウェイトコンポネント(ネイティブコンポーネント)だと
OS(というかウィンドウシステム)ネイティブののイベントを処理する必要があって
それがコストが高いんだと思う。
0744デフォルトの名無しさん
2009/09/10(木) 20:38:010745デフォルトの名無しさん
2009/09/11(金) 00:24:160746デフォルトの名無しさん
2009/09/11(金) 11:40:16ん?いや、別に。
ただ、自分では使って無くても
awtは、ライブラリ内でネイティブAPIとのつなぎの部分が必ずあるから
そこの呼び出しのことを言っている。
0747デフォルトの名無しさん
2009/09/11(金) 13:28:14joglだとJNIのコストがもろに効いてくる場合あった。
0748デフォルトの名無しさん
2009/09/11(金) 13:48:140749デフォルトの名無しさん
2009/09/11(金) 13:50:14VEとかなくなったんだね。
0750デフォルトの名無しさん
2009/09/11(金) 14:46:21これか?
http://journal.mycom.co.jp/column/ide/060/index.html
0751デフォルトの名無しさん
2009/09/11(金) 16:10:32凄く良さそうですね。
早速インストールしましたが、軽くていい感じです。
0752デフォルトの名無しさん
2009/09/12(土) 00:50:55750も悪かないけどNetBeansと両刀使いのほうが快適
0753デフォルトの名無しさん
2009/09/12(土) 02:05:250754デフォルトの名無しさん
2009/09/13(日) 03:35:24ハードアクセラ効くまでの処理が遅い。
結局速度求めるなら、cで直接directx叩けって成る。
0755デフォルトの名無しさん
2009/09/13(日) 07:29:54は?
0756デフォルトの名無しさん
2009/09/13(日) 22:25:34それ、>>753への回答?
0757デフォルトの名無しさん
2009/09/15(火) 15:52:11@ITで質問したんですけど、回答がつかなくて。。。
http://ap.atmarkit.co.jp/bbs/core/fjava/16336
現象
・メインパネルクラスを実行した際にJComboFieldのポップアップウィンドウが消えない。
・フレームをリサイズすると消えます。
・ポップアップウィンドウが残っている間、他のコンボボックスでポップアップが出なくなります。
・メインパネルクラス改だと発生しない
・孫パネルクラスのJComboBoxを編集不可(setEditable(false))にすると発生しない
ソースは次レス
0758757
2009/09/15(火) 15:54:35// メインパネルクラス
public class MainPanel extends JPanel {
MainPanel() {
JPanel pane = new JPanel();
pane.setLayout(new GridBagLayout());
GridBagConstraints constraints = new GridBagConstraints();
for (int i=0; i<16; i++) {
constraints.gridx = i % 4;
constraints.gridy = i / 4;
pane.add(new ChildPanel(), constraints);
}
ScrollPane scroll = new ScrollPane();
scroll.add(pane);
setLayout(new BorderLayout());
add(scroll, BorderLayout.CENTER);
}
public static void main(String args[]) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 200);
frame.setContentPane(new MainPanel());
frame.setVisible(true);
}
}
まだ続く
0759デフォルトの名無しさん
2009/09/15(火) 15:56:21public class ChildPanel extends JPanel {
ChildPanel() {
setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
for (int i=0; i<5; i++) {
add(new GrandChildPanel());
}
}
}
// 孫パネルクラス
public class GrandChildPanel extends JPanel {
GrandChildPanel() {
JComboBox combo1 = new JComboBox(new String[] {"1111", "22222", "3333"});
JComboBox combo2 = new JComboBox(new String[] {"1111", "22222", "3333"});
combo1.setEditable(true);
combo2.setEditable(true);
setLayout(new GridBagLayout());
GridBagConstraints constraints = new GridBagConstraints();
constraints.gridy = 0;
constraints.gridwidth = 1;
constraints.gridheight= 1;
constraints.weightx = 0.0d;
constraints.weighty = 0.0d;
constraints.gridx = 0; add(combo1, constraints);
constraints.gridx = 1; add(combo2, constraints);
}
}
まだ続く
0760デフォルトの名無しさん
2009/09/15(火) 15:58:08public class MainPanel2 extends JPanel {
MainPanel2() {
setLayout(new GridBagLayout());
GridBagConstraints constraints = new GridBagConstraints();
for (int i=0; i<16; i++) {
constraints.gridx = i % 4;
constraints.gridy = i / 4;
add(new ChildPanel(), constraints);
}
}
public static void main(String args[]) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 200);
ScrollPane scroll = new ScrollPane();
scroll.add(new MainPanel2());
frame.setContentPane(scroll);
frame.setVisible(true);
}
}
ここまで、
よろしくお願いしまう。
0761デフォルトの名無しさん
2009/09/15(火) 16:12:54ちらっと見た限りではその現象が起きる正確な原因はよく判らないけれど、
AWT部品とSwing部品を混ぜるのはやめてSwingに統一した方がよい。
> ScrollPane scroll = new ScrollPane();
> scroll.add(pane);
↑ここを↓こうする
JScrollPane scroll = new JScrollPane(pane);
0762757
2009/09/15(火) 16:39:40ありがとうございます。
直りました。
指摘されるまでAWTが混ざってるとは思っておりませんでした。
AWTとSwingを混ぜるな危険って話は知っておりましたが、
まさか自分がそこに引っかかるとは思いませんでした。
本当にありがとうございました。
0763デフォルトの名無しさん
2009/09/15(火) 19:25:40v2cってどうやってあんなに速くレスを描写してんの?
簡単な計算を組み合わせると、V2Cのようにアホみたいに速くなるって言われた
0764デフォルトの名無しさん
2009/09/15(火) 19:31:41続けるつもりなら今の状況を説明
JEditorPaneはやめたんだっけ?
0765デフォルトの名無しさん
2009/09/15(火) 19:39:02俺は簡単に諦めないよ
別にいいじゃん、言われた通りこっちに来ただけだし
気にくわなかったら、あぼーんにすればいいだけ
0766デフォルトの名無しさん
2009/09/15(火) 20:06:090768デフォルトの名無しさん
2009/09/15(火) 22:06:32まじめに自力でレス描画してるんじゃない?
選択の挙動がへんだったりするから、JEditorPaneではなさそうだね。
0769abc
2009/09/15(火) 22:26:29>まじめに自力でレス描画してるんじゃない?
その通り、public void paintComponent()をオーバライドして
Graphics.drawString()を使って文字を出力している
他にもっと良い方法があったら、この方法にはこだわらないつもり
>選択の挙動がへんだったりするから、JEditorPaneではなさそうだね。
・V2CはJPanel + drawString()を使っていると教えてもらったから
・JEditorPaneは遅いとの事
・http://と入れないとクリックした時にURL.toString()(忘れた)が文句を言ってくる
・HTMLを作るのが地味にコストが
0770デフォルトの名無しさん
2009/09/16(水) 00:11:50ヌルヌルスクロールするんだな。
0771デフォルトの名無しさん
2009/09/16(水) 00:43:140772デフォルトの名無しさん
2009/09/16(水) 05:40:360773デフォルトの名無しさん
2009/09/16(水) 12:12:35実装要求なんだかSunJREの実装自慢なんだかはっきりしないとこが、
あいかわらずもんにょりなんだが…
なぜこんなオーバーヘッドのかかりそうな方法がdrawString()より速いのか、
JNIとかAWTとかDirectXとかパイプラインとかいつもの調子で解説頼む。
0774デフォルトの名無しさん
2009/09/16(水) 12:19:08GlyphVectorはそれら全部処理し終えたフォントグリフの並びで、あとは描画するだけなのでは?
たぶん
0775デフォルトの名無しさん
2009/09/16(水) 13:38:470776デフォルトの名無しさん
2009/09/16(水) 16:18:150777デフォルトの名無しさん
2009/09/16(水) 17:56:18パスは「swing」
http://uproda.2ch-library.com/lib169848.zip.shtml
パフォーマンス検証のためだけに書いたから仕上げる気がないんで、
コードがかなりいい加減なのは目をつぶって。
クリッピング処理をきっちりやれば十分なパフォーマンスが出た。
最初、レスのListに対してループを回して、レスがクリッピング領域とかぶるなら
描画するという作りにしたんだけど、さすがに描画するたびに1000回ループを回したら
ちょっと重かった。
バイナリーサーチでどのレスを描画するか最初に決めてから描画するようにしたら
ちょっと軽くなった。
描画するかどうかの判定はレス毎にしてたんだけど、1ピクセルスクロールするたびに
レス全体を描画するのは無駄なんで、1行毎に判定するようにしたらかなり
実用的な速度になった。
ここからV2C並の機能を持たせるとしたらどれだけのコードを書かないといけないやら。
V2Cの作者さんは偉いね。
0778abc
2009/09/16(水) 19:32:12JWebPageが実装されれば便利だけど、さすがにまだまだ先だよね
>>777
参考になります。ありがとう
ttp://codezine.jp/article/detail/2598?p=2
このページではちゃんと、文字が表示されているので
JDKのソースが参考になるかもと思う今日この頃
0779abc
2009/09/19(土) 11:41:01これで、計算しているのですがJPanelのサイズと文字によっては
ちゃんと表示されない可能性があるのでorz
final String str = "1 名前:デフォルトの名無しさん []: 2008/11/21(金) 11:24:21";
//表示するのに何行必要か
int row = fontMetrics.stringWidth(str) / this.getPreferredSize().width;
//表示するのにどのくらいのサイズが必要か
temp = row * * fontMetrics.getHeight();
0780デフォルトの名無しさん
2009/09/19(土) 11:49:440781デフォルトの名無しさん
2009/09/19(土) 13:55:420782デフォルトの名無しさん
2009/09/19(土) 14:25:24はみ出たような気がしたが、最近は改善されてるかも知れない。
長音「ー」を500回書いた文字列とかで試してみて。
毎回文字列生成し直して試行錯誤するのが嫌な短気な人は、
GlyphVector#getGlyphPositions()が速い。
0783デフォルトの名無しさん
2009/09/19(土) 15:43:280784デフォルトの名無しさん
2009/09/19(土) 15:46:18行の折り返し文字数決定なんて JDK1.0-1.1 のプアなコンポーネント時代に実装したきりだな。
0785abc
2009/09/19(土) 17:35:13>日本語Swingだと、LineBreakMeasure使っても禁則がはみ出るときは
>はみ出たような気がしたが、最近は改善されてるかも知れない。
それは知らなかった。ありがとう
LineBreakMeasurerはちょっと問題があるのが気になる
>LineBreakMeasurer(AttributedCharacterIterator text, FontRenderContext frc)
コンストラクタのシグネチャはこうなっていて、違う文字に替えて計りたいときは
AttributedCharacterIterator を作り直さないといけない所
10回とかならいいけど、スレッド全体の座標を計算する事になるとコストが馬鹿高くなってしまう
>779 名前:abc [sage]: 2009/09/19(土) 11:41:01
>1行にどのくらい文字が入るかってどうやって計算すればいいんですかね?
>これで、計算しているのですがJPanelのサイズと文字によっては
この文章だとdatを「str.split("<br>");」を区切っているので、3個AttributedCharacterIteratorが必要に
つまり、3 * 1000回オブジェクトの生成をしないとダメ
どうにか、ならんいんですかね
0786デフォルトの名無しさん
2009/09/19(土) 18:11:07サンプルあったよ。
http://terai.xrea.jp/Swing/DeleteButtonInCell.html
0787abc
2009/09/20(日) 17:35:33の方法を真似して座標計算をするように変更してみた
以前よりは速くなったけど、やっぱり少し遅い気がする
0788デフォルトの名無しさん
2009/09/20(日) 18:51:08突っ込んであげるからさ。
0789abc
2009/09/20(日) 19:14:52順調に行けば、あと何日かで文字を表示できるようになると思うので
文字を表示できるようになったら、コードを晒します
その時は、よろしくお願いします
0790abc
2009/09/21(月) 09:28:38同じアルゴリズムでも計算結果が違います
どっちを信じるのが妥当なのでしょうか
private int lineCount(Font f, FontRenderContext frc, String str, int panelWidth) {
GlyphVector gv = f.createGlyphVector(frc, str);
double currentLineWidth = 0;
float advance = 0;
int lineCount = 1;
GlyphMetrics gm;
for(int i = 0; i < gv.getNumGlyphs(); i++) {
gm = gv.getGlyphMetrics(i);
advance = gm.getAdvance();
if(currentLineWidth < panelWidth && panelWidth < currentLineWidth + advance) {
lineCount++;
currentLineWidth = 0;
}
currentLineWidth += advance;
}
return lineCount;
0791abc
2009/09/21(月) 09:30:13int currentWidth = 0;
int charWidth = 0;
int lineCount = 1;
int len = str.length();
char[] ch = new char[len];
str.getChars(0, len, ch, 0);
for(char c : ch) {
charWidth = f.charWidth(c);
if(currentWidth < panelWidth && panelWidth < currentWidth + charWidth) {
lineCount++;
currentWidth = 0;
}
currentWidth += charWidth;
}
return lineCount;
>>790の実行結果
4240行
>>791の実行結果
4670行
実行してみると>>791の方が動作がよい印象を受けます
0792デフォルトの名無しさん
2009/09/21(月) 12:07:36丸め誤差を100文字累積させれば、
それだけで数十Pixelのずれが出てもちっともおかしくないんだな。
drawGlyphVectorで描くんだったら >>790 でいいんじゃない?
日本人相手なら、文字Aの幅とBの幅の合計は文字列ABの幅と等しいと
決めつけても、大して問題ないけど。
どうせイタリックとか使わないでしょ?
0793abc
2009/09/21(月) 18:17:49>drawGlyphVectorで描くんだったら >>790 でいいんじゃない?
まだ、何で描写するか迷っています
>どうせイタリックとか使わないでしょ?
現時点では太字とかイタリックは使いません
問題は>>790を使うとなぜか遅いという所だけです
もうちょっと考えみます
0794デフォルトの名無しさん
2009/09/21(月) 23:38:58そりゃコピーGCが悲鳴を上げるのですよ。
>>782 のgetGlyphPositions()で十分なんじゃない?
一回だけfloat配列を手に入れれば、N文字目頭からM文字目頭までのピクセル幅は
float配列[(N-1)*2]と[(M-1)*2]の値の差でガンガン求められそう。
しかもこのfloat配列、別GlyphVectorに対しても結果格納先として再度使い回しが効くのだ。
0795デフォルトの名無しさん
2009/09/22(火) 07:10:17数文字を想定して書いたから、数千文字とかでやったらどうなるかは知らぬ・・・。
public static int lineCount(String str, Font font, int width){
float max = new TextLayout(str, font,
new FontRenderContext(new AffineTransform(), false, false)).getVisibleAdvance() ;
if(width >= max)return str.length();
float min = new TextLayout(str.substring(0, 1), font,
new FontRenderContext(new AffineTransform(), false, false)).getVisibleAdvance();
if(width < min)return 0;
int begin = 1;
int end = str.length();
while(true){
int base = (begin+end)/2;
float now = new TextLayout(str.substring(0, base), font,
new FontRenderContext(new AffineTransform(), false, false)).getVisibleAdvance() ;
if(end - begin == 1)return begin;
if(width > now){
begin = base;
} else if(width < now){
end = base;
} else {
return base;
}
}
}
0796abc
2009/09/22(火) 13:51:57そうですね、GlyphVector#getGlyphPositions()を使うように変更してみます
>>791の方法で頑張ってきましたが、intなので誤差が大きくなりすぎました
そのため、JPanel上に表示すると文字列の長さが明らかに変でした
>>794のアルゴリズムはなかなか、便利そうなアルゴリズムなのですが
頭が足りないので理解できるように考えます
>>795
ありがとうございます。時間が空いたらじっくりと考えます。
情報処理技術者試験の勉強でもしてくるかなorz
GlyphVectorのjavadocちゃんと読んでいるんだったorz
0797デフォルトの名無しさん
2009/09/22(火) 17:39:59どうも上の方しか検知されないのですよね。
2つとも同時にMouseMoveイベントを発生させる方法ってありますか?
0798デフォルトの名無しさん
2009/09/23(水) 18:07:43以前似たようなことを考えて調べたのを日記にメモってたような記憶があるなー、ということで発掘してきた。
ttp://d.hatena.ne.jp/vmi/20090219/p1
0799デフォルトの名無しさん
2009/09/24(木) 10:27:47単一Mouselistenerに両方の面倒見させる訳にはいかないの?
0800デフォルトの名無しさん
2009/09/25(金) 02:33:300801795
2009/09/25(金) 03:09:22今さらだけど>795は一行に何文字入るかのメソッドだわ・・・;;
ごめんなさい・・・。
0802デフォルトの名無しさん
2009/09/25(金) 14:26:270803デフォルトの名無しさん
2009/09/25(金) 17:03:49それ、あんま上手く書けない。
いろいろ実験したときのうろ覚えの記憶では、「下のパネル」を探すのがえらく面倒だったような気がする。
結局>>798がいちばんすっきり書けるという結論になった。
0804デフォルトの名無しさん
2009/09/25(金) 21:25:090805デフォルトの名無しさん
2009/09/26(土) 02:49:43「パネルを2枚重ねて」っ書いてるから、別に探す必要ないと思う。
>>798の引用元 ttp://weblogs.java.net/blog/alexfromsun/archive/2006/09/a_wellbehaved_g.html
も最初の簡単なサンプルでは、>>799,800が言ってるように、MouseListenerで、
Component#dispatchEvent使って下にredispatchしてる。
0806abc
2009/09/26(土) 20:51:37パスワード:swing
>778 名前:abc [sage]: 2009/09/16(水) 19:32:12
この部分だけ表示しようと思っているんだけど、もう何が何が何だかわからなくなってきた
この部分は一応表示できるけど、例外だらけorz
問題のクラスはnanashi2.view.{ResInfo.java,ResView.java}
さっきまでは、ウインドウの幅を変えないと例外が発生しなかったけど
状態が悪化したorz
誰かhelp me !!
0807デフォルトの名無しさん
2009/09/26(土) 21:02:11/イハ/レ:::/V\∧ド\
/::^'´::::::::::::i、::::::::::::::::::::::::::::\ 死ねばいいと思うよ
‐'7::::::::::::::::::::::::ハ:ハ::|ヽ:::;、::::::::::::丶
/::::::::::::::/!i::/|/ ! ヾ リハ:|;!、:::::::l
/´7::::::::::〃|!/_,,、 ''"゛_^`''`‐ly:::ト
/|;ィ:::::N,、‐'゛_,,.\ ´''""'ヽ !;K
! |ハト〈 ,r''"゛ , リイ)|
`y't ヽ' //
! ぃ、 、;:==ヲ 〃
`'' へ、 ` ‐ '゜ .イ
`i;、 / l
〉 ` ‐ ´ l`ヽ
/ ! レ' ヽ_
_,、‐7 i| i´ l `' ‐ 、_
0808デフォルトの名無しさん
2009/09/27(日) 22:50:20IDE初めてならNetBeansでいいよ。
折り返しのあるテキスト系コンポーネントのリサイズレイアウトはいろいろと面倒くさかったなぁ。
レイアウトマネージャー様からのサイズ指定はとりあえず絶対服従な。
revalidate()呼べば、レイアウトマネージャがとりあえずgetPreferredSize()経由で
希望サイズをあとで聞いてくるはずだから。希望が叶うかどうかの条件はよく解らん。
0809デフォルトの名無しさん
2009/09/29(火) 10:38:570810デフォルトの名無しさん
2009/09/29(火) 11:20:290811デフォルトの名無しさん
2009/09/29(火) 13:16:360812809
2009/09/29(火) 18:16:470813809
2009/09/29(火) 18:57:06コピーした内容を逐次jTextAreaにオンタイムで表示させたいのです。
0814デフォルトの名無しさん
2009/09/29(火) 20:10:100815デフォルトの名無しさん
2009/09/29(火) 20:12:20スレッドプール使いたいので、swingworkerは使いません。
swingworkerってexecutor指定出来たっけ?
0816デフォルトの名無しさん
2009/09/29(火) 20:44:17単一のGUI更新スレッドへの参照をワーカースレッドがみんな持ってるとかか
0817デフォルトの名無しさん
2009/09/29(火) 22:25:06public void paintComponent(Graphics g)が呼び出されますよね
これを、コンポーネントのサイズに変化があっても
意図的に呼び出さなくする方法ってありますか?
0818デフォルトの名無しさん
2009/09/30(水) 09:34:18paintComponent(Graphics g) をオーバーライドして、
不要なときには処理しないようにするとかで実現は出来そうだけど
Swing的に実現できるかどうかはシラネ。
やりたいことが何なのかがわからないから、多分的を外してると思う。
0819デフォルトの名無しさん
2009/09/30(水) 10:20:38やっぱり、それしかないかありがとう
paintComponent(Graphics g)を呼び出す前の、前処理をしておきたかっただけ
paintComponent()の中に書けばいいじゃんって気もするけど、
componentResized(ComponentEvent e) ってのがあるから気になったわけ
componentResized()→paintComponent()の順に呼び出されるのかと思っていたけど
実際にはpaintComponent()→componentResized()の順番だったorz
0820デフォルトの名無しさん
2009/09/30(水) 11:36:09コピー処理の逐次ロギングを毎回setText()で全更新は効率悪すぎるだろ。
JTextAreaに吐くLoggerを昔作ってたけどね。
事前にテキストコンポーネントへsetDocument()しといた
jaxax.swing.text.PlainDocument経由で文字列追加すれば
EDTだろうがなんだろうがスレッド競合のことはなにも考えなくてよかったような気が。
SwingWorkerなんて軟弱なものが無かった頃の昔話。
0821デフォルトの名無しさん
2009/09/30(水) 12:16:50どんなスレッドからでもSwingUtilities.invokeLater経由すれば、
EDTでの実行になるでしょ。
0822デフォルトの名無しさん
2009/10/17(土) 19:50:19タブで移動したセルに書き込むとき、半角英数字は問題ありませんが、全角を書き込む
は、マウスでクリックしないと書き込めないのですが、解決方法はありませんでしょうか?
タブで移動しながら、半角文字を書き込んでいるときはいいのですが、日本語を書き込む
ときに、どうしてもマウスクリックが必要となります。
よろしくお願いします。
0823デフォルトの名無しさん
2009/10/17(土) 19:57:380824デフォルトの名無しさん
2009/10/17(土) 22:24:230825デフォルトの名無しさん
2009/10/17(土) 22:57:17俺が悪い。何とでもいってくれ・・・。
低速はいらないと思うね。SWTとの比較なんかもう今やあほらしいし。
0826デフォルトの名無しさん
2009/10/17(土) 23:00:540827デフォルトの名無しさん
2009/10/18(日) 02:47:47swing使って遅いって馬鹿避けにも成るし。
0828デフォルトの名無しさん
2009/10/20(火) 09:01:30の「swing遅いぜ厨」避けに入れておいて欲しい。
ホント不毛な話でスレがつぶれるから。
「swing遅い」って話と、「swing今は意外と速い」って話なら後者の方が直ぐに収まるし。
0829デフォルトの名無しさん
2009/10/20(火) 09:03:04マシンが速くなっただけじゃね?
0830デフォルトの名無しさん
2009/10/20(火) 09:54:22「はいはい、遅いですよ。スレタイにも低速って書いてあるでしょ?お帰りください」
って言えるから楽だしな。
真面目にレスすると、マシンも速くなったしSwing自身もOSの描画機能を
最大限有効活用するように変わってきたから、ハードウェアの性能を出し切る様な
アプリでなければ大体の要件に答えられるレベルになった。
って評価だと思う。少なくとも俺はそう。
0831デフォルトの名無しさん
2009/10/20(火) 22:36:100832デフォルトの名無しさん
2009/10/20(火) 22:39:500833デフォルトの名無しさん
2009/10/21(水) 00:17:58Javaクライアントはそんなに将来性が無いのか
0834デフォルトの名無しさん
2009/10/21(水) 01:12:01http://gihyo.jp/admin/clip/01/linux_dt/200910/20
APIが決まらないとか……今のSunにはリーダーシップが足りないね(´・ω・`)
0835デフォルトの名無しさん
2009/10/21(水) 01:24:310836デフォルトの名無しさん
2009/10/21(水) 01:47:06http://www.infoq.com/jp/news/2009/10/java7_m5
たぶん、ここを引用しようとしたのかな
0837デフォルトの名無しさん
2009/10/21(水) 05:23:490838デフォルトの名無しさん
2009/10/21(水) 05:44:400839デフォルトの名無しさん
2009/10/21(水) 07:12:41釣り針があまりにでかすぎる
0840デフォルトの名無しさん
2009/10/21(水) 09:10:240841デフォルトの名無しさん
2009/10/21(水) 09:15:410842デフォルトの名無しさん
2009/10/21(水) 09:19:050843デフォルトの名無しさん
2009/10/21(水) 09:25:01要求もでかくなったからな。
0844デフォルトの名無しさん
2009/10/21(水) 11:04:39Swing自体面倒すぎるのでXMLでGUI定義するか
いやそれはまずい、素のコードをちゃんとパースすべきだ
とかなかなかカオス
0845デフォルトの名無しさん
2009/10/21(水) 12:06:48使ったことないから知らないのだけど。
0846デフォルトの名無しさん
2009/10/21(水) 15:32:430847デフォルトの名無しさん
2009/10/21(水) 15:43:570848デフォルトの名無しさん
2009/10/21(水) 19:50:13Windows Formならかなり簡単。
でもどうせならC#と使うのをすすめる
0849デフォルトの名無しさん
2009/10/21(水) 20:29:17絶対値ではなく某かのよりどころを基準にしてるからなんだけど、
こんなん使いこなすくらいならnullレイアウトでいいよ。。。
0850デフォルトの名無しさん
2009/10/21(水) 21:18:56C#は嫌だお・・・
0851デフォルトの名無しさん
2009/10/21(水) 21:25:040852デフォルトの名無しさん
2009/10/21(水) 21:32:31いろいろあってよくわからない
0853デフォルトの名無しさん
2009/10/21(水) 21:38:040854デフォルトの名無しさん
2009/10/21(水) 21:39:010855デフォルトの名無しさん
2009/10/21(水) 22:14:200856デフォルトの名無しさん
2009/10/21(水) 22:44:450857デフォルトの名無しさん
2009/10/22(木) 02:12:53ウィンドウサイズ変えたり要素位置変えるときとかどうすんの?
0858デフォルトの名無しさん
2009/10/22(木) 02:20:430859デフォルトの名無しさん
2009/10/22(木) 05:11:070860デフォルトの名無しさん
2009/10/22(木) 20:00:38GLJPanel は AWT 用いる GLCanvas よりだいぶ遅かったと
言われてましたがはて今は?
0861デフォルトの名無しさん
2009/10/22(木) 21:54:250862デフォルトの名無しさん
2009/10/23(金) 16:44:24スパークラス(JTree)のpublic JTree(TreeNode root)を呼び出すしか方法ないの?
0863デフォルトの名無しさん
2009/10/23(金) 17:18:09JTree(TreeNode root)を呼び出すのは至極真っ当に見えるけど
何が不満なのか書かないと解決策を提案できない
0864デフォルトの名無しさん
2009/10/23(金) 22:52:48は?
0865デフォルトの名無しさん
2009/10/24(土) 22:46:33他のアプリケーション操作時のキー入力を取得できませんかね?
0866デフォルトの名無しさん
2009/10/24(土) 23:10:150867デフォルトの名無しさん
2009/10/24(土) 23:17:05やっぱり無理ですか-
ありがとうございました
0868デフォルトの名無しさん
2009/10/25(日) 15:54:13そのフォームを使ってソフトの設定をしたいんだけど
やっぱり、JDialogしかないのかな
0869デフォルトの名無しさん
2009/10/25(日) 16:37:12一行だけとかならJOptionPaneのインプットフォームが手間無しだけど。
0870デフォルトの名無しさん
2009/10/25(日) 20:20:030871デフォルトの名無しさん
2009/10/25(日) 21:04:31なんですか、グラスペインって?
0872デフォルトの名無しさん
2009/10/25(日) 22:00:13JFrameとかJDialogとか、つまりRootPaneContainerの概念で、最前面(JLayeredPaneによる層よりもさらに前面)のコンポーネント。
たしかポップアップメニューとかの描画に使われたはず。
0873デフォルトの名無しさん
2009/10/25(日) 23:16:02glass.setVisible(false);
↑こうするとメニューも含めてframeは一時的に操作できなくなるはず。
ついでにカーソルをドクロマークかなにかにしておくのが吉。
0874デフォルトの名無しさん
2009/10/26(月) 09:52:32タブを選択したときに閉じるボタンの色を変えるのがどうしても出来ません
どのメソッドを使えば実現できるでしょうか?
0876デフォルトの名無しさん
2009/10/26(月) 10:41:18これって、普通にdispose()を呼んでもいいんですかね?
0877デフォルトの名無しさん
2009/10/26(月) 11:18:02普通に考えてタブが選択されたときにsetTabComponentAtのコンポーネントを書き換えるだけでは?
0878デフォルトの名無しさん
2009/10/26(月) 13:42:37ChangeListenerを使って、変化したら選択されてるタブの閉じるボタンの標準画像を切り替えるようにしたら出来ました
ホントにありがとうございました
0879デフォルトの名無しさん
2009/10/30(金) 20:06:21他のPCで実行したらダイアログのレイアウトが崩れてしまいました
自宅のPCはLinxuで、レイアウトのズレが発生したOSはWindowsです
崩れる理由を教えてください
0880デフォルトの名無しさん
2009/10/30(金) 21:54:150881デフォルトの名無しさん
2009/10/30(金) 22:30:33ソースを出そうと思うのですが、修正をしてしまいました
0882デフォルトの名無しさん
2009/10/31(土) 00:15:07nullレイアウトかグリッドバッグとか座標指定するレイアウトで座標が何かに依存してるとか。
0883デフォルトの名無しさん
2009/10/31(土) 06:43:44すべての環境を前提とする実装はそもそも無理だしな。
redhat6とかwindows8でも問題なく動く様にするのは今は無理。
0884デフォルトの名無しさん
2009/10/31(土) 15:46:28やっぱりSwingでは簡単に実装できないんですかね?
0885デフォルトの名無しさん
2009/10/31(土) 15:51:320886デフォルトの名無しさん
2009/10/31(土) 16:02:46Jane Styleを見ていたら動くツールバー等々を作ってみたいな〜と思ったので
JMenubarと勘違いしてました
ありがとうございました
0887デフォルトの名無しさん
2009/11/01(日) 00:04:320888デフォルトの名無しさん
2009/11/01(日) 21:23:540889デフォルトの名無しさん
2009/11/02(月) 19:32:300890デフォルトの名無しさん
2009/11/02(月) 20:22:430891デフォルトの名無しさん
2009/11/02(月) 21:46:21http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/intl/fontconfig.html
0892デフォルトの名無しさん
2009/11/03(火) 15:48:46UIManager だか UIDefaults だかを使うほうがいいかも。
詳しくは分からないけど。
0893889
2009/11/03(火) 20:58:29ありがとうございました
0894デフォルトの名無しさん
2009/11/05(木) 00:11:250895デフォルトの名無しさん
2009/11/05(木) 09:53:230896デフォルトの名無しさん
2009/11/16(月) 21:22:15UIをSwingで構築することになりました。
まだはじめたばかりなんですが、
NetBeansでGUIを構築しようかなとダウンして試してます。なかなかいいですね。
それで、サーバ側との通信をどうしようか考えてます。
既存のシステムがBlazeDSなのでプロトコルはamfです。
Swingを使ったサーバ側のロジック(特にSeasar2)を呼び出すやりかたのオススメってありますか。
できれば、サーバ側の構成は崩したくない(特にS2JDBCを使ったロジック)と思ってます。
0897デフォルトの名無しさん
2009/11/17(火) 00:05:15下の様なコードを書いたわけですが、結果が↓のようになりました
264.0 ←文字列の長さ
13.962890625 ←高さ
100 x 300のパネルなので、高さが26〜27程度になって欲しいところです。
どうにかして、テキストを自動的に折り返して高さが26にする方法ありませんか?
private String text = "あいうえおかきくけこさしすせそたちつてとなに";
public void test() {
Graphics2D g2 = (Graphics2D)getGraphics();
FontMetrics fm = g2.getFontMetrics();
g2.setClip(0, 0, 300, 300);
Rectangle2D r2 = fm.getStringBounds(text, g2);
System.out.println(r2.getWidth());
System.out.println(r2.getHeight());
}
0898896
2009/11/17(火) 20:03:54S2RMIなどを使うと良い感じのようです。
0899デフォルトの名無しさん
2009/11/21(土) 23:46:46JOGLなるものを入れてみたんですが、3Dが表示された直後に背景が塗りつぶされてしまい
何も見えなくなってしまいます・・・。
0900デフォルトの名無しさん
2009/11/21(土) 23:49:130901デフォルトの名無しさん
2009/11/22(日) 00:00:58お早い回答ありがとうございます。
> ダブルバッファを向こうにしてupdateも無効にするんだっけか。
というのは、createBufferStrategyを呼ばず、update(Graphics)を空オーバーライドする。ということでしょうか?
そうでしたら、既にやっています。ちなみにpaint/repaintも空オーバーライドしてみましたが、ダメでした・・・。
0902デフォルトの名無しさん
2009/11/22(日) 00:38:17めちゃくちゃにも程がある。
0903デフォルトの名無しさん
2009/11/22(日) 01:04:08実はFrameでもやってるんですが、同じ結果だったので変わらないかなと思っちゃったんです・・・。
何がいけないんでしょうか?
0904デフォルトの名無しさん
2009/11/23(月) 18:03:05どんなAPI使ってるんでしょうか?
すごい使いたい機能なんですが、どの部品の機能なのかわからなくて…
0905デフォルトの名無しさん
2009/11/24(火) 10:52:03JOGL使うときはBufferStrategyではなくJOGLのダブルバッファを使う
0906デフォルトの名無しさん
2009/11/24(火) 16:06:29SwingでJOGLを使いたいのか単にJOGLで描画したいのかどっち?
JOGLで描画したいだけかJOGLの知識不足なら
【JMF】Java Media APIs【JOGL】
ttp://pc12.2ch.net/test/read.cgi/tech/1201346803/l50
こっちだし、JOGLの事情・勝手を分かってるうえで
Swing上で使いたいならここでも該当スレでもどっちでもいける気がするんだが。
どちらにしてもまずやりたいことをはっきりさせるんだ。
0907デフォルトの名無しさん
2009/11/24(火) 20:45:08WindowsだとデフォルトのBufferedImage -> VolatileImageのレンダリングが
ちょっぱやなので、他の環境でそれを当てにしていいものか悩み所です。
0908デフォルトの名無しさん
2009/11/25(水) 21:44:410909デフォルトの名無しさん
2009/11/25(水) 22:56:066相当って出てる?
0910デフォルトの名無しさん
2009/11/25(水) 23:43:48Mainクラスひとつだから、ソースべたっと貼ってもいいけど、
やはりjarをアップロードするのが手軽でいいか?
仕様は100x100の円を1024回描画した時に何fps出るか。
ちなみに私の環境だとWinXpSp3, C2D E8400, GeForce 9800GTXで、
だいたい800fps overくらい。
0911デフォルトの名無しさん
2009/11/25(水) 23:44:57import java.awt.Canvas;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferStrategy;
import java.awt.image.BufferedImage;
import java.util.Random;
public class Main {
public static void main(String[] args) throws Exception {
Canvas canvas = new Canvas();
canvas.setPreferredSize(new Dimension(800, 600));
Frame frame = new Frame("BufferStrategy Benchmark");
frame.addWindowListener(new MyWindowListener());
frame.add(canvas);
frame.pack();
frame.setVisible(true);
runAnimationLoop(canvas);
}
0912デフォルトの名無しさん
2009/11/25(水) 23:46:36private static void runAnimationLoop(Canvas canvas) throws Exception {
canvas.createBufferStrategy(3);
BufferStrategy strategy = canvas.getBufferStrategy();
Image img = createOvalImage();
Random rand = new Random();
Toolkit toolkit = Toolkit.getDefaultToolkit();
String fps = "0";
int frame = 0;
long nextOneSec = System.currentTimeMillis() + 1000;
while (true) {
long currentTime = System.currentTimeMillis();
if (currentTime >= nextOneSec) {
nextOneSec = currentTime + 1000;
fps = String.valueOf(frame);
frame = 0;
}
0913デフォルトの名無しさん
2009/11/25(水) 23:47:22if (strategy.contentsLost() == false) {
for (int i = 0; i < 1024; i++) {
g.drawImage(img, rand.nextInt(800) - 50, rand.nextInt(600) - 50, null);
}
g.setColor(Color.YELLOW);
g.fillRect(0, 0, 40, 20);
g.setColor(Color.BLACK);
g.drawString(fps, 0, 10);
g.dispose();
strategy.show();
toolkit.sync();
frame++;
} else {
System.out.println("strategy.contentsLost()");
}
}
}
0914デフォルトの名無しさん
2009/11/25(水) 23:48:07Image img = new BufferedImage(100, 100, BufferedImage.TYPE_INT_ARGB);
Graphics g = img.getGraphics();
g.setColor(Color.GREEN);
g.fillOval(0, 0, 100, 100);
g.setColor(Color.BLACK);
g.drawOval(0, 0, 100, 100);
g.dispose();
return img;
}
static class MyWindowListener extends WindowAdapter {
@Override
public void windowClosing(WindowEvent e) {
super.windowClosing(e);
System.exit(0);
}
}
}
0915デフォルトの名無しさん
2009/11/25(水) 23:51:390916910
2009/11/25(水) 23:58:50ブログは持っていないなぁ。
0917デフォルトの名無しさん
2009/11/26(木) 00:36:14なるほど、ありがとうございます!
>>906
もともとBufferedImageの内容を射影変換したものを描画したかったので、それさえ出来るならJOGLじゃなくてもいいんです。
ていうか、JOGLがJavaらしくなくて使いづらいので、便利なのあればそっちを使いたいです・・・。
0918デフォルトの名無しさん
2009/11/26(木) 22:51:146 でてるよ。 java -version やったらこんな感じ。
java version "1.6.0_15"
Java(TM) SE Runtime Environment (build 1.6.0_15-b03-219)
Java HotSpot(TM) 64-Bit Server VM (build 14.1-b02-90, mixed mode)
>>910
MacBookPro (MB470J/A) Core2Duo2.4GHz GeForce9400M で 26 fps だったw
-Dapple.awt.graphics.UseQuartz=true を付けると 46 fps くらい。
0919デフォルトの名無しさん
2009/11/27(金) 00:05:12おお、ありがとう。
下のオプションはSunのレンダーを使うだけみたいだし、副作用はなさそう?
512spriteを60fpsで、がマルチプラットフォーム向けの目安にすればいいか。
良いVRAM積んでるLinuxやOpenSolaris環境な方も是非是非計測を。
0920デフォルトの名無しさん
2009/11/27(金) 00:35:02PenMとか糞遅い環境だと即死なベンチだなw
0921デフォルトの名無しさん
2009/11/27(金) 22:31:22逆だ逆。
オプション指定したら、Sunのレンダラを使わない方。
0922デフォルトの名無しさん
2009/11/30(月) 01:22:53指定する手段はないのでしょうか?
0923デフォルトの名無しさん
2009/11/30(月) 09:27:210924デフォルトの名無しさん
2009/12/01(火) 07:10:23Thx
0925デフォルトの名無しさん
2009/12/05(土) 01:21:04JFrameのBufferStrategyからgetDrawGraphics()で取得したGraphicsを渡すと描画されません。(?)
これを正しく描画できるようにするにはどうすればいいでしょうか?
0926デフォルトの名無しさん
2009/12/06(日) 00:11:13いまマウスで線を描く簡単なプログラムを作っているのですが、
ウィンドウを最小化してまた復帰させたときに描いた線が消えてしまいます。
マルチバッファリングの処理をいれてないのでそれが原因かと思ったのですが、
調べてみるとswingは自動でダブルバッファリングをしているとのことで何が原因か皆目検討がつきません。
よろしければ助言をいただけないでしょうか。
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
class Draw extends JPanel implements MouseListener, MouseMotionListener{
static final int LINE = 1;
private int x1, y1, x2, y2;
private int mode;
public Draw(){
x1 = -1; y1 = -1;
addMouseListener(this);
addMouseMotionListener(this);
}
0927デフォルトの名無しさん
2009/12/06(日) 00:12:19if (mode == LINE) drawByMouse(g);
mode = 0;
}
public void mousePressed(MouseEvent e){
x1 = e.getX(); y1 = e.getY();
}
public void mouseDragged(MouseEvent e) {
x2 = e.getX(); y2 = e.getY();
mode = LINE;
repaint();
}
public void drawByMouse(Graphics g){
g.drawLine(x1, y1, x2, y2);
x1 = x2; y1 = y2;
}
public void mouseClicked(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public void mouseMoved(MouseEvent e) {}
public void mouseReleased(MouseEvent e){}
public static void main(String[] args) {
JFrame f = new JFrame("Draw");
f.setSize(400, 300);
f.add(new Draw());
f.setVisible(true);
}
}
以上までがソースコードです。
よろしくお願いします。
0928デフォルトの名無しさん
2009/12/06(日) 05:53:11むしろ「ウィンドウを最小化してまた復帰させるまでは線が消えない」ことに驚いた。
JPanel を継承するとそうなるのか。
何か勘違いしてるみたいだけど、
コンポーネントは repaint() が呼ばれるたびに
まっさらにクリアしてから描画しなおすのだよ。
以下のいずれかの方法をとる必要がある:
・マウスが動く軌跡をすべて記録して、
paintComponent() で全ての線を描きなおす。
・マウスが動くたびにオフスクリーンイメージに線を描いて、
paintComponent() で、そのイメージを貼りつける。
最後に:このていどの質問なら
「Java質問・相談スレッド」に書いた方がいい。
0929デフォルトの名無しさん
2009/12/10(木) 14:16:39コンポーネント全体を描写した後に窓から見えるコンポーネントの一部を表示しているのですか?
それとも窓から見える部分だけ描写しているのですか?
0930デフォルトの名無しさん
2009/12/10(木) 16:41:250931デフォルトの名無しさん
2009/12/10(木) 17:48:57フルスクリーンっていうオチじゃなくて?
0933デフォルトの名無しさん
2009/12/11(金) 14:54:49しかし、insertString()の実行回数が増えてくると、処理にかなりの時間がかかってきます
どうにかならないでしょうか?
0934デフォルトの名無しさん
2009/12/11(金) 17:59:08さあ
0935デフォルトの名無しさん
2009/12/12(土) 02:24:46・insertString呼び出しを減らす。
・ぎりぎりまでsetDocumentしない。
・PlainDocumentで済ませる。
DefaultStyleDocumentのSun実装ってVector使ってるぽいので、
途中への段落挿入は遅そう。
ところでマルチラインフォントってなに?
0936デフォルトの名無しさん
2009/12/12(土) 03:55:500937デフォルトの名無しさん
2009/12/12(土) 16:00:450939デフォルトの名無しさん
2009/12/12(土) 20:51:03フォントってなんだろうな。
0940デフォルトの名無しさん
2009/12/12(土) 21:00:160941デフォルトの名無しさん
2009/12/12(土) 21:19:18目で見ればずれてるって理解出来るが、プログラムでずれてるのを補正するのは面倒。
0942デフォルトの名無しさん
2009/12/13(日) 00:30:270943デフォルトの名無しさん
2009/12/13(日) 14:16:30import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class OreView extends FrameView implements KeyListener {
public OreView(OreApp app){
super(app);
:
中略
:
mainPanel.addKeyListener(this);
mainPanel.requestFocus();
}
int key_code;
public void keyPressed(KeyEvent e){
key_code = e.getKeyCode();
System.out.println("key_code_on:"+key_code_on);
}
public void keyReleased(KeyEvent e) {}
public void keyTyped(KeyEvent e) {}
}
上記以外は、ほとんどNetBeans IDE 6.5.1 で生成したJavaデスクトップ
アプリケーション(SingleFrameApplication)のまんまです。
アプリのウインドウの上にマウスを置いてキーボードを叩いてもkeyPressedが
呼ばれないのはなぜでしょうか?
0944943
2009/12/13(日) 14:57:53KeyListener が取れない理由って何かあります…?
0945デフォルトの名無しさん
2009/12/13(日) 15:08:330946943
2009/12/13(日) 15:16:33確かにそんな感じはします…出来合いのフレームワークなので、自分で
書いたコード以外にいろいろ走ってますし
が、調べるとっかかりがちょっと思いつかないです。ほとんど新規プロジェクトの
生成直後なので、Swingの挙動に明るい方、何かヒントあればお願いします
0947デフォルトの名無しさん
2009/12/13(日) 15:53:040948デフォルトの名無しさん
2009/12/13(日) 16:11:09requestFocusしているが、本当にそこにフォーカスが行ってるのか
0949デフォルトの名無しさん
2009/12/13(日) 17:13:57フォーカスの行方を調べるには KeyboardFocusManager とか使うとよいかも。
0950デフォルトの名無しさん
2009/12/13(日) 17:33:31同意
0951943
2009/12/13(日) 17:47:35うーむ…
focusなんたらって名前のプロパティをチェックONOFFしてみましたが、
どう組み合わせてもだめっぽい感じです。
KeyboardFocusManager をちょっと調べてみます。
0952943
2009/12/13(日) 19:52:45KeyboardFocusManagerで調べたら、mainFrameにフォーカスが当たっていたので、
mainPanelではなく、getApplication().getMainFrame()へaddKeyListenerしたら
キーが取得できたっす。
ヒントくれた皆さんありがとー
0953デフォルトの名無しさん
2009/12/13(日) 20:01:570954デフォルトの名無しさん
2009/12/13(日) 23:01:410955デフォルトの名無しさん
2009/12/14(月) 13:54:32apacheのcommonsみたいなやつ
0956デフォルトの名無しさん
2009/12/14(月) 14:06:43機能強化して使い勝手あげるのがSwingXとかSwing lab製ライブラリ群。
0957デフォルトの名無しさん
2009/12/14(月) 15:12:05GUI作成支援のアプリケーションを作りたいのですが、
D&Dで移動したり、部品のリサイズ、追加、削除、この辺をやる上で使い勝手がいいライブラリはどれになるでしょうか?
0958デフォルトの名無しさん
2009/12/14(月) 15:13:13ちなみに、Swingって1.6で大幅に使いやすくなったのでしょうか?
0959デフォルトの名無しさん
2009/12/14(月) 16:47:08フツーにThread立ち上げればいいんじゃない?
ディスパッチスレッドとの競合管理とかめんどいんでね、もーね、その間GlassPane使ってGUI操作禁止にしてる。
0960デフォルトの名無しさん
2009/12/14(月) 16:51:14その間は入力できないの?w
0961デフォルトの名無しさん
2009/12/14(月) 17:08:19うんw
と思ったけどヘビータスクの要所要所でEventQueue.invokeWait()でGUI操作してたわ。
SwingWorkerと大して変わらんね。参考にならなくてすまん。
0962デフォルトの名無しさん
2009/12/14(月) 17:29:030963デフォルトの名無しさん
2009/12/14(月) 17:40:28SwingWorkerってクラスはないですけど、代替えクラスがあるんですかね?
0964デフォルトの名無しさん
2009/12/14(月) 17:41:250965デフォルトの名無しさん
2009/12/14(月) 18:28:25jdesktop SwingWorkerでぐぐれ
0966デフォルトの名無しさん
2009/12/14(月) 23:08:420967デフォルトの名無しさん
2009/12/15(火) 00:32:55だったらあなたが作ってくださいよ。
0968デフォルトの名無しさん
2009/12/15(火) 01:09:08とりあえずここのソース落とすと中にSwingWorkerらしきものが入ってる
JDKのとは少し違う
0969デフォルトの名無しさん
2009/12/15(火) 14:02:390970デフォルトの名無しさん
2009/12/16(水) 12:14:21ちゃんと誰かがメンテしてるのは無いの?
0971デフォルトの名無しさん
2009/12/16(水) 12:39:54凝ったことすればSwingWorkerの再発明になりそうだが
それもまたよし
0972デフォルトの名無しさん
2009/12/16(水) 12:54:51スレチなんでさくっと。
カレントディレクトリ移動の目的はな〜に?
プラットフォームにもよるけど、VMプロセスのカレントディレクトリを移動しても
たぶんFile#getAbsoluteFile()とかには反映されないよ。
システムプロパティ"user.dir"を変更しとくのじゃだめ?
0973デフォルトの名無しさん
2009/12/16(水) 13:20:130974デフォルトの名無しさん
2009/12/16(水) 17:02:260975デフォルトの名無しさん
2009/12/16(水) 17:16:55ファイルの相対パスアクセスを気にしていたので、user.dirですべて解決しました。
ありがとうございます。
0976デフォルトの名無しさん
2009/12/16(水) 17:39:33無いから追加されたんでしょう
すでにあるのなら新しく作る意味ないし
0977デフォルトの名無しさん
2009/12/16(水) 17:59:02-Duser.dir=C:\tmp\で指定したのですが反映されませんでした。
プログラム内でセットしないといけないのですかね?
0978デフォルトの名無しさん
2009/12/16(水) 18:03:07あっ違う。設定はできているけど、URLクラスのfileプロトコルが無視しやがる…
new URL("file:./xxx.ini")にすると、起動ディレクトリからの相対パスだ。バグかこれ?
0979デフォルトの名無しさん
2009/12/16(水) 18:29:550980デフォルトの名無しさん
2009/12/16(水) 18:40:31確かになるわ
0981デフォルトの名無しさん
2009/12/16(水) 23:11:08あぁ...
0982デフォルトの名無しさん
2009/12/16(水) 23:15:26だからー、もう new File("./xxx.ini").toURI().toURL() でええやん。
後は質問スレで。
0983デフォルトの名無しさん
2009/12/16(水) 23:17:36工夫しな
0984デフォルトの名無しさん
2009/12/17(木) 10:23:24アプレット通信でRMI使ってて、RMIの-Djava.rmi.server.codebaseがURL指定。
RMIモジュールをパッケージ化したので、フルパスでなんか書きたくない。
そこで相対だと思い質問しました。
工夫するのはURLでパラメータを受け取る方で、
せっかくURLというものでアクセス方法統一したなら、
工夫しないとうまく取れないというのはいかがかなと思った次第です。
0985デフォルトの名無しさん
2009/12/17(木) 23:18:33Windowsのレイヤードウィンドウと同等のことがしたいのです。
0986デフォルトの名無しさん
2009/12/17(木) 23:36:010987デフォルトの名無しさん
2009/12/18(金) 00:13:11ありがとう。でもこれじゃピクセルごとのαはできそうにないですね。
0988デフォルトの名無しさん
2009/12/18(金) 00:31:500989デフォルトの名無しさん
2009/12/18(金) 01:00:000990デフォルトの名無しさん
2009/12/18(金) 01:09:180991デフォルトの名無しさん
2009/12/18(金) 02:02:10import javax.swing.*;
import com.sun.awt.AWTUtilities;
public class Hoge extends JWindow {
float[] fractions = new float[] { 0, 0.97f,0.98f, 0.99f, 1 };
Color[] colors = new Color[] { Color.WHITE, new Color(1, 1, 1, 0.001f), new Color(1,0,0,0.001f), Color.RED, new Color(1,0,0,0.001f) };
Paint paint = new RadialGradientPaint(128f, 128f, 128f, fractions, colors);
Hoge() {
setSize(256, 256);
AWTUtilities.setWindowOpaque(this, false);
setVisible(true);
}
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
g2.setPaint(paint);
g2.fillRect(0, 0, 256, 256);
}
public static void main(String[] args) throws InterruptedException {
SwingUtilities.invokeLater(new Runnable(){
public void run() {new Hoge();}
});
Thread.sleep(5000);
System.exit(0);
}
}
0992デフォルトの名無しさん
2009/12/18(金) 21:30:560993デフォルトの名無しさん
2009/12/18(金) 21:41:42それ以外あるのか?W
0994デフォルトの名無しさん
2009/12/18(金) 22:00:08確かに、拡大すると少し影が付いてるな
0995デフォルトの名無しさん
2009/12/18(金) 22:40:500996デフォルトの名無しさん
2009/12/18(金) 23:03:430997デフォルトの名無しさん
2009/12/18(金) 23:24:11ゴスリンがシングルトンの設計くそって言ったせいで取りやめになったんだっけか?
どうせシンプルなアプリケーションにしか使われないんだしいいじゃないかと思うんだけどなぁ
0998デフォルトの名無しさん
2009/12/18(金) 23:29:490999デフォルトの名無しさん
2009/12/18(金) 23:34:281000デフォルトの名無しさん
2009/12/18(金) 23:40:28どういしたらいいでしょうか?
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。