2012-10-30 1 views
4

나는 use this을 시도하고 내가 왜하지만, 사람이 나를 도울 수 몰라요 자바 버튼 폭

singleplayerButton.setBounds(20, 20, 200, 100); 

를 작동하지 않는 이유는 무엇입니까?

내 전체 페이지 코드는 이렇게 페이지 측면 접촉하지, 버튼이 작게 달성하기 위해 노력하고 here

package gmine; 

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

public class gmine implements ActionListener { 
     JFrame interfaceFrame; 
     JButton singleplayerButton, multiplayerButton, optionsButton, quitButton; 

     public gmine() { 
       JFrame.setDefaultLookAndFeelDecorated(false); 
       interfaceFrame = new JFrame("G-Mine B0.4"); 
       interfaceFrame.setSize(800,600); 
       interfaceFrame.setLayout(new GridLayout(9,1, 20, 15)); 

       singleplayerButton = new JButton("SinglePLayer"); 
       singleplayerButton.addActionListener(this); 
       interfaceFrame.add(singleplayerButton); 
       singleplayerButton.setBounds(20, 20, 200, 100); 

       multiplayerButton = new JButton("MultiPlayer"); 
       multiplayerButton.addActionListener(this); 
       interfaceFrame.add(multiplayerButton); 

       optionsButton = new JButton("Options"); 
       optionsButton.addActionListener(this); 
       interfaceFrame.add(optionsButton); 

       quitButton = new JButton("Quit"); 
       quitButton.addActionListener(this); 
       interfaceFrame.add(quitButton); 

       interfaceFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       interfaceFrame.setVisible(true); 
     } 

     public void actionPerformed(ActionEvent a) { 

     } 

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

메신저입니다. 모든

+1

코드는 어디에 있습니까? –

+0

이 코드 줄을 가지고 무엇을하려고합니까?) 개인적으로 – brimborium

답변

9

개인적으로 레이아웃 관리자를 사용하면 단추를 배치하는 방법을보다 유연하게 결정할 수 있고 구성 요소의 기본 크기를 높이기 위해 최선의 노력을하지만 필요한만큼 조정할 수 있습니다. .. 나를 위해

, 그 다음은 GridBagLayout

enter image description here

public class ButtonsLayout { 

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

    public ButtonsLayout() { 
     EventQueue.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
       } catch (ClassNotFoundException ex) { 
       } catch (InstantiationException ex) { 
       } catch (IllegalAccessException ex) { 
       } catch (UnsupportedLookAndFeelException ex) { 
       } 

       JFrame frame = new JFrame("Test"); 
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       frame.setLayout(new BorderLayout()); 
       frame.add(new MenuPane()); 
       frame.pack(); 
       frame.setLocationRelativeTo(null); 
       frame.setVisible(true); 
      } 
     }); 
    } 

    public class MenuPane extends JPanel { 

     public MenuPane() { 
      setLayout(new GridBagLayout()); 

      JButton singleplayerButton = new JButton("SinglePLayer"); 
      JButton multiplayerButton = new JButton("MultiPlayer"); 
      JButton optionsButton = new JButton("Options"); 
      JButton quitButton = new JButton("Quit"); 

      GridBagConstraints gbc = new GridBagConstraints(); 
      gbc.gridx = 0; 
      gbc.gridy = 0; 
      gbc.fill = GridBagConstraints.HORIZONTAL; 
      gbc.ipadx = 20; 
      gbc.ipady = 20; 

      add(singleplayerButton, gbc); 
      gbc.gridy++; 
      add(multiplayerButton, gbc); 
      gbc.gridy++; 
      add(optionsButton, gbc); 
      gbc.gridy++; 
      add(quitButton, gbc); 
     } 
    } 
} 

, 난 ipadx 사용하고의 ipady했습니다 0을 사용하여 레이아웃 관리자를 통해 구성 요소의 너비와 높이를 늘리고 모든 구성 요소를 동일한 너비로 채우기 위해 HORIZONTAL 채우기를 사용합니다.

+1

정말 대단합니다. 저는 이것을 사용하려고합니다. 감사합니다 – Dianamu

