Java標準低速GUI 6 AWT/Swing
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2007/09/26(水) 20:51:18しかしながら、"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
0756デフォルトの名無しさん
2007/12/27(木) 00:09:33オブジェクトのxとyを少しづつ変化させているんですけど、どうやるのがベターですかね?
オブジェクトはいろんな場所に発生するので、
if (x > 行き先X) {
0757デフォルトの名無しさん
2007/12/27(木) 00:10:11続き
if (x > 行き先X) {
0758デフォルトの名無しさん
2007/12/27(木) 00:13:28続き
if (x > 行き先X) {
x -= 5;
} else {
x += 5;
}
if (y > 行き先Y) {
y -= 5;
} else {
y += 5;
}
こうやってるんですけど、こうするとxかyのどちらかが行き先に到達した場合に、
ぷるぷる震えた感じになっちゃうんですけど、なにかうまい方法ありますかね?
0759デフォルトの名無しさん
2007/12/27(木) 00:13:370760デフォルトの名無しさん
2007/12/27(木) 00:15:210762デフォルトの名無しさん
2007/12/27(木) 00:34:37それぐらい、自分で考えろよ・・・・
つかスレ違い。
0763デフォルトの名無しさん
2007/12/27(木) 00:40:10差が5に満たない場合
差の分だけ移動
既に目的地に到達してたら チェックはしない。
移動距離の5は定数にしようかな
思った事を書いてみた。
俺は寝る、がんばれ。
0764758
2007/12/27(木) 00:41:06表示上の問題だと思ったんでここで聞いたんですが・・・
xflagとyflagを作って、&で到達チェックするとか考えたんですけど、
スマートじゃないんですよね
たとえばどんなのが考えられますかね?
0766デフォルトの名無しさん
2007/12/27(木) 00:45:01って自分で聞いてるぐらいだからSwingの問題じゃなくてアルゴリズムの問題だろ。
0767デフォルトの名無しさん
2007/12/27(木) 00:51:43javaのスレッドで聞いたほうが良かったですね
答えてくれた方ありがとうございました。
0768デフォルトの名無しさん
2007/12/27(木) 01:03:08問題の切り分けに注意しないと間違ったスレでは歓迎されないぞ
0769デフォルトの名無しさん
2007/12/27(木) 01:14:11初心者スレッドで聞けばよかったですか
いえばただの簡単なアルゴリズムの問題なのですが、
ここなら同じようなことをやっている人がいるかなと思ったんで、
ここで聞いたほうが早いかなと思ってしまいました。
0770デフォルトの名無しさん
2007/12/27(木) 01:17:26まあ、その前にこの程度のロジックは自分で考えられないと、
なにを作るにしても困ると思うぞ。
0771デフォルトの名無しさん
2007/12/27(木) 01:33:38そこまでのアルゴリズムじゃないけど。
0772デフォルトの名無しさん
2007/12/27(木) 01:36:47どう見ても小学生の算数レベルだろ。
0773758
2007/12/27(木) 01:39:19スマートにできないんですよね(馬鹿なんで)。
完璧を目指すのはキリがないと思うんですが、
ある程度きれいなコードが知りたいんですよ。
ttp://pc11.2ch.net/test/read.cgi/tech/1197710566/
ここに移動したんで良かったらいいサンプルコードお教えください。
0774デフォルトの名無しさん
2007/12/27(木) 01:43:05>ここで聞いたほうが早いかなと思ってしまいました。
こんなのを自分で考えられないとしたら先は長い気がするが…
まぁ地道にがんばれ!
0775デフォルトの名無しさん
2007/12/27(木) 02:06:16こういうの当時の小学生は普通に作ってたもんね
0776デフォルトの名無しさん
2007/12/27(木) 02:18:59というかゲームにSwing使ってるの?
0777デフォルトの名無しさん
2007/12/27(木) 02:20:55ただ、ここAWTと合流したからJava2D等も含むといえば含む
本気でやるならJOGLだろうけど
0778デフォルトの名無しさん
2007/12/27(木) 02:26:13いつの間にかスレタイにAWTが入ってた!!
0779デフォルトの名無しさん
2007/12/27(木) 02:32:45いまじゃJOGLはjava2Dとパイプラインが統合されてんだよね。
OpenGLの関数使いたいわけじゃないなら-DオプションでOpenGL使うようにした方が楽かね?
それならわざわざ2D描画に3Dtoolkit使う必要ないし。
バグさえ消えれば。
0780デフォルトの名無しさん
2007/12/27(木) 04:23:20↓の様にやること多いじゃないですか
このタイマーをストップさせることって可能ですか?
public void startTimer() {
int i = 0;
Timer timer = new Timer(20, new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (i > 100) {
return;
}
i++;
});
timer.start();
}
いままで↑のような感じでiが100超えたらリターンするようにしてたんですが、
ずっとタイマーは動きっぱなしなんですよね。
timerはiが100を超えたらストップさせたいんですよ。
timer内から自分自身をstopさせることができればいいんですが...
0781デフォルトの名無しさん
2007/12/27(木) 07:13:18http://java.sun.com/javase/ja/6/docs/ja/api/javax/swing/Timer.html
0782780
2007/12/27(木) 07:55:23実際のコーディングを見てください
まずメインクラスでクラスAのインスタンスaを10個作る(略
pubilc void run { //メインループ
for(int i=0;i<10;i++){ //a[0]からa[9]のxを増やしていき、xが10になったらstartTimer()をplay
a[i].x++;
if(a[i].x >= 10) {
a.startTimer();
}
�@
}
}
pubilc class A {
int x = 0;
int size = 10;
public void startTimer() {
Timer timer = new Timer(20, new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (size> 20) {
return;
}
size++;
});
timer.start();
}
}
実際はa[0]が増分し終わったらa[1]にいったり、同時に動いたりするんですが...
�@の部分で判定してtimer.stopさせようとしてもすぐストップしてしまうと困るし、
メインループからはtimerがいつ終わるのかわからないのでストップできないんですよね
なにか大きな間違いがあるんでしょうか?
0783デフォルトの名無しさん
2007/12/27(木) 08:37:43後は変数のスコープの問題。
ローカル変数timerをクラスAのインスタンス変数にして、
こんなメソッドを作って
public void stopTimer(){
timer.stop();
}
これをactionPerformed()内の適切な位置で呼べばいい。
ところでこのサンプルコード、Timerでやってる処理がi++だけなんだが、
これは単純化したサンプルコードなだけだよね?
ホントのコードでは、ちゃんとGUIスレッドですべき処理をしてるんだよね?
0784デフォルトの名無しさん
2007/12/27(木) 08:53:05GUIスレッドですべき処理というのがいまいちわかんないんですが、
ある条件でaのエフェクトを起こすみたいな感じなんですよ
とにかくこれで寝れます どうもありがとうございました
0785デフォルトの名無しさん
2007/12/27(木) 10:45:150786デフォルトの名無しさん
2007/12/27(木) 12:26:40swing.TimerはEDTでactionPerformed呼ぶからそのへんは大丈夫と思
0787デフォルトの名無しさん
2007/12/27(木) 13:29:19Java2Dだとαブレンディング/テストとか足りないものが多いから
2DであってもOpenGL使わざるを得ないのが現実
>>785が正解
あと注意すべきところはSwingTimerは定期処理にはいいけど、
長時間の流れがある処理には向かないというのもおぼえておくとよろし
あくまでも一定時間ごとにアクションイベントを発生させるだけ
詳しく見てないけどSwingFrameworkでjavax.swing.Timerも扱えるんかな?
0788デフォルトの名無しさん
2007/12/27(木) 22:23:18・JMFだとMacで再生出来ない。
・QuickTime for JavaだとLinuxで再生出来ない。
という認識はあっていますでしょうか?
0789デフォルトの名無しさん
2007/12/27(木) 22:41:37というかこれくらい人に聞かずとも分かるだろ。
0790デフォルトの名無しさん
2007/12/28(金) 00:08:21ttp://www.animoids.com/jmf_for_mac.html
「JMF_2_1_1_mac.zip」の部分から、
もしかしてMac用がどこかで配布されているのかと勘違いしてしまいました。
0791デフォルトの名無しさん
2007/12/28(金) 03:27:55JMFはjava動かすスペックと動画デコードするスペックを
ダブルで要求するからネイティブ版でもいろいろすると重いぞ。
単純なラッパーだからwin版はバグだらけだし。
0792デフォルトの名無しさん
2007/12/28(金) 08:46:22こんなの見つけたぞ
ttp://www.sra.co.jp/people/nisinaka/Jun4Java/index_ja.html
0793デフォルトの名無しさん
2007/12/28(金) 15:55:29なんでどこも投資して開発を続けないんだろう
0794デフォルトの名無しさん
2007/12/28(金) 16:06:510795デフォルトの名無しさん
2007/12/30(日) 16:40:200796デフォルトの名無しさん
2007/12/30(日) 16:55:090797デフォルトの名無しさん
2007/12/30(日) 16:57:490798デフォルトの名無しさん
2007/12/30(日) 17:14:410799デフォルトの名無しさん
2007/12/31(月) 00:16:16結局今はEclipseにもどりますた。
SwingアプリがSWTアプリみたいに比較的ストレスなく動いてくれる日はマダ来ないのかね。
0800デフォルトの名無しさん
2007/12/31(月) 00:25:30>>799の気分次第で明日にでも来るし、永遠に来ない事もありうる
0801デフォルトの名無しさん
2007/12/31(月) 00:57:01マシンのスペックはいかほどで?
0802デフォルトの名無しさん
2007/12/31(月) 00:58:07マイナーGPUにも冷たいのかもしれんね
0803デフォルトの名無しさん
2007/12/31(月) 01:02:440804デフォルトの名無しさん
2007/12/31(月) 01:16:32Java使ってるSWTもマイナーCPUやマイナーGPUに冷たいって事に?
0805デフォルトの名無しさん
2007/12/31(月) 01:17:10SPARCにも冷たいって事に?
0806デフォルトの名無しさん
2007/12/31(月) 01:20:050807デフォルトの名無しさん
2007/12/31(月) 01:42:320808デフォルトの名無しさん
2007/12/31(月) 14:16:140809デフォルトの名無しさん
2007/12/31(月) 15:29:100810デフォルトの名無しさん
2007/12/31(月) 15:33:56例えば、JTreeでCtrl+Fで検索のアクションをさせたい場合などです。
0811デフォルトの名無しさん
2007/12/31(月) 17:44:54適当なコンポーネントの ActionMap と InputMap に登録すればいいだろ。
0812デフォルトの名無しさん
2007/12/31(月) 18:07:490813デフォルトの名無しさん
2007/12/31(月) 18:15:440814>>810
2007/12/31(月) 18:36:09こんな簡単に実現できるなんてSwingは本当にすごいですね。
ありがとうございました。
0815デフォルトの名無しさん
2008/01/01(火) 02:16:39いつものネガティブキャンペーン乙
6.0だとEclipseのほうが軽いとかってありえんだろ
SWTはスレ違いだからそっちでやってくれ
0816デフォルトの名無しさん
2008/01/01(火) 02:28:130817デフォルトの名無しさん
2008/01/01(火) 08:17:290818デフォルトの名無しさん
2008/01/02(水) 02:11:590819デフォルトの名無しさん
2008/01/02(水) 02:17:51sysdeo の Tomcat プラグインと JSP, XML の構造化エディタ程度ならめちゃめちゃ軽い。
必要なものを選択できる人間だけが楽できる。
0820デフォルトの名無しさん
2008/01/02(水) 03:15:40インストールしてもプラグイン無効にすればいいんじゃね?
0821デフォルトの名無しさん
2008/01/02(水) 22:26:40CTRL+X -> CTRL+V で「切り取り -> 貼り付け」した時に、
貼り付け後に、余計なオブジェクトを削除するための後処理はexportDoneでいいんだろうか?
なぜか、CTRL+Xを押した瞬間に、exportDoneが実行されちゃうんだ。
exportDoneの説明には、
>データのエクスポート後に呼び出されます。このメソッドは、アクションが MOVE の場合に転送されたデータを削除します。
>MOVE はこの実装にサポートされるアクションでないため、このメソッドの実装では何も行われません。getSourceActions には MOVE が含まれません。
どっちやねんw
0822821
2008/01/02(水) 22:28:33importDoneの中で、貼り付け操作完了後に、
自分で削除操作を実行しようかなと思ってる。
0823821
2008/01/03(木) 00:34:28切り取りの標準的な操作は、切り取りと同時に削除だろうが!
エクスプローラの動作が特殊なんだ!
新年早々はずかしぃぃぃぃぃぃぃぃぃぃぃぃ!!!!!!!!!!
0824デフォルトの名無しさん
2008/01/03(木) 03:16:520825デフォルトの名無しさん
2008/01/05(土) 20:53:44終了はめっちゃ速いのだが。
0826デフォルトの名無しさん
2008/01/06(日) 23:23:28import java.awt.Frame;
これってバグなの?
0827デフォルトの名無しさん
2008/01/06(日) 23:33:55/ ―\ ┏┛
/ノ (●)\ ・
. | (●) ⌒)\
. | (__ノ ̄ |
\ /
\ _ノ
/´ `\
| |
| |
___ ━┓
/ ― \ ┏┛
/ (●) \ヽ ・
/ (⌒ (●) /
/  ̄ヽ__) /
. /´ ___/
| \
| |
0828デフォルトの名無しさん
2008/01/06(日) 23:49:08分かる人にはこれだけで分かる
0829デフォルトの名無しさん
2008/01/06(日) 23:53:32>>828
バグってたのは俺のほうだったw
*.class 削除したらコンパイル通ったよww
0830デフォルトの名無しさん
2008/01/07(月) 00:55:290831デフォルトの名無しさん
2008/01/07(月) 01:26:16http://pc11.2ch.net/test/read.cgi/tech/1197710566/646
だろう。
0832デフォルトの名無しさん
2008/01/07(月) 11:20:260833デフォルトの名無しさん
2008/01/07(月) 12:55:58よくみつけてきたな
0834デフォルトの名無しさん
2008/01/09(水) 03:57:380835デフォルトの名無しさん
2008/01/09(水) 17:58:19import 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>>835のプログラムなんだけど、単純にJListの中に300個のダミーデータを入れている。
カーソルキーで下にスクロールしていき、数十行進んだら、こんどは上に10行くらい
スクロール。
そしたらまたカーソルキーで下に移動。
すると、選択されてる項目が一瞬で画面の下までジャンプしてしまう。
このプログラムで、maxを20とか一定の値にした場合はジャンプしない。
JListの各セルの文字列長をランダムに変えたものを入れるとこの現象が起きる。
こういう仕様なのかもしれないけど、一瞬で選択位置が飛ぶと、
目線がそれてしまうので操作感がよくない。
maxを固定したときのように動作してほしい。
なんとかする方法ないかなぁ?
0837デフォルトの名無しさん
2008/01/09(水) 19:57:24解決法でないのだが、「ジャンプ」の条件について。
固定長かどうかではなく、Viewport の外に描画域があるかないか、ではないのか、と。
固定長で横スクロールが出るようにしたときは「ジャンプ」するし、
固定長でなくても、横スクロールが出ないときは「ジャンプ」しない。
JScrollPane で横スクロールを非表示にしても、見えない部分があるときは「ジャンプ」する。
0838デフォルトの名無しさん
2008/01/10(木) 16:05:46しかしちょっと設定をいじくったぐらいでは解決しそうない。
オーバーライドして一部の機能を殺すとか。
0839デフォルトの名無しさん
2008/01/10(木) 18:27:36http://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:440841デフォルトの名無しさん
2008/01/10(木) 19:27:170842デフォルトの名無しさん
2008/01/10(木) 21:33:46JListに512個要素突っ込むとバグるとか放置されてるし。
0843デフォルトの名無しさん
2008/01/10(木) 22:03:232000個いれてみたけど、なにかバグあんの?
0844デフォルトの名無しさん
2008/01/10(木) 22:52:30これで、すべてのアイテムが2個ずつになって1024個になるというステキなバグ
0845デフォルトの名無しさん
2008/01/10(木) 23:06:27末尾に並ぶ0の個数を求めるのをJavaでおながいします
0846デフォルトの名無しさん
2008/01/10(木) 23:10:360847デフォルトの名無しさん
2008/01/10(木) 23:16:39バグが出なかったんだけど
他になんか条件ないの?
0848デフォルトの名無しさん
2008/01/10(木) 23:17:55class 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:250850デフォルトの名無しさん
2008/01/10(木) 23:48:270851デフォルトの名無しさん
2008/01/10(木) 23:51:270852デフォルトの名無しさん
2008/01/11(金) 00:07:08i%25 とか i%125 も数えなきゃだめじゃね?
0853デフォルトの名無しさん
2008/01/11(金) 00:07:360854デフォルトの名無しさん
2008/01/11(金) 00:15:22つ ttp://deztec.jp/x/05/faireal/faireal-26-index.html
0855デフォルトの名無しさん
2008/01/11(金) 00:19:54実用に問題ないレベルならシンプル記述に徹するのも美学。
■ このスレッドは過去ログ倉庫に格納されています