Java低速GUI Swing 5
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/10/18(水) 11:50:09パフォーマンスの問題は徐々にですが改善されつつあります。
しかしながら、"Java"というだけで未だに敬遠されるのが現状。
そんなSwingと引き続き付き合っていくみんなのスレッドです。
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
0312デフォルトの名無しさん
2006/12/25(月) 23:23:170313デフォルトの名無しさん
2006/12/26(火) 07:07:58DefaultTableModel#addRow(Object[])と
DefaultTableModel#addRow(Vector)で、動作が変わる時があるのですが、なぜでしょうか?
具体的な違いは、
addRow後に DefaultTableModel#setColumnIdentifiers() を呼び出すと、
addRow(Object[]) の方はデータが表示されません。
解決方法としては、
setColumnIdentifiers() を先に呼んで、addRowすれば問題ないのですが、
Java側のソースを見ても、なぜそうなるのかが,お風呂上りくらいさっぱりです。
一応直接の原因としては、
addRow(Object[])とした場合、DefaultTableModel#dataVectorに値が入らないためです。
dataVectorが初期化されていないような気がするので、
dataVector.insertElementAt(rowData, row);
の時にヌルポで落ちてもいいくらいなんですけど。
0314デフォルトの名無しさん
2006/12/26(火) 22:58:27Object[]でテストしてみたけどカラムの表示ちゃんとかわってるよ
0315313
2006/12/29(金) 10:18:36すみません。アク禁でした。
もう一度試したところ、addRow(Object[])とaddRow(Vector)で、動作は同じでした。ん〜、どこかミスっていたようです。
あと、setColumnIdentifiers() を先に呼ばないとデータが入らないのは、仕様みたいですね。
または事前に列のサイズを指定してあげればOKでした。
0316デフォルトの名無しさん
2007/01/05(金) 04:13:37ダイアログのボタンをアクションリスナに登録するには
どうしたらよいのか教えてい頂けないでしょうか?
0317デフォルトの名無しさん
2007/01/05(金) 17:23:08画面をrepaintするとJPopupMenuが消えてしまいます。
JPopupMenuを消さずに画面を再描画する方法はありますでしょうか。
JPopupMenu.setDefaultLightWeightPopupEnabled(false);にしております。
0318317
2007/01/05(金) 17:24:42private Thread repaintThread = null;
public PopupMenuTest() {
setSize(800, 600);
JPopupMenu.setDefaultLightWeightPopupEnabled(false);
GraphicsDevice device = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
DisplayMode fullMode = new DisplayMode(800, 600, device.getDisplayMode().getBitDepth(), device.getDisplayMode().getRefreshRate());
device.setFullScreenWindow(this);
device.setDisplayMode(fullMode);
addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON3) {createPopup().show(PopupMenuTest.this, e.getX(), e.getY());}}});
setVisible(true);
if (repaintThread == null) {repaintThread = new Thread(this);repaintThread.start();}
}
public void run() {
while (repaintThread != null) {
System.out.println("repaint");repaint();
try {Thread.sleep(10000);} catch (Exception e) {}
}
}
private JPopupMenu createPopup() {
JPopupMenu popupMenu = new JPopupMenu();
JMenu menu1 = new JMenu("menu1");
menu1.add(new JMenuItem("TEST"));
popupMenu.add(menu1);
return popupMenu;
}
public static void main(String[] args) throws Exception {new PopupMenuTest();}
}
0319デフォルトの名無しさん
2007/01/05(金) 18:07:26この行削ったら動いてるように見えるが。
HeavyWeightなコンポーネント置くつもりならどうしようもないね。
0320317
2007/01/05(金) 19:23:47お返事ありがとうございます。
現在、PopupMenuListenerでPopup可視と連動してrepaintをするかしないか分岐
という感じで逃げています。
setIgnoreRepaint(true)
setFullScreenWindow(window)
の場合、意図した通りの動きにならない事が多い気がします。
0321デフォルトの名無しさん
2007/01/06(土) 00:50:470322デフォルトの名無しさん
2007/01/13(土) 21:12:58日本語入力をどうしようというので早速つまづきます
0323デフォルトの名無しさん
2007/01/13(土) 23:35:27ここはフルスクリーンをやめてウインドウの最大化をするべき
もちろん、装飾部分や常に手前に表示を指定すること
それらを指定すればタスクバーより手前に表示できる
0324デフォルトの名無しさん
2007/01/14(日) 00:11:08ありがとう。
0325デフォルトの名無しさん
2007/01/17(水) 03:37:37Java2Dで描いた円ってなんであんなに汚いのかなぁ・・。
Ellipse2Dで真円描いても上下左右非対称なガタガタの円。
アンチエイリアシングかけないと見れたもんじゃない。
クラス名のごとく楕円しか描けないのだらうか。
0326デフォルトの名無しさん
2007/01/17(水) 04:38:510328デフォルトの名無しさん
2007/01/17(水) 20:27:51(Sunの人じゃなかったけど)
0329デフォルトの名無しさん
2007/01/17(水) 20:37:26http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4151279
一番最後の comment みると、改善はしてるけど完璧じゃないよって書いてある。
0330325
2007/01/17(水) 23:40:521.5と1.6ではまったく差はみられなかったけど、将来的には改善していく
つもりはあるみたいだからそれに期待することにします。
0331デフォルトの名無しさん
2007/01/28(日) 15:27:29下線が見えないんだけど、これって俺だけ?
デフォルトだとフォントが MS UI Gothic Plain 12 になってるんだけど、
Monospaced Plain 12 に明示的に変えてやると下線も見えるようになった。
0332デフォルトの名無しさん
2007/02/12(月) 14:02:12また、その他使えそうなレイアウトマネージャあればURLキボンヌ
0333デフォルトの名無しさん
2007/02/12(月) 14:27:07今ならグループレイアウトが使い勝手もいいんでないかい?
0334デフォルトの名無しさん
2007/02/12(月) 15:57:170335デフォルトの名無しさん
2007/02/13(火) 10:31:470336デフォルトの名無しさん
2007/02/15(木) 14:47:55無効にして絶対値で指定したほうが楽そうじゃね?
0337デフォルトの名無しさん
2007/02/15(木) 15:01:49が、その場合でもレイアウトマネージャーに任せた方が楽なこと多数。
0338デフォルトの名無しさん
2007/02/15(木) 15:03:51プリンタで出力する気もないよな
モニタ解像度も知ったこっちゃないよな
はみ出たら横にスクロールさせる気満々だよな
リキッドレイアウトなんて聞いただけで反吐が出るよな
0339デフォルトの名無しさん
2007/02/15(木) 15:42:01推奨サイズを使えばコンポーネントの位置関係を全自動でやってくれるし、可変サイズのフレームを絶対座標なんておわっとる。
グループレイアウトはベースラインであわせてくれたりするのがすごい便利。
まぁつかってもつかわなくてもかまわんが、何も考えずにフレームに対してsetSizeだけしなければOK。
それをするとWindowsXPと2000、Vistaとそれぞれ異なる描画結果になるので注意。
レイアウトマネージャ使っていてもDPIの違いで結構異なるプラットフォームで動かすのは大変だけどな。
0340デフォルトの名無しさん
2007/02/22(木) 15:31:56って本は良本ですか?
0341デフォルトの名無しさん
2007/02/22(木) 22:54:56けどいくつか役に立ちました。
0342デフォルトの名無しさん
2007/02/23(金) 05:17:51所々既存コードに影響しないように考えられてる所も良いね。
早速、rhinoとgroovyから使う事を目的とした
Swingラッパーに一部採用させてもらいました。
0343デフォルトの名無しさん
2007/02/23(金) 13:18:46なぜか参考にもならないsoundのコードがはいっている
どうせいれるならちゃんとしたものを入れろと
0344デフォルトの名無しさん
2007/02/24(土) 04:44:350345デフォルトの名無しさん
2007/02/27(火) 23:56:30まぁなんつうか、モノはシンプルだね。
あとは、コンポーネントAの操作の結果を、コンポーネントBに、
Aの存在を意識させずに反映させる機能があればいいかな。
AからシングルトンなBeanを編集すると、イベントがBに飛んでそこで処理がおこる、みたいな。
こういうの自作してるんだけど、ひょっとしてjava.beans使えばできる?
0346デフォルトの名無しさん
2007/02/28(水) 00:06:55PropertyChangeListener/Eventじゃないのかね。
0347デフォルトの名無しさん
2007/02/28(水) 02:03:49導入前と導入後でソースが見やすくなるわけでもないし機能もかわらんからな
ただTaskとSwingWorkerは統一したほうがいいよな
0348デフォルトの名無しさん
2007/02/28(水) 08:22:12とかSwing信者から見ると気持ち悪いんだけど。
サーバサイドで慣らされてる人は平気なのかな。
0349デフォルトの名無しさん
2007/02/28(水) 11:19:14ロジック部分の呼び出しとかなら祖結合でいいけど
各種イベントでコンポーネントの状態を変更しないといけない密結合ではクラス分離して書くということはまずできないし
あのフレームワークの存在意義がわからないとはずっと前からいわれてきたし
startupとかはまぁイベントディスパッチスレッドを意識させないという意味があるのだろうけど
イベントディスパッチスレッドを意識してないと並列動作できないしな
0350デフォルトの名無しさん
2007/02/28(水) 13:10:09ロジックとGUIの分離、つまり同じアプリでSwing実装とSWT実装と
Struts実装をやりたい場合とか、そういうときに使えるものを
期待してしまう。
0351デフォルトの名無しさん
2007/03/02(金) 23:00:01これはなんとかならんもんでしょうか。
0352デフォルトの名無しさん
2007/03/03(土) 00:24:290353デフォルトの名無しさん
2007/03/08(木) 16:43:26オレが思いついてもあえて書かなかったことを・・・
0354デフォルトの名無しさん
2007/03/09(金) 12:48:500355デフォルトの名無しさん
2007/03/13(火) 10:35:260356デフォルトの名無しさん
2007/03/15(木) 21:09:440357デフォルトの名無しさん
2007/03/15(木) 23:02:040358デフォルトの名無しさん
2007/03/15(木) 23:15:15ttps://jdk-api-ja.dev.java.net/ja/index.html
0359デフォルトの名無しさん
2007/03/15(木) 23:54:520360デフォルトの名無しさん
2007/03/16(金) 03:24:01新機能とかまず概要の日本語がないってことはいまだ未完成ってことね
0361デフォルトの名無しさん
2007/03/19(月) 15:45:38http://journal.mycom.co.jp/column/jsr/006/
手動でリスナ書く手間から開放されるというのはかなり幸せかも。
0362デフォルトの名無しさん
2007/03/19(月) 17:02:51http://www.netbeans.org/download/flash/netbeans_6_gui_builder/netbeans_6_gui_builder.html
0363デフォルトの名無しさん
2007/03/19(月) 17:12:57Beans Binding って Cocoa Binding みたいなもの?
0364デフォルトの名無しさん
2007/03/19(月) 17:19:380365デフォルトの名無しさん
2007/04/02(月) 17:44:320366デフォルトの名無しさん
2007/04/03(火) 21:26:150367デフォルトの名無しさん
2007/04/03(火) 22:16:28食われるほどのJWSの裾野はないし、今JWSでやってるものをおきかえれるほどの力はFlashにはない。
0368デフォルトの名無しさん
2007/04/04(水) 01:19:08むしろJavaアプリの中でApolloのWeb連携機能が使いたいなぁ
0369デフォルトの名無しさん
2007/04/07(土) 16:00:15ためしに作ってみようかと思ったんですが、Swingに余り詳しくないのでそもそもどういう風に作れば良いのかわからず悩み中です。
0370デフォルトの名無しさん
2007/04/07(土) 16:14:18Swingに詳しいかどうかってのも関係ないな
0371デフォルトの名無しさん
2007/04/07(土) 17:22:07項目によって、色・フォント・背景色などを
分けたいのですができますか?
もしできるなら教えてください。
お願いします。
0372デフォルトの名無しさん
2007/04/07(土) 18:50:310373369
2007/04/07(土) 20:02:11どうもです。GUIはweb系しか作ったことがなかったんで悩んでました。
HTMLに慣れた身にはSwingは面倒くさくてなかなか作る気が起きませんね・・・。
カレンダー部分は線を描画して書くことになるのかなぁ。
0374デフォルトの名無しさん
2007/04/07(土) 20:53:24適当にラベルをならべる程度でもいいし
お好きなように
0375371
2007/04/07(土) 21:37:25有難うございました。
やりたい事ができました。
0376デフォルトの名無しさん
2007/04/08(日) 00:33:25やる気がなければ何もできませんな
何で作るのよ
0377デフォルトの名無しさん
2007/04/08(日) 00:38:41ダイナミックに動かすにはイベントは別言語を使わなければならないし、
環境依存性が高い
そして通信部分も再読み込みとか2度押し防止とかいろいろと考慮する必要有、と
0378デフォルトの名無しさん
2007/04/08(日) 02:30:49JLabelにHTML貼り付けでOK
0379デフォルトの名無しさん
2007/04/08(日) 23:38:16せめてJEditorPaneだと思ったらw
0380デフォルトの名無しさん
2007/04/10(火) 22:05:12常に前面に表示させたいんですが、できますか?
もしできるなら教えてください。
お願いします。
0381デフォルトの名無しさん
2007/04/10(火) 22:11:171.5 以降なら java.awt.Window#setAlwaysOnTop(boolean) を使う。
それ以前なら標準では無理。
例えば Windows なら JNI経由で java.awt.Window の HWND 得て、SetWindowPos すればできるけど。
0382デフォルトの名無しさん
2007/04/10(火) 22:20:42できました。
素早い回答ありがとうございました。
0384デフォルトの名無しさん
2007/04/13(金) 00:02:44JFrameのレイアウトに置いていく作りにしてるんだけど、これでイケテル?
0385デフォルトの名無しさん
2007/04/13(金) 00:17:500386384じ
2007/04/13(金) 00:30:50巧く説明できないのでおやすみなさい
0387デフォルトの名無しさん
2007/04/13(金) 00:31:04これの一番下の事を言っているのでは
0388デフォルトの名無しさん
2007/04/13(金) 02:46:21うーん、単にJPanelを置いてその中にコンポーネント配置していけばいいんじゃないのかな?
0389デフォルトの名無しさん
2007/04/13(金) 03:07:27public class HogePanel extends JPanel{...} として作っておけば、
JFrame, JInternalFrame, JApplet, JTabbedPane などに乗っけるだけで
いろいろ使える、って意味では?
再利用性を高めるやり方としては間違ってないと思う。
再利用の必要がないなら無駄だけど、個人的にこういう作りは好きだ。
0390デフォルトの名無しさん
2007/04/13(金) 03:27:30つまりJColorChooserみたいな複合ウィジェットを作って再利用ってだけの話なのかね?
JPanelじゃなくてJComponentでいい気がするけど…
0391384
2007/04/13(金) 22:13:53そのとおりです!
気持ちが伝わってなんか嬉しいっす。
JComponentですか。思いつきませんでした。どっちがメリットあるかなぁ。
0392デフォルトの名無しさん
2007/04/13(金) 23:03:480393デフォルトの名無しさん
2007/04/14(土) 15:46:110394デフォルトの名無しさん
2007/04/14(土) 18:29:58awt では Panel 使ったけどが swing で JComponent が Container に
なったから JPanel にする必要は全くなくなったのでは…?
0395デフォルトの名無しさん
2007/04/14(土) 18:32:06どっからそんな情報が沸いてくるん?
0396デフォルトの名無しさん
2007/04/14(土) 18:35:58JComponentはObjectのようなSwingコンポーネントのルートクラスだから
継承するならいいけどぽとぺたやるならJPanelで
0397デフォルトの名無しさん
2007/04/14(土) 20:44:27具体的にJPanelのどの部分がぽとぺたに向いているのでしょうか?
あるいは JComponent のどの部分が向いてないのでしょう?
0398デフォルトの名無しさん
2007/04/14(土) 20:58:040399デフォルトの名無しさん
2007/04/14(土) 21:03:47あれ? と思ったことはあるが、どうせ継承して使うだろうし、あえて
JPanelでなければならないことはなさそうだな。
ただ、ポトペタだとソースレベルで継承して使うことにはおそらくならな
いだろうから、JPanelでないと駄目かも。
0400デフォルトの名無しさん
2007/04/14(土) 21:18:23JPanelを使った場合、JPanelの機能変更に引きずられる可能性がある
それを望むのであればJPanelの上にまとめればよい
独自コンポネントでJPanelに影響を受け手欲しくなければJComponent
0401デフォルトの名無しさん
2007/05/12(土) 15:54:29できないなら正確なサイズを知る事はできるのでしょうか?
0402デフォルトの名無しさん
2007/05/12(土) 16:35:130403デフォルトの名無しさん
2007/05/12(土) 17:52:56JFrameの方はなんとなくわかったのですが
メニューバーの方はわからないのでもう少しヒントをくれるとありがたいです
0404デフォルトの名無しさん
2007/05/12(土) 18:11:44menuBar.setPreferredSize(new Dimension(size.width, 200));
0405デフォルトの名無しさん
2007/05/12(土) 18:35:470406デフォルトの名無しさん
2007/05/23(水) 23:57:55class testKeyEv extends JComponent {
public testKeyEv(){
enableEvents(AWTEvent.KEY_EVENT_MASK);
addKeyListener(new stateCheckKeyHandler());
setFocusable(true);
}
}
setGlassPane()でセットして実行すると、始めはちゃんとキーイベントを取得してくれるのですが、
マウスでほかのボタンをクリックしたりすると二度とキーイベントを取得してくれません。
ちなみに stateCheckKeyHandlerはKeyAdapterをextendsしたのもです。
マウスイベントはほかのコンポーネントにそのまま渡して、KeyEventだけを常に取得し続けるには
どうすればいいでしょうか?
0407デフォルトの名無しさん
2007/05/24(木) 00:13:430408デフォルトの名無しさん
2007/05/24(木) 01:57:16最初から中のコンポーネントにフォーカス当ててそっちでキーイベント拾いましょう
# 関係ないけどリスナーを登録してイベントとるなら enableEvents() は必要ないんじゃなかったっけ?
0409デフォルトの名無しさん
2007/05/25(金) 19:47:41ツリーのノードによってノード毎に違うテキストのツールチップを表示しなきゃいけないんだけど、
この方法はJTreeのgetTooltipText()でノード別のテキスト返すように
オーバーライドするとして、ツールチップテキストを設定するタイミングはどのぶぶん?
カスタムセルレンダラ使ってるんでセルレンダラがレンダリングコンポーネント返す時にそのコンポーネントに
テキスト設定しようと思ってるんだけど、それで良いかな?
ググって漁ってみたんだけど他に思いつかない。アプローチが間違ってんのかすらも分からない。
教えてエロいひと。
0410デフォルトの名無しさん
2007/05/25(金) 21:05:28スクロールとかウインドウの重なり具合とか最大縮小するだけでもよばれるけどそのタイミングでいいの?
0411デフォルトの名無しさん
2007/05/25(金) 21:13:50JComponentのgetToolTipTextをオーバーライドすればいい
0412デフォルトの名無しさん
2007/05/25(金) 21:16:13何のための引数かと
■ このスレッドは過去ログ倉庫に格納されています