2016-04-23 14 views
0

私はこれに問題があります。ボタンがJFrame全体を占めています。私はJFrameとJButtonのサイズを変更しようとしましたが、変更はありません。それはJTableを完全に隠しています。誰かが私が間違っていることを教えてもらえますか?JButton

JFrame FRAME = new JFrame(); 
    JButton BUTTON = new JButton("OK"); 
    FRAME.add(new JScrollPane(TableName)); 
    BUTTON.setPreferredSize(new Dimension(20,30)); 
    FRAME.add(BUTTON); 
    FRAME.setSize(700, 600); 
    FRAME.setVisible(true); 
    FRAME.setLocationRelativeTo(null); 

答えて

2

JFrameのデフォルトのレイアウトマネージャはBorderLayoutです。許可されていない2つのコンポーネントCENTERを追加しようとしています。最後に追加されたものだけが表示されます。

BorderLayoutにコンポーネントを追加する場合は、制約を指定する必要があります。あなたのコードは次のようなものでなければなりません:

frame.add(new JScrollPane(TableName), BorderLayout.CENTER); 
    button.setPreferredSize(new Dimension(20,30)); 
    frame.add(button, BorderLayout.PAGE_START); 

また、変数名は大文字であってはいけません。 Javaの規約に従います。

詳細と動作例については、How to Use BorderLayoutのSwingチュートリアルのセクションを参照してください。チュートリアルのコードでは、プログラムの構造をよりスムーズにし、スイングコーディング規則に従う方法も示します。

0

ボタンをフレームにまっすぐに追加しないでください。最初にJPanelを作成し、ボタンをパネルに追加して、フレームをパネルに追加します。

-1
JFrame frame = new JFrame(); 
    // frame.setBounds(x axis, y axis, weight, height) 
    frame.setBounds(10,10,304,214); 
    frame.getContentPane().setLayout(null); 

    JButton button = new JButton("Button"); 
    button.setBounds(98, 75, 126, 39); 
    frame.getContentPane().add(button); 
    frame.setVisible(true); 
+0

(1-)ここではあまりにも多くの理由でnullレイアウトを使用しないでください。これを行う理由は絶対にありません。 Swingはレイアウトマネージャで使用するように設計されています。 – camickr