2016-08-16 6 views
1

JProgressbarとJButtonを内部に持つJFrameを作成しようとしています。ユーザーは、そのプロセスがどのくらい離れているかを確認し、プロセスを中止できます。コンポーネントサイズはJFrameで調整できません

私が遭遇するような唯一の問題は、プログレスバーとボタンのコンポーネントが常にJFrameのサイズに調整され、サイズが設定されていないことです。画像1を参照してください。 Picture 1

目的はこの例のようにすることです。​​

誰か提案がありますか? 以下のコードをご覧ください。

JFrame f = new JFrame("Retrieve Datalog"); 
JButton b = new JButton("Abort"); 

JProgressBar progressBar = new JProgressBar(); 

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
f.setIconImage(ICONBAR.getImage()); 
f.setResizable(false); 
f.setSize(300, 100);  
f.setLocationRelativeTo(getFrame());  
b.setSize(50, 10);    

progressBar.setSize(f.getWidth() - 100, f.getHeight() - 50);  
progressBar.setValue(50); 
progressBar.setStringPainted(true); 

f.add(progressBar, BorderLayout.NORTH); 
f.add(b, BorderLayout.CENTER);  
f.setVisible(true); 

PS:私は、NetBeans 8.1 IDE、

+0

はフレームレイアウトをゼロ化を検討コードおよびスナップショットがあります。 f.setLayout(null);一番の解決策ではありませんが、やはりうまくいくはずです。 – Damiano

+0

コンポーネントがサイズ変更可能になりました。左上隅についているように見えます。 Tadesseが正しい解決策を投稿しました。 – Zwetje

答えて

0

JDK v8u91を使用してい 私はいくつかのコードを試してみてください。グリッドバッグレイアウトを使用できます。 Snapshot

import java.awt.*; 
 
import javax.swing.*; 
 

 
/** 
 
* JFrame with a progress bar and button. With the size of their own. 
 
* 
 
* @author Tadesse 
 
*/ 
 
public class Test extends JFrame { 
 

 
    JButton button = new JButton("Cancel"); 
 
    JProgressBar progressBar = new JProgressBar(); 
 

 
    public Test() { 
 
     GridBagConstraints g = new GridBagConstraints(); 
 
     setLayout(new GridBagLayout()); 
 
     set(g, 0, 0, GridBagConstraints.CENTER); 
 
     add(progressBar, g); 
 
     set(g, 0, 1, GridBagConstraints.CENTER); 
 
     add(button, g); 
 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 
 
     setSize(200, 100); 
 
     setVisible(true); 
 
    } 
 

 
    public void set(GridBagConstraints c, int x, int y, int anchor) { 
 
     c.gridx = x; 
 
     c.gridy = y; 
 
     c.anchor = anchor; 
 
    } 
 

 
    public static void main(String[] args) { 
 
     new Test(); 
 
    } 
 
}

+0

ありがとう、これは完璧に動作します! コンポーネントのサイズを(再)変更したい場合は、c.ipadyとc.ipadxを使用しないことを忘れないでください。 – Zwetje

関連する問題