トップページ⇒tech
1001コメント326KB

Java標準低速GUI 6 AWT/Swing

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001デフォルトの名無しさん2007/09/26(水) 20:51:18
ハードウェアの高スペック化、描画アルゴリズムの変更、JavaVMの高速化に伴い、パフォーマンスの問題は改善されています。
しかしながら、"Java"というだけで未だに敬遠されるのが現状。
そんなSwingと引き続き付き合っていくみんなのスレッドです。
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
0802デフォルトの名無しさん2007/12/31(月) 00:58:07
JavaはマイナーCPUに冷たいだろうし
マイナーGPUにも冷たいのかもしれんね
0803デフォルトの名無しさん2007/12/31(月) 01:02:44
CやC++なら温かいともいえないんじゃね?
0804デフォルトの名無しさん2007/12/31(月) 01:16:32
>>802
Java使ってるSWTもマイナーCPUやマイナーGPUに冷たいって事に?
0805デフォルトの名無しさん2007/12/31(月) 01:17:10
>>802
SPARCにも冷たいって事に?
0806デフォルトの名無しさん2007/12/31(月) 01:20:05
>>804はスルーするが、>>805は許せん。
0807デフォルトの名無しさん2007/12/31(月) 01:42:32
今時はお世辞にもメジャーとは言い難い。
0808デフォルトの名無しさん2007/12/31(月) 14:16:14
いまさらSPARCもねえだろ
0809デフォルトの名無しさん2007/12/31(月) 15:29:10
金にいとめをつけずWinで最速のマシンもってくれば、Javaでもかなり高速動作するんじゃないの。
0810デフォルトの名無しさん2007/12/31(月) 15:33:56
既存のコンポーネントにアクションを付加したい場合どのような手段を取るのが比較的単純に済むでしょうか?

例えば、JTreeでCtrl+Fで検索のアクションをさせたい場合などです。
0811デフォルトの名無しさん2007/12/31(月) 17:44:54
>>810
適当なコンポーネントの ActionMap と InputMap に登録すればいいだろ。
0812デフォルトの名無しさん2007/12/31(月) 18:07:49
JFileChooserののろさにガックリ
0813デフォルトの名無しさん2007/12/31(月) 18:15:44
>>368 あたりで話題になってる不具合のせいかも?
0814>>8102007/12/31(月) 18:36:09
InputMapを知りませんでした。
こんな簡単に実現できるなんてSwingは本当にすごいですね。
ありがとうございました。
0815デフォルトの名無しさん2008/01/01(火) 02:16:39
>>799
いつものネガティブキャンペーン乙

6.0だとEclipseのほうが軽いとかってありえんだろ
SWTはスレ違いだからそっちでやってくれ
0816デフォルトの名無しさん2008/01/01(火) 02:28:13
今更釣られるアホは寝てろ
0817デフォルトの名無しさん2008/01/01(火) 08:17:29
たしかに起動に関してはnetbeansめっちゃ遅いよな
0818デフォルトの名無しさん2008/01/02(水) 02:11:59
何もプラグイン入れなければ、Eclipseは軽いね。
0819デフォルトの名無しさん2008/01/02(水) 02:17:51
Java EE フルセット入れた Eclipse のもっさりと不安定さはすさまじいものがある。
sysdeo の Tomcat プラグインと JSP, XML の構造化エディタ程度ならめちゃめちゃ軽い。
必要なものを選択できる人間だけが楽できる。
0820デフォルトの名無しさん2008/01/02(水) 03:15:40
>>819
インストールしてもプラグイン無効にすればいいんじゃね?
0821デフォルトの名無しさん2008/01/02(水) 22:26:40
swingのコピペを調べてたんだが。

CTRL+X -> CTRL+V で「切り取り -> 貼り付け」した時に、
貼り付け後に、余計なオブジェクトを削除するための後処理はexportDoneでいいんだろうか?
なぜか、CTRL+Xを押した瞬間に、exportDoneが実行されちゃうんだ。

exportDoneの説明には、
>データのエクスポート後に呼び出されます。このメソッドは、アクションが MOVE の場合に転送されたデータを削除します。
>MOVE はこの実装にサポートされるアクションでないため、このメソッドの実装では何も行われません。getSourceActions には MOVE が含まれません。