+0

내 대답을 참조하십시오. – Dianamu

4
  • 먼저 다음 LayoutManager, 성분 위치를 사용하여 그 크기는 구성 요소가 배치 될 때의 직접적인 부모 CompoenentLayoutManager 의해 제어된다 ..
    예 :
    JFrame에 JButton을 배치하면 JFrame의 LayoutManager가 JButton의 위치와 크기를 제어합니다.

  • 나는 또한 2005 년 넷빈즈 팀에 의해 개발 된 GroupLayout를 사용하는 것이 좋습니다 것입니다, 당신은 구글에서 지금 무료 WindowsBuilderPro를 사용할 수 있습니다.

2

GridLayout 관리자는 모든 구성 요소에 동일한 크기를 부여합니다. 다른 레이아웃 관리자를 사용하여 구성 요소에 setPreferredSize(Dimension preferredSize)을 사용하여 올바르게 크기를 조정할 수 있습니다.

다른 예로서, 위에 JPanel을 놓고 버튼을 배치 할 수 있습니다.

+1

, 나는 거의 ...'null' 레이아웃만큼이나 나쁜 ... 그것은 바로 다른 모습 문제로 당신을 실행하고 느낌과 글꼴 및 DPI 문제의 차이, setPreferredSize' 가능한 경우 '사용하지 않는 것 - IMHO – MadProgrammer

+0

자세한 내용은 [Q & A] (http://stackoverflow.com/q/7229226/230513)를 참조하십시오. – trashgod

1

나는 위의 답변 중 하나를 사용하려 자세한 내용은

  • Using Layout Managers
  • A Visual Guide to Layout Managers
    • 에서보세요. 이제 프로그램이 표시되지 않습니다. 그냥 종료됩니다.

      package gmine; 
      
      import java.awt.*; 
      import java.awt.event.*; 
      import javax.swing.*; 
      
      public class gmine { 
           JFrame interfaceFrame; 
           JButton singleplayerButton, multiplayerButton, optionsButton, quitButton; 
      
      
          public void ButtonsLayout() { 
           EventQueue.invokeLater(new Runnable() { 
            @Override 
            public void run() { 
             try { 
              UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
             } catch (ClassNotFoundException ex) { 
             } catch (InstantiationException ex) { 
             } catch (IllegalAccessException ex) { 
             } catch (UnsupportedLookAndFeelException ex) { 
             } 
      
             JFrame frame = new JFrame("G-Mine"); 
             interfaceFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
             interfaceFrame.setLayout(new BorderLayout()); 
             interfaceFrame.setSize(800,600); 
             interfaceFrame.add(new MenuPane()); 
             interfaceFrame.pack(); 
             interfaceFrame.setLocationRelativeTo(null); 
             interfaceFrame.setVisible(true); 
            } 
           }); 
          } 
      
          public class MenuPane extends JPanel { 
      
           public MenuPane() { 
            setLayout(new GridBagLayout()); 
      
            JButton singleplayerButton = new JButton("SinglePLayer"); 
            JButton multiplayerButton = new JButton("MultiPlayer"); 
            JButton optionsButton = new JButton("Options"); 
            JButton quitButton = new JButton("Quit"); 
      
            GridBagConstraints gbc = new GridBagConstraints(); 
            gbc.gridx = 0; 
            gbc.gridy = 0; 
            gbc.fill = GridBagConstraints.HORIZONTAL; 
            gbc.ipadx = 20; 
            gbc.ipady = 20; 
      
            add(singleplayerButton, gbc); 
            gbc.gridy++; 
            add(multiplayerButton, gbc); 
            gbc.gridy++; 
            add(optionsButton, gbc); 
            gbc.gridy++; 
            add(quitButton, gbc); 
           } 
          } 
          public static void main(String[] args) { 
           new gmine(); 
          } 
      

      }

    +0

    생성자가 없습니다. 변경 시도'공공 무효 ButtonsLayout()'공공 gmine' 확인 – MadProgrammer

    +0

    '에 병이 시도 – Dianamu

    +0

    이 내가 그렇게하고 난 내 콘솔이 얻을. – Dianamu