2012-02-29 49 views
0

AbsoluteLayoutを使用するJFrameのエッジの周囲に余分なスペースを入れることはできますか? JFrameの下側のコンポーネントとしてボタンがあると、JFrameウィンドウの下端に合わせてボタンが配置されているように見えます。 AbsoluteLayoutを使用しているときに、コンポーネントとJFrameのエッジの間に少し余分なスペースを追加する方法があるかどうかを知りたいと思います。Java:AbsoluteLayoutの余分なスペース

+0

AbsoluteLayoutは効果的なレイアウトではありません - – kleopatra

答えて

0

ボタンの下に追加できる空白スペースを作成するには、Box.createRigidArea(dimensions)を使用できます。

2

提案:あなたはJFrameのにコンポーネントを追加すると

  • 、あなたは実際のJFrameのcontentPaneにそれを追加しています。 contentPaneに「バッファ」ボーダーを与えるには、コンポーネントの周りに必要なボーダーの量のint定数であるパラメーターをEmptyBorder(...)に渡すことを検討してください。
  • 「絶対」レイアウトを使用するのは避けてください。特に、GUIの下部などのレイアウトマネージャの配置場所にコンポーネントを配置するのは避けてください。たとえば、

、中央と下のJPanelのが原因空の境界線のGUIの端に外出しない方法を次のコードで作成されたGUIでのノートは:

import java.awt.BorderLayout; 
import java.awt.Dimension; 

import javax.swing.*; 

public class ButtonAtBottom { 
    private static void createAndShowGui() { 
     JPanel bottomPanel = new JPanel(); 
     bottomPanel.add(new JButton("Bottom Button")); 
     bottomPanel.setBorder(BorderFactory.createTitledBorder("Bottom Panel")); 

     JPanel centerPanel = new JPanel(); 
     centerPanel.setBorder(BorderFactory.createTitledBorder("Center Panel")); 


     JPanel mainPanel = new JPanel(new BorderLayout()); 
     mainPanel.add(centerPanel, BorderLayout.CENTER); 
     mainPanel.add(bottomPanel, BorderLayout.PAGE_END); 

     // **** here I add the border to the mainPanel which I'll 
     // make into the contentPane 
     int eb = 25; 
     mainPanel.setBorder(BorderFactory.createEmptyBorder(eb, eb, eb, eb)); 

     // don't set the preferredSize per Kleopatra, but am doing it 
     // here simply to make code shorter for this sscce 
     mainPanel.setPreferredSize(new Dimension(500, 400)); 

     JFrame frame = new JFrame("ButtonAtBottom"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setContentPane(mainPanel); 
     frame.pack(); 
     frame.setLocationByPlatform(true); 
     frame.setVisible(true); 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
     public void run() { 
      createAndShowGui(); 
     } 
     }); 
    } 
} 
+1

笑って大声で:-) – kleopatra

0

設定しますコンテンツパネルの空白の境界。ここで、SIZEは必要なパディングの量です。あなたが各エッジに異なるパディングをしたい場合、あなたはそれに応じて設定することができるように

JFrame frame = new JFrame(); 
JPanel panel = new JPanel(null); 
panel.setBorder(BorderFactory.createEmptyBorder(SIZE,SIZE,SIZE,SIZE); 
frame.setContentPane(panel); 
//The rest 

引数が上、左、下、右パディングのためのものです。

関連する問題