どっちやねんw
08228212008/01/02(水) 22:28:33
今のところ、対処方法が分らないので、exportDoneの中では何もせず、
importDoneの中で、貼り付け操作完了後に、
自分で削除操作を実行しようかなと思ってる。
08238212008/01/03(木) 00:34:28
なにをバカなことを!

切り取りの標準的な操作は、切り取りと同時に削除だろうが!

エクスプローラの動作が特殊なんだ!
新年早々はずかしぃぃぃぃぃぃぃぃぃぃぃぃ!!!!!!!!!!
0824デフォルトの名無しさん2008/01/03(木) 03:16:52
エクスプローラの動作は、CUTというよりPREPARE-MOVEだからな。
0825デフォルトの名無しさん2008/01/05(土) 20:53:44
>>817
終了はめっちゃ速いのだが。
0826デフォルトの名無しさん2008/01/06(日) 23:23:28
jdk1.6.0u3
import java.awt.Frame;
これってバグなの?
0827デフォルトの名無しさん2008/01/06(日) 23:33:55
      ___    ━┓
    / ―\   ┏┛
  /ノ  (●)\  ・
. | (●)   ⌒)\
. |   (__ノ ̄  |
  \        /
    \     _ノ
    /´     `\
     |       |
     |       |

           ___   ━┓
         / ―  \  ┏┛
        /  (●)  \ヽ ・
       /   (⌒  (●) /
       /      ̄ヽ__) /
.    /´     ___/
    |        \
    |        |
0828デフォルトの名無しさん2008/01/06(日) 23:49:08
>>827
分かる人にはこれだけで分かる
0829デフォルトの名無しさん2008/01/06(日) 23:53:32
>>827
>>828
バグってたのは俺のほうだったw
*.class 削除したらコンパイル通ったよww
0830デフォルトの名無しさん2008/01/07(月) 00:55:29
どういう環境だよ・・・
0831デフォルトの名無しさん2008/01/07(月) 01:26:16
>>830
http://pc11.2ch.net/test/read.cgi/tech/1197710566/646
だろう。
0832デフォルトの名無しさん2008/01/07(月) 11:20:26
テストするならTestFrameとかにすべし
0833デフォルトの名無しさん2008/01/07(月) 12:55:58
>>831
よくみつけてきたな
0834デフォルトの名無しさん2008/01/09(水) 03:57:38
相変わらず質問スレは気持ち悪いな
0835デフォルトの名無しさん2008/01/09(水) 17:58:19
import java.util.*;
import javax.swing.*;
public class NewJFrame2 extends javax.swing.JFrame {
List<String> dummyList = new ArrayList<String>();
JList jList;
public NewJFrame2() {
setDefaultCloseOperation( WindowConstants.EXIT_ON_CLOSE);
JScrollPane jScrollPane = new JScrollPane();
jList = new JList();
jScrollPane.setViewportView(jList);
getContentPane().add(jScrollPane, java.awt.BorderLayout.CENTER);
for ( int i=0; i<300; i++ ) {
StringBuilder sb = new StringBuilder();
int max = (int)(Math.random() * 100 + 1);
//int max = 20;
for ( int j=0; j<max; j++ ) sb.append("A");
dummyList.add(sb.toString() + " " + i);
}
jList.setModel(new AbstractListModel() {
public int getSize() { return dummyList.size(); }
public Object getElementAt(int index) {
return dummyList.get(index);
}
});
pack();
}
public static void main(String args[]) {
new NewJFrame2().setVisible(true);
}
}
0836デフォルトの名無しさん2008/01/09(水) 18:01:42
JListのカーソルキーによるスクロールことで謎があるので投げてみる。

>>835のプログラムなんだけど、単純にJListの中に300個のダミーデータを入れている。

カーソルキーで下にスクロールしていき、数十行進んだら、こんどは上に10行くらい
スクロール。
そしたらまたカーソルキーで下に移動。
すると、選択されてる項目が一瞬で画面の下までジャンプしてしまう。
このプログラムで、maxを20とか一定の値にした場合はジャンプしない。
JListの各セルの文字列長をランダムに変えたものを入れるとこの現象が起きる。
こういう仕様なのかもしれないけど、一瞬で選択位置が飛ぶと、
目線がそれてしまうので操作感がよくない。
maxを固定したときのように動作してほしい。
なんとかする方法ないかなぁ?
0837デフォルトの名無しさん2008/01/09(水) 19:57:24
>>836
解決法でないのだが、「ジャンプ」の条件について。
固定長かどうかではなく、Viewport の外に描画域があるかないか、ではないのか、と。

固定長で横スクロールが出るようにしたときは「ジャンプ」するし、
固定長でなくても、横スクロールが出ないときは「ジャンプ」しない。

JScrollPane で横スクロールを非表示にしても、見えない部分があるときは「ジャンプ」する。
0838デフォルトの名無しさん2008/01/10(木) 16:05:46
フレームの横サイズを水平スクロールバーが出なくなるまで広げてやればジャンプはしないな。
しかしちょっと設定をいじくったぐらいでは解決しそうない。
オーバーライドして一部の機能を殺すとか。
0839デフォルトの名無しさん2008/01/10(木) 18:27:36
↓このバグだと思うよ。7で直ってるらしい。
http://bugs.sun.com/view_bug.do?bug_id=6568906
http://bugs.sun.com/view_bug.do?bug_id=6510999
0840デフォルトの名無しさん2008/01/10(木) 18:57:44
バージョンアップを待つのが一番楽そうだね
0841デフォルトの名無しさん2008/01/10(木) 19:27:17
よく見つけてくるな。すげーよ。
0842デフォルトの名無しさん2008/01/10(木) 21:33:46
有名なバグだぞ。
JListに512個要素突っ込むとバグるとか放置されてるし。
0843デフォルトの名無しさん2008/01/10(木) 22:03:23
>>842
2000個いれてみたけど、なにかバグあんの?
0844デフォルトの名無しさん2008/01/10(木) 22:52:30
512個入れて、一番したのアイテム選択してCTRL+B

これで、すべてのアイテムが2個ずつになって1024個になるというステキなバグ
0845デフォルトの名無しさん2008/01/10(木) 23:06:27
1から10000までの数字を全部掛けたときに
末尾に並ぶ0の個数を求めるのをJavaでおながいします
0846デフォルトの名無しさん2008/01/10(木) 23:10:36
それはSwingに関係あるのか?
0847デフォルトの名無しさん2008/01/10(木) 23:16:39
>>844
バグが出なかったんだけど
他になんか条件ないの?
0848デフォルトの名無しさん2008/01/10(木) 23:17:55
>>845

class Test{
static void main () {
cnt5 = 0;
for (int i = 1;i <= 10000; i++)
if(i % 5 == 0)
cnt5++;
System.out.println("count" + cnt5);
}
}
0849デフォルトの名無しさん2008/01/10(木) 23:22:25
ああ、5から5ずつ足してくから10000/5=2000か?
0850デフォルトの名無しさん2008/01/10(木) 23:48:27
10を素因数分解して2*5。んで、2は大量に有るから、5だけ数えれば良い、と。
0851デフォルトの名無しさん2008/01/10(木) 23:51:27
どの道>>848は間違ってるわな
0852デフォルトの名無しさん2008/01/11(金) 00:07:08
>>850
i%25 とか i%125 も数えなきゃだめじゃね?
0853デフォルトの名無しさん2008/01/11(金) 00:07:36
どのみちグズグズっぽいんだが。
0854デフォルトの名無しさん2008/01/11(金) 00:15:22
スレチだからまぁ。妖精現実を引っ張ってお茶を濁すべ
つ ttp://deztec.jp/x/05/faireal/faireal-26-index.html
0855デフォルトの名無しさん2008/01/11(金) 00:19:54
いかにロジカルに解くかが課題じゃなけりゃ BigDecimal で階乗求めて数えた方が早い。
実用に問題ないレベルならシンプル記述に徹するのも美学。
0856デフォルトの名無しさん2008/01/11(金) 00:48:09
80-20の法則な。今丁度勉強中。
08578482008/01/11(金) 01:29:37
直した。
class Test{
static void main () {
int cnt5 = 0, n;
for (int i = 5;i <= 10000; i += 5) {
n = i;
while (n % 5 == 0) {
cnt5++;
n /= 5;
}
}
System.out.println("count" + cnt5);
}
}
0858デフォルトの名無しさん2008/01/11(金) 01:39:18
だからどのへんがAWT/Swingに関係あるんだよと
0859デフォルトの名無しさん2008/01/11(金) 01:57:27
839だけど、このバグは初めて知った。
>>有名なバグだぞ。
にしては、バグ登録日があまり昔ではないが?

>>842
>>844
そんなバグはありえない。
まず、JList、JListのsuperクラスにCTRL+Bなんてデフォルトのキーバインドはない。
さらに、ListModelへ項目の追加、削除が可能であることを
JListは知りようがないから、JListがListModelに項目を追加することはできない。
(ComboBoxModelのMutableComboBoxみたいなインタフェイスはない。)

そもそも、登録もされていないキーバインドが実行されるなら、
JListでなく、JComponentのバグだし。

JListがListModelに項目を追加する唯一の方法は、
ListModelをDefaultListModelへダウンキャストすることだけど、
Swingのソースコードにダウンキャストするような箇所はない。

さて、どうやったら、ソースに書かれていないことを
JListが実行するのだろう?
0860デフォルトの名無しさん2008/01/11(金) 03:06:00
256発あてるとバキュラを破壊できるんだぜ
0861デフォルトの名無しさん2008/01/11(金) 03:13:52
Observer や Composite 型の設計だと本体クラスでそう書かれてないからライブラリのバグじゃねーとは
断言できないんだけどな。実行時のリスナやら集約の親子まで調べてやらないと。
0862デフォルトの名無しさん2008/01/11(金) 03:22:05
ちょっと尻切れトンボだった。
JLabel クラスが無罪であることを得々と説いてもあんまし意味なくね? という話 (実装者乙、でなければ)。
0863デフォルトの名無しさん2008/01/17(木) 15:17:13
JEditorPane とか、せめて W3C の DOM で xhtml + CSS になってくれりゃ
XSL で処理できるからデータを利用しやすいんじゃがのう。
0864デフォルトの名無しさん2008/01/17(木) 18:20:01
自分でやれば良いだろそれくらい。
0865デフォルトの名無しさん2008/01/17(木) 18:50:17
Lobo Browserに投資する企業はいないのかねぇ
0866デフォルトの名無しさん2008/01/17(木) 19:01:08
>>865
ブラウザを使うのがPCだけしかない考えてるなら、考え直した方がいい。
0867デフォルトの名無しさん2008/01/17(木) 19:04:52
Swing の HTML 機能も携帯のフルブラウザにすら追い越されて久しいわけだが。
0868デフォルトの名無しさん2008/01/17(木) 19:21:49
>>867
一緒にしてるしwwwアホか?
0869デフォルトの名無しさん2008/01/17(木) 19:27:01
シンクライアントに必要なだけだし携帯とかいらんな
0870デフォルトの名無しさん2008/01/17(木) 19:30:49
>>868
むしろあの HTMLEditorKit 系をおまいがどこで活用できてるのか知りたい。
0871デフォルトの名無しさん2008/01/17(木) 19:31:39
ブラウザをJavaでやる必要があるのか?
0872デフォルトの名無しさん2008/01/17(木) 19:42:23
普通にあるぞ。例えばヘルプ機能とかの生産性があがる。
JDICだとXSS対策が必要だろうけど、こっちは不要。
0873デフォルトの名無しさん2008/01/17(木) 19:56:22
うん、ヘルプは俺も使う。だがどうしてもその Sandbox から出してやれんw
0874デフォルトの名無しさん2008/01/17(木) 20:06:38
バカばっかだな
0875デフォルトの名無しさん2008/01/17(木) 20:09:36
Sandboxなフルブラウザは作れると思うが。
Rhinoにその手のインタフェースを与えなきゃいいだけだ。
0876デフォルトの名無しさん2008/01/17(木) 20:22:15
フルブラウザという言葉自体胡散臭い
0877デフォルトの名無しさん2008/01/17(木) 20:25:26
頭の悪い煽りがやたら入るスレだなw
0878デフォルトの名無しさん2008/01/17(木) 20:30:43
たまに客がどこで見つけたか知らないが 「Swing でもブラウザみたいなこと
できるんでしょ?」 と言い出す事もあるが、あれを見せるとさすがに黙る。
0879デフォルトの名無しさん2008/01/17(木) 20:34:02
つ Flying Saucer
0880 2008/01/17(木) 20:39:33
Swing の HTMLEditorKitは文字通りEditorのためでブラウザみたいに表示onlyではないからね。
でも日本語とかIMEのこととか考えてないよな、あのHTMLEditorKitは。表示だけならいいけど。
0881デフォルトの名無しさん2008/01/17(木) 20:46:38
4.01準拠マダー?
0882デフォルトの名無しさん2008/01/17(木) 23:57:24
JavaがC++より優れている事を示す
絶好の材料だと思うんだけどなあ<ブラウザ
0883デフォルトの名無しさん2008/01/18(金) 00:15:59
標準ライブラリの有無で言語の優劣を決めるのか?
0884デフォルトの名無しさん2008/01/18(金) 00:23:11
実際問題、ライブラリとIDEが言語仕様の優劣を余裕で帳消しにするからね。
D言語1.0がまったく普及しない原因がそれと言われてるし。
0885デフォルトの名無しさん2008/01/18(金) 00:29:11
C++の失敗もそうだね
標準ライブラリがしっかりしてれば
Javaは生まれなかったかも知れない
0886デフォルトの名無しさん2008/01/18(金) 00:30:48
Perl嫌いだけどこれだけ流行ってしまったのは
CPANのおかげと言っても過言ではない死ね
0887デフォルトの名無しさん2008/01/18(金) 00:36:14
>>883 の中では SmallTalk が世界を救うようです。
0888デフォルトの名無しさん2008/01/18(金) 03:53:19
java c++ d を同列に扱う馬鹿がおる
0889デフォルトの名無しさん2008/01/18(金) 08:12:32
>>888
人を否定するなら代替の主張を出してからにしたら?
0890デフォルトの名無しさん2008/01/18(金) 14:17:41
なにいってんだ?
0891デフォルトの名無しさん2008/01/18(金) 19:29:51
同列だろ。言語仕様は実装とは違うレイヤーにある。
0892デフォルトの名無しさん2008/01/18(金) 19:37:12
いいかげんスレ違いだろ
次の話題どうぞ
↓↓↓
0893デフォルトの名無しさん2008/01/18(金) 19:38:57
JMFって商用可能ですか?
0894デフォルトの名無しさん2008/01/18(金) 19:55:06
スレ違い
0895デフォルトの名無しさん2008/01/18(金) 20:11:16
どうかんがえてもここだろ。自治厨とか懐かしすぎ。
0896デフォルトの名無しさん2008/01/18(金) 20:52:29
JMFがここだって
0897デフォルトの名無しさん2008/01/18(金) 21:04:19
じゃあJOGLはここでいい?
0898デフォルトの名無しさん2008/01/18(金) 21:36:21
じゃあ、SDL for javaもここだな。

>>865の脳内ではメディア再生ライブラリがGUIツールキットなんだよ。
0899デフォルトの名無しさん2008/01/18(金) 21:51:43
普通の考えじゃん。頭おかしいんじゃね?
0900デフォルトの名無しさん2008/01/18(金) 22:57:52
JOGLはこっちじゃない?
http://pc11.2ch.net/test/read.cgi/tech/1033703640/
0901デフォルトの名無しさん2008/01/18(金) 23:25:19
JOGLとJava3Dはまったくの別物だぞ・・・
むしろGLCanvasとかGLJPanelとかAWTとSwingの外部コンポーネントと考えれるからこっちだろと

シンプルに描画だけのOpenGLの実装だからユーザーに全ての描画を任せるタイプで
フルスタックで重いJava3Dとはかなり違う
レス数が900を超えています。1000を超えると表示できなくなるよ。