Java標準低速GUI 6 AW ..
244:デフォルトの名無しさん
07/11/02 03:04:48
public class Practice extends JFrame {
JPanel labelsPanel;
public Practice (){
JButton appendLabelButton = new JButton ("ラベルを追加");
appendLabelButton.addActionListener (new ActionListener(){
public void actionPerformed(ActionEvent event){appendLabel();}});
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new FlowLayout());
buttonPanel.add(appendLabelButton);
labelsPanel = new JPanel();
labelsPanel.setLayout(new FlowLayout());
labelsPanel.setPreferredSize(new Dimension(400, 400));
add(buttonPanel, BorderLayout.NORTH);
add(labelsPanel, BorderLayout.CENTER);
}
void appendLabel(){
JLabel helloLabel = new JLabel ("Hello");
helloLabel.setBorder(BorderFactory.createLineBorder(Color.white, 1));
helloLabel.setHorizontalAlignment(JLabel.CENTER);
helloLabel.setPreferredSize(new Dimension(80,30));
labelsPanel.add(helloLabel);
labelsPanel.revalidate();
}
public static void main (String[]args){
SwingUtilities.invokeLater(new Runnable(){
public void run(){
Practice frame = new Practice ();
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
frame.pack();frame.setVisible(true);
}
});
}}
245:244
07/11/02 03:06:18
>>228
こんな感じでいいのか?
今度から宿題は宿題スレいってくれな?
246:デフォルトの名無しさん
07/11/02 04:17:09
>>244
超マジレスに笑ったw
でもこれがさらっと書けない職業プログラマが多いんだよな・・・
247:デフォルトの名無しさん
07/11/02 07:21:14
自演乙
248:デフォルトの名無しさん
07/11/02 07:37:07
口だけの奴が多い中 >>244 はまともだな
249:デフォルトの名無しさん
07/11/02 07:53:50
というか研究のGUIってなんだw
何を研究したらあんなソースになるのか知りたいw
250:デフォルトの名無しさん
07/11/02 10:19:13
>>228
実行して出てきたGUIにワロタ。センターに足す動けばいい的例。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Test extends JFrame {
public Test() {
JButton button = new JButton("Add Label");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
add(new JLabel("Hello, world!"));
getContentPane().validate();
}
});
add(button, BorderLayout.SOUTH);
setSize(100, 100);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new Test();
}
});
}
}
251:デフォルトの名無しさん
07/11/02 11:34:19
>>246
インナークラスとかAWTイベントディスパッチスレッドとかしらないで
GUI扱おうとしてぼろぼろになる例はよくみるね
特にスレッド周りがぼろぼろくさい
基本を勉強せずOJTという名の下に無理やり投入される場合そうなりやすい
デバッグ時には動いていてもたまに動かないとか厄介なバグいれこむのがうまい連中がね
252:デフォルトの名無しさん
07/11/03 12:38:14
>>200
証明書の有効期限切れてるよ
253:デフォルトの名無しさん
07/11/03 13:58:53
>>252
200で言及済
次回以降、安定版のリリースのときには署名タイムスタンプを使うことにするよ。
254:デフォルトの名無しさん
07/11/04 13:41:02
windowsのJFileChooserとかJOptionPaneでキャンセルが"取消し"って表記されるのがウザい…
windows標準みたいに"キャンセル"って書くにはどうすればいいだろ…
255:デフォルトの名無しさん
07/11/04 13:44:43
よくそんなん気づいたな
256:デフォルトの名無しさん
07/11/04 14:20:13
UIManager.put("FileChooser.cancelButtonText", "キャンセル");
UIManager.put("OptionPane.cancelButtonText", "キャンセル");
257:デフォルトの名無しさん
07/11/04 14:25:19
すごい・・・
いつも思うのですが、そのようなフィールドやプロパティの名前はどうやって調べているのでしょう。
ソースを見るしかないのでしょうか?
258:デフォルトの名無しさん
07/11/04 14:38:37
このへんとか
URLリンク(homepage1.nifty.com)
259:デフォルトの名無しさん
07/11/04 14:59:07
こういうの探してました!
ありがとうございます。
260:254
07/11/04 15:35:25
>>256
ありがとう。
これで見た目ほとんどwindowsっぽくなった。
FileChooserの複数選択をwindowsみたいにドラッグでびやーって範囲広げてその中全選択とかやってみたいけど、
さすがにこれはキツいな。
261:デフォルトの名無しさん
07/11/04 16:10:38
単純なファイル選択ダイアログならAWTのほうつかうといいよ
機能がほとんどないけど、それで足りるのならね
262:デフォルトの名無しさん
07/11/04 16:26:51
ファイルダイアログだけど、WindowsのAWTはなんか見た目がしょぼくない?
MacはAWTは普通だけど、Swingの方がしょぼ過ぎる。
Desktop Java Technology Today TS-3160
URLリンク(developers.sun.com)
ここを見ると、Future Platform FeaturesにNative FileChooserってあるから、そのうち改善されると思うけど。
263:デフォルトの名無しさん
07/11/04 22:26:28
1.
URL url = Hoge.class.getResource("../resources/book.gif");
2.
URL url = ClassLoader.getSystemClassLoader().getResource("../resources/book.gif");
このような2つのコードでリソースを取得しています。
1をHogeクラスで使用するとちゃんとURLが返ってきますが、Hogeのインスタンスであるインナークラスから呼び出すとnullが返ってきます。
しかし2のようにシステムクラスローダから呼び出すと、Hogeからの場合もHoge中のインナークラスからも呼び出すことができます。
そこで質問なのですが、
Q1.インナークラスからの相対パスは、そのインナークラスの属するクラスからの相対パスとは異なるのか(上でいうHogeのインスタンスのインナークラスとHogeクラスの関係)
Q2.上の実行を、eclipseで行うと結果が逆になる(2がうまくいかず、1がうまくいく)のですがその理由。
答えづらい質問ですみません。もしよろしければ教えてください。
264:デフォルトの名無しさん
07/11/04 23:44:44
相対やめたほうがいいでよ
どうせリソースは決まった場所におくでそ
265:デフォルトの名無しさん
07/11/04 23:51:10
確かにそうですよね。
なんだかそこらへん結構複雑そうですし・・
分りました。以後リソース読み込みは絶対指定にします。
ありがとうございました!!
266:デフォルトの名無しさん
07/11/08 01:13:35
今更だがV2Cすげー
267:デフォルトの名無しさん
07/11/09 12:10:05
JOptionPaneに、「次からこのメッセージを表示しない」とかチェックボックス付けたいんですけど、
何かいい方法ないですかねぇ
268:デフォルトの名無しさん
07/11/09 12:14:15
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.add(new JLabel("本文"));
panel.add(new JCheckBox("次からこのメッセージを表示しない"), BorderLayout.SOUTH);
JOptionPane.showMessageDialog(parent, panel);
269:デフォルトの名無しさん
07/11/09 12:35:18
>>268
おー、早いレスありがと〜。
270:デフォルトの名無しさん
07/11/09 23:36:58
いまからSwingアプリケーションつくるからなんかお題くれ
条件はネット接続しないこと
開発環境はJDK6u3、NetBeans6.0
271:デフォルトの名無しさん
07/11/09 23:44:52
>>270
Jazzの自動作曲。高品質の楽譜の表示と印刷。
272:270
07/11/09 23:45:27
>>271
勘弁してくれ
273:デフォルトの名無しさん
07/11/09 23:50:42
swing jazzじゃなくてもいいんだが…
swingはあくまでもguiのフレームワークに過ぎないから、
swingでアプリケーションを作るって言っても範囲が広すぎるんじゃないかな?
guiでアプリ作るけど何か無いかなって言うようなものだから、もう少し幅を狭めないと。
274:デフォルトの名無しさん
07/11/09 23:51:07
>>270
ドロー系お絵書きソフト、SVGでの読み書き可能なものを、OSSで。
275:デフォルトの名無しさん
07/11/09 23:51:49
>>271
少しジャンルは違うがヤマハの「初音みく」とか言うの良さそうじゃないか?
276:デフォルトの名無しさん
07/11/09 23:51:56
じゃあ懐かしのブラウザ HotJava を今の技術で作って
277:270
07/11/09 23:54:59
SVGとか仕様しらねー
HotJavaとか初めて聞いたし
Java暦1年半ですがなにか?
278:デフォルトの名無しさん
07/11/10 00:00:39
クリップボードアプリケーションとか。
・・・Swing関係ないかw
279:デフォルトの名無しさん
07/11/10 00:01:59
>>276
JEditorPaneで原型はすぐに作れるね。
>>277
URLリンク(java.sun.com)
>>275
もちろん既にみくみくしてるぜ。
付属のVSTiプラグインをJavaから使おうとかもしているけど中々時間が取れない。
280:デフォルトの名無しさん
07/11/10 00:02:19
>>274
Javaじゃないが、それの本命はinkspaceだろうな。
281:デフォルトの名無しさん
07/11/10 00:04:38
swingの勉強がてらに作るならお絵描きアプリくらいが適当なのかも
282:デフォルトの名無しさん
07/11/10 00:09:38
ローカルファイル閲覧専用とかはアレだし、ブラウザはネット接続って点で270の要求を満たしてないかも。
何かオンリーワンな機能をつけたドローイングかペインティングアプリケーションとかいいんじゃないか?
283:デフォルトの名無しさん
07/11/10 00:16:53
linerみたいな画像ビューア
俺が作ってるのもそれだけどw
284:デフォルトの名無しさん
07/11/10 01:37:42
作りたいの作ればとしか・・・
285:デフォルトの名無しさん
07/11/10 01:38:47
PDFの背景を初音ミクにかえるアプリつくるわ
286:デフォルトの名無しさん
07/11/10 02:27:50
>>285
Swingと関係なくないか?
あとPDFオープンするのに環境依存コード書くはめになるのもちょっと嫌かな
287:デフォルトの名無しさん
07/11/10 02:31:13
まあ、きもちいいネタだ。
288:デフォルトの名無しさん
07/11/10 03:03:23
はやくu4こねーかなぁ
JFileChooserおそくてかなわんわ
289:デフォルトの名無しさん
07/11/10 03:56:17
>>288
だな。死ぬほど遅い。いくつかlazyになるように書き直した。
290:デフォルトの名無しさん
07/11/10 10:20:21
u4 で直ることになってるの?
291:デフォルトの名無しさん
07/11/10 12:52:45
まだin progressの状態。
292:デフォルトの名無しさん
07/11/10 13:47:36
今まで、エディタとプロンプトでしこしこがんばってきたんだけど
金もできたので聞きたいとおもう。GUIつくるだけなら、JBuilderっていい?
無料版はつかったことあるけど、有料版は良いの?
293:デフォルトの名無しさん
07/11/10 13:59:21
今のJBuilderは昔とぜんぜん違うぞ
SwingベースからEclipseベースになった
少なくとも昔のJBuilderはこつをつかまないと
しらないうちにボーランドのコンポーネント使って汚染されて
他の環境で手軽にコンパイルできなくなるのが欠点だった
あとJBuilderはGUI作成においてNetBeansぬいたことはないよ
GUI使う、使わない以前に開発効率考えるとIDE使わないのは論外だと思う
294:デフォルトの名無しさん
07/11/10 14:00:46
>>292
NetBeansでいいんじゃね?
295:デフォルトの名無しさん
07/11/10 14:12:00
>>293-294 thx
NetBeansの方が上なんだ。じゃあそうするよ。
IDE使わないと論外か。。じゃあ、買ってみるよ。
ありがとう。
296:デフォルトの名無しさん
07/11/10 14:37:01
NetBeansは無料のIDEだぞ
297:デフォルトの名無しさん
07/11/10 15:19:43
最近はOSしか買わなくなったなぁ。
298:デフォルトの名無しさん
07/11/10 17:06:09
>>297
まだUbuntu使ってないの?
299:デフォルトの名無しさん
07/11/10 17:27:59
まだUbuntu使ってるの?
300:デフォルトの名無しさん
07/11/10 17:35:40
もうエディタと make でシコシコするのは時代遅れですかそうですか
でも V2C はIDE使ってないらしいね
301:デフォルトの名無しさん
07/11/10 18:02:48
時代遅れも何もそんな時代はあった事がない
302:デフォルトの名無しさん
07/11/10 18:21:57
ツール=IDEでポトペタできて楽ちん
ソフトウェア=IDEがGUI部を隠蔽しててわずらわしい
規模によりけりじゃないかなぁ。
303:デフォルトの名無しさん
07/11/10 18:32:02
IDEはぽとぺたというよりコーディングが楽になるほうがおおきいかと
まぁ、groupLayoutは自前でコードかくきにはならないけど
304:デフォルトの名無しさん
07/11/10 19:39:51
いきなりですまないのだが、JLabelやJButtonを縦書きにする方法ってある?
横長じゃなくて縦長のボタンやラベルを使いたいのだけど。
305:デフォルトの名無しさん
07/11/10 20:43:28
new JLabel("<html>縦<br>書<br>き<br>ラ<br>ベ<br>ル");
new JButton("<html>縦<br>書<br>き<br>ボ<br>タ<br>ン");
306:デフォルトの名無しさん
07/11/10 20:51:00
>>303
そうだよね。補完とかリファクタリングとか使用状況検索とか便利だよね。
GroupLayoutは最初は便利だと思ったけど、弄ってるといきなり位置が
すっ飛んだりして、いまいち使いづらい。よく出来てるとは思うんだけど。
エディタをもっと分かりやすくすれば良さそうだけど、どうすればいいのやら。
最近は、従来のものを組み合わせた方が思ったようにできていいなと思ってる。
>>304
その発想はなかったw
307:デフォルトの名無しさん
07/11/10 20:52:04
>>305
その発想もなかったw
308:デフォルトの名無しさん
07/11/12 14:58:06
90度回転させて縦にできるといいんだけどな
309:デフォルトの名無しさん
07/11/12 17:34:14
SwingのL&Fでかっこいいのないかなぁ。
国外のL&Fを今日一つためしてみたんだが、ダブルバイトが全滅。
URLリンク(regis.risp.pl)
まあ、外観に変化つけるときってフォントいじるから当然かな。
L&Fを自分でこさえるのは手間かかりすぎてそこまで時間とれないし、
MetalのOceanで負けとくのが今のとこ勝ちなのか。orz
310:デフォルトの名無しさん
07/11/12 17:46:49
ニンバスニンニン
311:デフォルトの名無しさん
07/11/12 21:05:59
>>310
おおっ!
なんかすごそうだけど、まださっぱりわからん。
Java SE 6 Update N Early Access Programてのを落としてくればいいのかな。
これそのうちJDKに正式採用されるのかしら?
312:デフォルトの名無しさん
07/11/12 21:11:42
Synthって流行ってないのかね?
313:デフォルトの名無しさん
07/11/12 21:18:14
あれは結局全部自分で定義しなきゃいかんからLFそのものを作りたい人向けとちがうの?
314:デフォルトの名無しさん
07/11/12 21:23:09
そうだけど、ホームページの壁紙やボタン、仕切り線みたいな感じで素材化されてないのかなと。
Javaアプリケーションが普及してないってことか。
315:デフォルトの名無しさん
07/11/12 21:39:08
画像ファイルはりつけたボタンになってしまってもいいの?
アイコンはともかくボタン全体が画像で作られているのはどうも。
融通効かないし。
ボタンが数個しかないアプリとか、ゲームとかならそういうのも良いかと思うけど。
316:デフォルトの名無しさん
07/11/12 22:45:12
>>308
作ってみた
public class VerticalJButton extends JComponent{
private JButton button=new JButton(){
public void repaint(long tm,int x,int y,int width,int height){
VerticalJButton.this.repaint(tm,y,1-x,height,width);}};
public VerticalJButton(String text){
add(button);button.setText(text);
enableEvents(AWTEvent.MOUSE_EVENT_MASK|AWTEvent.MOUSE_MOTION_EVENT_MASK);}
public Dimension getPreferredSize(){
Dimension d=button.getPreferredSize();
return new Dimension(d.height,d.width);}
public void doLayout(){
button.setBounds(0,1-getWidth(),getHeight(),getWidth());}
protected void paintChildren(Graphics g){
Graphics2D g2=(Graphics2D) g.create();
g2.rotate(Math.PI/2);g2.translate(button.getX(),button.getY());
button.paint(g2);g2.dispose();}
protected void processMouseEvent(MouseEvent e){
e=new MouseEvent(button,e.getID(),e.getWhen(),e.getModifiers(),e.getY()-button.getX(),-e.getX()-button.getY(),e.getClickCount(),e.isPopupTrigger(),e.getButton());
button.dispatchEvent(e);}
protected void processMouseMotionEvent(MouseEvent e){
e=new MouseEvent(button,e.getID(),e.getWhen(),e.getModifiers(),e.getY()-button.getX(),-e.getX()-button.getY(),e.getClickCount(),e.isPopupTrigger(),e.getButton());
button.dispatchEvent(e);}}
317:デフォルトの名無しさん
07/11/12 23:11:37
NetBeans5.5.1使ってるんですが、GUIビルダーで質問です
JFrameフォームでフレームをつくり、
別途JPanelフォームでパネルを複数つくります。
アプリケーション起動後に、パネルを好きなタイミングで、フレームにadd()したいのですが、
SwingLayoutの影響でうまくいきません。
なにか特別なやり方があるのでしょうか?
それともGUIビルダーでは不可能なのでしょうか。
318:デフォルトの名無しさん
07/11/12 23:46:28
>>316
g2.dispose();
なんだけど、これはpaintComponent()をオーバーライドしたときとか、
Graphicsオブジェクトを使ったあとはかならず実行したほうが良いの?
今までそうしてこなかったのだけど、APIリファレンスみると、
したほうが良いような感じなんだけど、いまいちわかりにくい日本語。
319:デフォルトの名無しさん
07/11/12 23:54:29
少なくともpaintComponentでは不要じゃないかい?
OverrideしなくてもpaintComponentは呼ばれるだろうし
320:デフォルトの名無しさん
07/11/12 23:56:01
>>318
Graphics#disposeでグラフィックコンテクストを開放しないといけないのは自分でそれを確保したとき。
他人が確保したものを許可無く勝手に開放するのは行儀が悪い行い。
paintComponent()をオーバーライドしたときに開放するとかはどこに書いてあったの?
321:デフォルトの名無しさん
07/11/13 00:08:10
>>320
dispose
public abstract void dispose()このグラフィックスコンテキストを破棄して、使用中のシステムリソースがあればそれを解放します。
Graphics オブジェクトを dispose の呼び出し後に使用することはできません。
Java プログラムが実行されていると、短時間フレーム内で多数の Graphics オブジェクトを作成できます。
ガベージコレクタのファイナライズプロセスも同じシステムリソースを破棄しますが、関連するリソースを手動で解放することが推奨されます。
つまり、長期間に渡って完了まで実行されない可能性があるファイナライズプロセスに依存するよりも、
このメソッドを呼び出してリソースを手動で解放してください。
コンポーネントの paint メソッドと update メソッドに引数として提供される Graphics オブジェクトは、
こうしたメソッドが復帰したときにシステムによって自動的に解放されます。
効率性を確保するには、Graphics オブジェクトがコンポーネントまたはほかの Graphics オブジェクトから直接作成された場合だけ、
そのオブジェクトを使って終了したときに dispose を呼び出すようにプログラミングしなければなりません。
-----------------------------------
ということらしいんだが、dispose()不要のような必要なような、ケースバイケースのような
説明に読めたのよ。スマソ。
322:316
07/11/13 00:12:45
>>318
その g2 は g の単なるキャストじゃなくて、 g.create() で生成したものだから。
放っておいても害はないけど、解放するべきなんじゃない?
323:デフォルトの名無しさん
07/11/13 00:15:10
>コンポーネントの paint メソッドと update メソッドに引数として提供される Graphics オブジェクトは、
>こうしたメソッドが復帰したときにシステムによって自動的に解放されます。
Graphics g = createGraphics();
//--->呼び出し
paintComponent(g);
//<---復帰
g.dispose();
こういうことでしょ。きっちり書いてるじゃん。
324:デフォルトの名無しさん
07/11/13 00:17:35
>>322
いやだからさ、おかしいなんていってないよ。
g.dispose()と書かれたソースを今までみなかったのだけど、
開放しといたほうがいいのかななどと思ったの。
325:デフォルトの名無しさん
07/11/13 00:18:32
これってどういう意味?
> Java プログラムが実行されていると、短時間フレーム内で多数の Graphics オブジェクトを作成できます。
326:デフォルトの名無しさん
07/11/13 00:22:01
>>323
paintComponentについては暗黙の了解?
説明としては抜けてる。ソース嫁といわれりゃあっそう。
327:デフォルトの名無しさん
07/11/13 00:34:39
>>326
paintComponentについてはJComponentのドキュメントを読めば理解できるかと。
328:デフォルトの名無しさん
07/11/13 00:36:15
>>321
それ勘違いしてるぞ
ファイナライザとか関係ない
329:デフォルトの名無しさん
07/11/13 00:42:26
何でよ
330:デフォルトの名無しさん
07/11/13 00:43:16
なんでφならいざが?
331:デフォルトの名無しさん
07/11/13 01:08:35
>>310-311
Nimbusはイメージを使わずに、すべてJava2Dで書かれてるから、解像度に依存しないのがいいよね。
332:デフォルトの名無しさん
07/11/13 01:13:28
>>316
動作確認してみた。いいね!
やり方もエレガントだと思う。
アイコンもついてたら完璧かも。
333:デフォルトの名無しさん
07/11/13 01:25:17
>>331
うん。
作ってるアプリが終盤で、外観の体裁ととのえてるとこなんだけど、
今無理してL&Fいじくるより、Nimbusが標準になるまで待ったほうがトクだろうなぁ。
L&Fを自分で作ったりカスタマイズしてももすぐに時代遅れになるしね。
Metalも出てきた当時はけっこうクールに見えたし。
L&Fは服きせかえるみたいに使い捨てていきたい。
334:デフォルトの名無しさん
07/11/13 01:46:39
disposeは後始末
自前でgraphicsを生成した場合必須
ファイナライズの話はFileのIOをcloseしないというのと同じ話
そしてかってに呼び出し側でcloseしたらあかんだろというのと同じ
335:デフォルトの名無しさん
07/11/13 20:01:22
>>325
> Java プログラムが実行されていると、短時間フレーム内で多数の Graphics オブジェクトを作成できます。
いっぱい作成できると、なんとなく、うれしいジャン?
とりあえず、「多数の Graphics オブジェクトを作成する可能性があります」の誤訳に一票
336:デフォルトの名無しさん
07/11/13 20:14:10
久しぶりに覗いたぜ。
invokeLaterはinvokeLater間違えてAWTのSystem Queueに送ったことあるorz
MIDPのGraphicsにdisposeがなくてどうやってメモリ空けようか悩んだことがあるorz
Nimbusのマルチバイト化けは直ったらしいがあれ重くないか?スケーラブルなLaF目指してるんだろうけど・・・。
ただでさえ、未だにjavaは重いという迷信が信じられてるからなぁ。
337:デフォルトの名無しさん
07/11/13 20:18:53
迷信というかJFileChooserは今でもひどくない?
ファイル多いとファイルリストの取得とは別の何かで重くなってる印象が・・
338:デフォルトの名無しさん
07/11/13 22:27:10
>>337
JavaSE6u2からすごいことになった
どうすればあそこまで悪化できるのかと
339:デフォルトの名無しさん
07/11/13 22:52:07
>>338
今はソース見れるんだから自分で調べられるよ
340:デフォルトの名無しさん
07/11/13 23:51:12
今OpenJDKで公開されてるソースと今公式ビルドに使われてるJDKのソースは違うぞ。
jdk6がOpenJDKベースになるのはまだ先。
341:デフォルトの名無しさん
07/11/14 00:16:14
>>339
そういう意味じゃないだろ
342:デフォルトの名無しさん
07/11/14 03:38:43
>>337
今までひどすぎるとまでは感じなかったんだが、そんなにたくさんのファイルリストを
出すという局面に遭遇してないだけだったりする。
100個くらいリストが出ててもなんともないと思うんだが、いくつくらいだとひどいことになるの?
343:デフォルトの名無しさん
07/11/14 07:17:29
なんでファイル列挙系はバグが入りやすいんだろうな。
なんか共通したミスでもあるんだろうか?
344:デフォルトの名無しさん
07/11/14 07:27:12
ネットで調べると、でかい圧縮ファイルがあるとおかしくなるらしいね
345:デフォルトの名無しさん
07/11/14 09:30:48
>>336
7年後サクサク動くニンバスみて、軽いけどもう古いよなこのLaFとかいってるような気がすれ
346:デフォルトの名無しさん
07/11/14 09:32:31
ニンバスかっけぇんだけどさ、どうもスクロールバーが馴染めない…
347:デフォルトの名無しさん
07/11/14 09:47:09
文字はみんな□になってるけどSwingSet2のデモみるかぎり、遅いとは感じないな。Nimbus。
そんでこれいつからリリースされるのかな。
348:デフォルトの名無しさん
07/11/14 12:36:16
>>342
u2以降は1個の表示でもすごい遅い
u1まではさくさく
まぁ遅いといわれたり直ったりエンバグ繰り返してるのがJFileChooserだから・・・
349:デフォルトの名無しさん
07/11/14 16:43:44
JFileChooserはネイティブ頼りなんだっけ?エンバグの発生率は仕方ないと思う。
350:デフォルトの名無しさん
07/11/14 17:18:38
デスクトップのzipをどけると改善するみたい。開発で頻繁にテストする人はzipを
一時的にどけておくといいかも。
351:デフォルトの名無しさん
07/11/14 19:29:57
つーことは、JFileChooserはファイルの中身を調べるようなことまでやってるのかな。
352:デフォルトの名無しさん
07/11/14 19:34:34
Windowsのエクスプローラとか、Javaのクラスパス解決処理みたいな
どっかのAPIを流用したことによる副作用とかいうオチだったらちょっと笑える
353:デフォルトの名無しさん
07/11/14 19:45:28
DirectXでIMEの例があるから笑うに笑えない・・・。
354:デフォルトの名無しさん
07/11/15 16:57:27
>>351
実行形式の場合、そのファイルのリソースとしてアイコンが格納されているんだから、
API経由か直接かは知らんけど、当然ファイルの中身は見てるはず。
で、PEとかELFとか、実行形式のフォーマットを決め打ちできない分、
アイコン読み取りが複雑になってるんじゃなかろうか。
355:デフォルトの名無しさん
07/11/15 17:06:04
JFileChooserのアイコンってFileSystemView#getSystemIconでしょ
これが遅いってことか?
356:デフォルトの名無しさん
07/11/15 21:18:41
>>354
つまり世の中のGUIは全てファイル選択ダイアログは遅くて使い物にならない、と
それにu1まではそんなに遅くなかった
1.4.2はいくつかのバージョンが遅いけど
357:デフォルトの名無しさん
07/11/15 22:11:41
URLリンク(sourcepost.sytes.net)
質問です
イベントでコンポーネントを追加したいんですが、追加と同時に表示させるにはどうすればいいんでしょうか?
repaint()ではダメみたいです
358:デフォルトの名無しさん
07/11/15 22:19:39
>>357
jPanel1.revalidate()
359:デフォルトの名無しさん
07/11/16 00:00:48
ああ、Swingか・・・。
360:デフォルトの名無しさん
07/11/16 00:51:25
>>357
HelloボタンをaddしたあとでMyFrame#pack()を呼ぶ
361:デフォルトの名無しさん
07/11/16 01:08:45
追加はされてるけど、flowレイアウトで1つしか表示できないサイズだから消えてるようにみえるだけ
>>358で正しいよ
362:デフォルトの名無しさん
07/11/16 01:24:19
revalidateだけでは>>357のソースでは「追加と同時に表示させる」ことにはならないから>>360で正しいよ。
363:デフォルトの名無しさん
07/11/16 01:27:07
>>362
おまえはバカか
それはレイアウトマネージャの問題であってrevalidate()で十分尽くされているんだから358が正しいんだよ
364:357
07/11/16 01:31:12
レス感謝です
>>361
revalidate()って意味ありますか?
revalidate()せずに、pack()だけで思い通りに表示されました
365:デフォルトの名無しさん
07/11/16 01:39:53
>>364
いろいろ作っているうちに分かるよ。pack()でレイアウト変更後の再描画なんてよっぽど
異常なUIでもない限りやらないよ。pack()の方でフレームを広げてボタン押してみ。
366:357
07/11/16 02:01:39
たとえば、ウインドウを最大化してるにも関わらずpack()でウインドウが小さくなるのはおかしいということでしょうか?
367:デフォルトの名無しさん
07/11/16 02:33:01
それでいいならいいけどさ。
368:デフォルトの名無しさん
07/11/16 03:04:30
JFileChooser パフォーマンス問題
URLリンク(blogs.sun.com)
369:デフォルトの名無しさん
07/11/16 05:59:08
jdk6uN b07では直ってるらしいよJFileChooser問題
URLリンク(download.java.net)
370:デフォルトの名無しさん
07/11/16 06:06:06
>>369
Bug ID: 6578753
Votes 65
Synopsis JFileChooser in 6u2 slow on Windows
Category java:classes_swing
Reported Against
Release Fixed
State In progress, bug
Related Bugs 6491795 , 5050516
Submit Date 10-JUL-2007
371:デフォルトの名無しさん
07/11/16 09:37:29
アプリの二重起動についてなんだが、二重起動を確認したらそこでシャットダウン
するのはよくある方法だと思うんだけど、たとえばNetBeansはもっと賢いやり方
をしている。
NetBeansが動いている状態で、それが最小化した状態でタスクバーにあるとする。
その状態でNetBeansのアイコンをクリックするなりして二重に起動しようとすると、
二重起動にはならずに、タスクバーにあるものが画面に現れる。
これってどうやったらできるのかな・・・。
372:デフォルトの名無しさん
07/11/16 10:52:18
>>371
Javaにはミューテックスなかったっけ?
373:デフォルトの名無しさん
07/11/16 11:34:11
排他制御用のオブジェクトは同一VM上の同期に使うやつで
プロセス間は別の仕組み考えないとダメ。
374:デフォルトの名無しさん
07/11/16 11:36:21
>>371
起動用のアプリを別に分ける。
というか、そのためにexeを用意しているようなもん。
375:デフォルトの名無しさん
07/11/16 11:55:44
んじゃあ手動でミューテックス作っちゃうとか。
テキストファイルで現在起動中のプログラム・インスタンス数を数えておいて、
起動時に中身が1なら起動しない。
もし>>371のいうような挙動をしたいなら、プログラムでミューテックスファイルを監視しておいて、
ファイルの中身が2になった瞬間タスクバーからプログラムを出せばいい。
ここまで書いて思ったんだが、Swingでタスクバーから出すとかそういうそうさって出来たっけ?
376:デフォルトの名無しさん
07/11/16 12:02:05
自プロセスのウィンドウを最小化解除するだけなら Frame#setState でできる
でもそのファイルを監視ってのはどうするんだ
タイマで1秒ごとにタイムスタンプを確認するとかか
377:デフォルトの名無しさん
07/11/16 12:09:54
>>376
ファイルやフォルダで変更があったときにイベント起こすような機能なかった?
378:デフォルトの名無しさん
07/11/16 12:13:16
>>377
NIO2で追加予定。
標準APIでなくてもいいなら、JConfigとかには付いてたと思うし
>>376のやり方で自力で実装してる人も多いんじゃないかと。
379:371
07/11/16 19:25:50
一眠りして考えたんだが、
アプリが独自にポート開いて監視しておく。
別プロセスでアプリが起動したら、そのポートを叩く。
応答が返ってきたら、そのプロセスはシャットダウン。
応答した側のプロセスはFrame#setState
でいけそうな気がするんだが、けっこうめんどくさいね。
もっと簡単にできないもんだろか。
380:デフォルトの名無しさん
07/11/16 19:36:00
Windowsファイアウォールとかにブロックされそうだが
381:デフォルトの名無しさん
07/11/16 19:48:42
ファイルサーバとかでもたまに思うんだけど、
OSはロックサーバが標準で付いててほしいんだよな
CVSのロックサービスだってそのためについてるんでしょ。
AbstractFactoryパターンでインタフェース書いて、Winだけ実装作ろうかな
382:デフォルトの名無しさん
07/11/16 20:36:05
Preferencesを使うってのはどうかな。
383:デフォルトの名無しさん
07/11/16 20:42:19
URLリンク(sdc.sun.co.jp)
# 複数の VM による同時アクセスを、この API でより強力にサポートしないのはなぜですか。
同様に、複数の設定の更新を結合して単一トランザクションに組み込み、
すべて更新するかまったく更新しないセマンティクスを適用しないのはなぜですか。
この API は、持続性のある基本的なデータ記憶域として使用し、データベースの代わりとしては使用しません。
この API は、標準の設定/構成リポジトリ上に実装できるようにすることが重要です。
これらのリポジトリのほとんどでは、データベースのような機能は提供していません。
これらのリポジトリは、この API の設計目的を満たしています。
384:デフォルトの名無しさん
07/11/16 22:05:37
>>380
ファイアウォールの設定はユーザの責任じゃないかい。
385:デフォルトの名無しさん
07/11/16 22:08:21
なんにせよファイルにフラグを記録するやり方だと、アプリが異常終了して、
フラグの書き換えができなかった場合、次に起動しようとすると困ったことに
なりやすい。
386:デフォルトの名無しさん
07/11/16 22:10:30
プラットフォームネイティブのMutexやセマフォを使うか、
オンメモリデータベースを使うってのがいいのかも。
387:デフォルトの名無しさん
07/11/17 01:29:41
ファイルチューザ同等の機能を持つファイルチューザを独自に作る場合、
こうやらねーとすっげー遅くなるぜ?っていうTips教えてくれ
388:デフォルトの名無しさん
07/11/17 02:04:22
>>387
普通に作れば遅くならんだろ…
JFileChooserはネイティヴLaFに近づけるために
いろいろ細工してるのが裏目に出てるだけだと思うぞ
389:デフォルトの名無しさん
07/11/17 02:25:54
URLリンク(touch.moe.hm)
こんな上下2ペイン構成のGUIアプリケーションを作りたいと思ってます
上ペインのJButtonをクリックすれば、下ペインのJPanelが切り替わるように作ればいいと思うんですが
普通どのようにやりますか?
■作ったサンプルではこのようにしてます
初期化で空のpanel1をつくり、その上にpanel2をadd()する
別のボタンが押されたら、panel1に載っているpanel2をremove()、panel3をadd()、validate()
ちょっとわかりづらいかもしれませんが、もっといいやり方ありそうでしょうか
390:デフォルトの名無しさん
07/11/17 02:29:27
っ CardLayout
391:デフォルトの名無しさん
07/11/17 02:39:43
TabbedPaneで、タブにアイコン貼付ければいいような気がした。
392:デフォルトの名無しさん
07/11/17 04:22:23
>>390
使ったことないけどカードレイアウトに同意
393:デフォルトの名無しさん
07/11/17 05:09:46
>>388
Fileが遅くなってるから、普通に作ったら遅くなるよ。
しったか乙。
394:デフォルトの名無しさん
07/11/17 05:12:23
JFileChooserの速いバージョンを作りたければ、FastFileを使うといいよ
395:371
07/11/17 10:35:15
>>379のやり方実装してみたけど、うまくいくみたい。
396:デフォルトの名無しさん
07/11/17 10:40:08
>>395
やってみた事ないけど、
途中でトラぶってコネクションクローズの前に死んだ場合は二重起動しちゃうの?
397:デフォルトの名無しさん
07/11/17 10:44:33
>>396
ローカルホストの接続でとらぶるって、どんなときにとらぶるかな。
そこらへんの想定外のことがあるかどうかは気にはなってんだけど。
398:デフォルトの名無しさん
07/11/17 10:54:59
>>397
他のアプリがそのポートを使っていて重複する場合
ファイアーウォールが入っていてはじかれる場合
今どきめずらしいけどLANがついてないマシンだとどうなるっけ?
399:デフォルトの名無しさん
07/11/17 15:21:39
> 今どきめずらしいけどLANがついてないマシンだとどうなるっけ?
頭大丈夫か?
400:デフォルトの名無しさん
07/11/17 17:21:11
スタンドアロンのPCがあるからネットワークサービス止めて試してみようか?
たぶん、接続段階で例外投げられたはずだけど。
jarでクレw
クローズ処理をfinalyでやってるなら途中でシャットダウン入るとfinalyブロック中断されるからそれでもアウトだね。
401:デフォルトの名無しさん
07/11/17 17:46:33
イーサネットがあってもなくてもlocalhost(127.0.0.1)にアクセスできるだろ…
# TCP/IPを外してあればできないのか?
402:デフォルトの名無しさん
07/11/17 17:49:59
ネットワーク完全にとめるとループバックももちろん完全にだめ
Win95以前はまずループバックアダプタいれての開発がデフォだったな
403:デフォルトの名無しさん
07/11/17 17:56:04
そういうアダプタ用MACアドレスもあるのかな?別に無くても困らないけど。
404:デフォルトの名無しさん
07/11/17 18:15:28
>>402
そもそも Win95 ってデフォルトのインストール
だと TCP/IP が組込まれてないようなOSだろ…
405:デフォルトの名無しさん
07/11/17 18:27:56
独自のネットワークサポートするから良いんです。
ゲイツ「インターネットなんて一般人にはやんねーよw」
時代の産物だからな。時代の流れか。
406:デフォルトの名無しさん
07/11/17 20:13:33
JDK1.5がそもそもWin95だともう動かんのじゃね?
とくにGUIまわり。
407:デフォルトの名無しさん
07/11/17 20:40:37
URLリンク(java.sun.com)
Win95はサポート外だね
408:デフォルトの名無しさん
07/11/17 20:43:39
サポートの話なんて誰もしてないだろと
409:デフォルトの名無しさん
07/11/17 21:24:54
設定でTCP/IP無効にしたらダメなんじゃねぇの?
410:デフォルトの名無しさん
07/11/17 21:57:44
アプリの性質にもよるわな。
DBやネットに接続するようなアプリなら、イーサカードが使えない環境に
インストールされることなんて無いしさ。
411:デフォルトの名無しさん
07/11/17 22:11:04
「カードがない環境ではlocalhostもアクセスできない」
というのが当然みたいにいってるが、だれか試したことがあるのか?
その理屈だとNICがない環境ではローカルでのサービスは動かんのだが。
412:デフォルトの名無しさん
07/11/17 22:53:06
>>411
NICないと実際IPサービスはうごかんよ
ループバックいれてれば動くが
という常識的な流れだろ
413:デフォルトの名無しさん
07/11/17 22:57:37
>>407
あんまり関係ないけど・・・、SunはMacのJVMはやってないんだね。
Macはどこがやってるんだろ。Macユーザじゃないからうといんだわ。
Winが80%をしめてるといわれるわりに、周囲にはMac使いが多くて、
じゃあその人たちにも使えるようにとJavaで作り始めたんだが、
肝心のSunはサポートしてないんだね。
414:デフォルトの名無しさん
07/11/17 22:59:52
まあいいじゃん。今時カード入ってないマシン使ってる人なんて
ごくごく少数。クレームついても仕様ですで押し通せば。
415:デフォルトの名無しさん
07/11/17 23:02:33
>>413
Macはアップルがやってる
6がまだ出てこない…
416:デフォルトの名無しさん
07/11/17 23:11:12
>>415
そうなんだ。ありがーと。
6をはやくだしてほしいわ。5で動くようにと思ってたんだけど、
6を知るとついつい6の機能を使ってしまったような・・・
417:デフォルトの名無しさん
07/11/17 23:43:28
NetBeans6 + JavaSE6 + glassfish2の組み合わせの軽さは異常
418:デフォルトの名無しさん
07/11/18 00:40:44
>>416
ついこの前にそれではまった…
JFileChooser で FileNameExtensionFilter 使ってて
Mac OS X で動かねーって言われるまで気が付かなかった
# Apple は 6 を出す気があるんだろうか…?
419:デフォルトの名無しさん
07/11/18 00:44:26
Mac なんて捨てていいよ
420:デフォルトの名無しさん
07/11/18 01:03:20
Macの6はDPのままだにぃ。
Cocoa-Javaバインディングも放置になったし、やる気なさそう。
421:デフォルトの名無しさん
07/11/18 01:19:05
OpenSource版ががんばってくれるんじゃね?
422:デフォルトの名無しさん
07/11/18 01:42:24
多少のタイムラグはあってもMacでも6は出るだろうし、
7でも8でも出てくると思うけどね。
Javaはいつも明日の言語なんだよな。w
明日はごちそう、でも今日は無い。w
423:デフォルトの名無しさん
07/11/18 01:44:33
AppleはJavaに対してなかなか気合いが入ってると思うけどなぁ。
ただ、やろうとしていることに作業が追い付いてないだけで・・・。
424:デフォルトの名無しさん
07/11/18 02:05:50
前は気合い入ってたんだけど、新しめの機能のフレームワークに対応する
Javaバインディングを出すのはもうやめてる。
LeopardではBridgeSupportでなんとかできるのかもしれないけど。
425:デフォルトの名無しさん
07/11/18 02:09:41
てかMacOS Xてunix互換なんだろ?CPUもIntel系にしたのに既存のコード使えないのか?
426:デフォルトの名無しさん
07/11/18 02:18:14
>>423
時間が経つごとに気合がなくなっていってるっぽいよなぁ
>>425
CPUがインテルでもベースがUNIXでも肝心なGUIライブラリは別物なので結局移植作業は必要
427:デフォルトの名無しさん
07/11/18 02:20:29
プロセスとかファイルシステムとかあたりはunix互換でも、
グラフィックとかサウンドとかあたりは全然別物だし・・・
428:デフォルトの名無しさん
07/11/18 02:38:18
追加機能が増えたりバージョンあがるごとに仕様かわったりで
追従していくの大変すぎるんじゃないのかなぁ。
JVMさえ開発すればどのマシンでも動きますなんてただの宣伝文句で、
それ作ろうとしたらすげー大変だと思うよ。
429:デフォルトの名無しさん
07/11/18 13:28:02
技術者の量・質を考えたらAppleがJavaを管理するのは無理そうだな
できあいの既存のものを改造していくのには慣れていても、
継続的にある規格に互換させていく作業ってのはやってこなかっただろうし。
430:デフォルトの名無しさん
07/11/18 14:37:15
>>428
それが基本ソフトとよばれるものなんだけどな
互換性をいかに維持するか
新しいOSごとにアプリ全部作り直しなんてやってられん
このスレ的にはApple捨ててよで結論でてるだろ
5.0のときの対応も遅かった
431:デフォルトの名無しさん
07/11/18 14:41:36
マック使う人はアポー謹製ソフトさえありゃ満足なんだから放置しとけばいい
432:デフォルトの名無しさん
07/11/18 16:17:40
デザイナはAdobe製ソフトも入ってないと困るよ
433:デフォルトの名無しさん
07/11/18 20:54:18
mac osxはカーネルより上のレイヤーはXですら自前だからなぁ。
GUIが自前とか言う次元超えてるよ。
434:デフォルトの名無しさん
07/11/19 00:29:34
>>431
V2Cが無ければとても困ると思うの
435:デフォルトの名無しさん
07/11/19 03:17:02
なんとかとハサミは使いようというじゃない。w
436:デフォルトの名無しさん
07/11/19 10:31:31
せっかちな人にはJavaは向かないね
437:デフォルトの名無しさん
07/11/19 13:22:30
マック信者をJavaで逆洗脳してみたいwww
438:デフォルトの名無しさん
07/11/19 13:46:40
Mac信者かつJava信者ですが何か?
でもCocoa-Javaはいらないと思ってる。
そういうのはRubyとかでいいんじゃないかな。
Javaはクロスプラットホームが基本です。
クロスプラットホームだけど、Macでは見た目を良くする。
URLリンク(developer.apple.com)
その他のプラットホームでは、Nimbusに期待してる。
URLリンク(nimbus.dev.java.net)
どっちも解像度に依存しないし、スモールサイズなんかは共通して使える。
439:デフォルトの名無しさん
07/11/19 14:33:56
6での大幅な改善点がデスクトップアプリの強化(大量にバグもちだが)と
大幅な高速化(1.3.1から1.4.0より大きな変化)だから
もうすぐ1年たつというのにMacに6がきてないのは苦しい
440:デフォルトの名無しさん
07/11/19 15:16:27
アップルの独自実装だからmac版が早くなるか分からないんじゃない?
糞実装を何とかしてくれればそれで良いと思うが。
441:デフォルトの名無しさん
07/11/19 19:21:46
まあぶっちゃけV2Cが1.4.2で動く事からも
Macが6をサポートしなくても当分困らないんだよな
5.0が動くだけでも十分じゃね
442:デフォルトの名無しさん
07/11/19 20:59:51
そんな後ろ向きな姿勢じゃいかんよ
443:デフォルトの名無しさん
07/11/21 21:07:37
JTreeで幹や葉をクリックしたり、矢印キーで移動させたときに
選択している幹や葉のファイルを別のJListに表示したい。
この場合、イベントはvalueChangedでいいんでしょうか?
それとなにか注意点とかありますでしょうか
444:デフォルトの名無しさん
07/11/22 00:03:52
データ転送じゃね?
445:デフォルトの名無しさん
07/11/22 12:44:57
>>443
マニュアル読んで判断したならいいでしょ
あとvalueChangedってメソッド名だけ出しても普通の人はわからんと思うよ
446:デフォルトの名無しさん
07/11/22 15:08:37
下手にJTreeのvalueChangedいじったらパフォーマンス落ちね?
447:デフォルトの名無しさん
07/11/22 15:31:17
上手にいじれば良い
448:デフォルトの名無しさん
07/11/22 19:38:15
それが出来るならこんなところで確認してないと思うが?
まあ、ドキュメント読めば分かることだが。
449:デフォルトの名無しさん
07/11/22 23:58:16
JFrameの下部にStatusBarを取り付けようとしています。
単純にBorderLayout.SOUTHで問題はないのですが、BorderLayout.SOUTHに当たる領域は後々別に使用するかもしれないので、完全に別領域として下部に取り付けたいのです。
イメージ的にはsetJMenuBar()と同じような感じです。
どのような実装がよいでしょうか?
450:デフォルトの名無しさん
07/11/23 00:10:09
JPanel に BorderLayout をセットして JFrame の CENTER に置く
JFrame の SOUTH をステータスバーのために使って、
JPanel の SOUTH を後々別に使用するときのために取っておく
451:デフォルトの名無しさん
07/11/23 00:13:45
そのようにした場合、ステータスバーをセットするJFrameのCENTERにコンポーネントを加えたいときにわざわざそのJPanelを取得後貼り付けないといけないので避けたいです。
他にはないでしょうか?
452:デフォルトの名無しさん
07/11/23 00:25:57
>JFrameのCENTERにコンポーネントを加えたいときにわざわざそのJPanelを取得
いや、最初から、JFrame じゃなくて JPanel の CENTER に入れればいいじゃん。
わざわざ取得っていうか、JPanel 作ったときにそれをフィールドに持っとけばいいだけでそ?
本当にどうしても JMenuBar のように振舞わせたくて他に方法がないというなら、出来ることは出来るけどちょっと面倒い。
JRootPane の中の layeredPane と glassPane と、layeredPane の中の contentPane と JMenuBar (と自分の statusBar) をレイアウトするレイアウトマネージャを書いて、JRootPane のレイアウトマネージャをそれで置き換える。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4901日前に更新/252 KB
担当:undef