2012-07-25 3 views
1

gridlayout jpanel의 크기를 설정하려고합니다. 코드는 다음과 같습니다.gridlayout jpanel의 크기를 설정하는 방법

JFrame myFrame = new JFrame();  
    myFrame.setLayout(new FlowLayout()); 
    myFrame.setLocation(400, 100); 
    myFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
    JLabel jlMins = new JLabel("Number of minutes for tutoring session (should be a positive decimal number): 0.0"); 
    JLabel jlEarnings = new JLabel("Earnings in dollars and cents received (should be positive decimal number): 0.0"); 
    jtfMins = new JTextField(20); 
    jtfEarnings = new JTextField(20); 
    JPanel jpMins = new JPanel(new BorderLayout()); 
    JPanel jpEarnings = new JPanel(new BorderLayout()); 
    jpMins.setPreferredSize(new Dimension(300,50)); 
    jpEarnings.setPreferredSize(new Dimension(300,50)); 
    jpMins.add(jlMins,BorderLayout.NORTH); 
    jpMins.add(jtfMins,BorderLayout.CENTER); 
    jpEarnings.add(jlEarnings,BorderLayout.NORTH); 
    jpEarnings.add(jtfEarnings,BorderLayout.CENTER); 
    JButton jbQuit = new JButton("Quit"); 
    JButton jbEnter = new JButton("Enter"); 
    JButton jbReport = new JButton("Run Report"); 
    jbQuit.setActionCommand("quit"); 
    jbEnter.setActionCommand("enter"); 
    jbReport.setActionCommand("report"); 
    jbQuit.addActionListener(this); 
    jbEnter.addActionListener(this); 
    jbReport.addActionListener(this); 
    JPanel jpButtons = new JPanel(new GridLayout(4,1,0,20)); 
    jpButtons.setSize(new Dimension(50,150)); 
    jpButtons.add(jbEnter); 
    jpButtons.add(jbReport); 
    jpButtons.add(jbQuit); 
    JPanel jpNorth = new JPanel(new BorderLayout()); 
    jpNorth.add(jpMins,BorderLayout.NORTH); 
    jpNorth.add(jpEarnings,BorderLayout.CENTER); 
    jpNorth.add(jpButtons,BorderLayout.SOUTH); 
    jtaReports = new JTextArea(); 
    jtaReports.setColumns(40); 
    jtaReports.setRows(10); 
    jtaReports.setLineWrap(true); 
    JScrollPane jspReports = new JScrollPane(jtaReports); 
    jspReports.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); 
    JPanel jpSouth = new JPanel(); 
    jpSouth.setPreferredSize(new Dimension(350,200)); 
    jpSouth.add(jspReports); 
    JPanel jpMain = new JPanel(new BorderLayout()); 
    jpMain.add(jpNorth,BorderLayout.NORTH); 
    jpMain.add(jpSouth,BorderLayout.SOUTH); 
    jpMain.setPreferredSize(new Dimension(500,500)); 
    myFrame.setContentPane(jpMain); 
    myFrame.pack(); 
    myFrame.setVisible(true); 

패널 이름은 jpButtons입니다. 등

JButton jbQuit = new JButton("Quit"); 
JButton jbEnter = new JButton("Enter"); 
JButton jbReport = new JButton("Run Report"); 
jbQuit.setActionCommand("quit"); 
jbEnter.setActionCommand("enter"); 
jbReport.setActionCommand("report"); 
jbQuit.addActionListener(this); 
jbEnter.addActionListener(this); 
jbReport.addActionListener(this); 
JPanel jpButtons = new JPanel(new GridLayout(4,1,0,20)); 
jpButtons.setSize(new Dimension(50,150)); 
jpButtons.add(jbEnter); 
jpButtons.add(jbReport); 
jpButtons.add(jbQuit); 

정확히 어떻게 또는 얻는 방법을 그들에게 JPanel의 구성 요소에 제대로 작동하려면에는 setSize 및 setPreferredSize의 작업을 수행,

+0

남자, [이름 임베딩 유형] (http://www.codinghorror.com/blog/2006/05/code-smells.html) – Mohayemin

답변

4

크기 조절 및 위치 : 위의 코드 중 나는이 부분에 대해 주로 이야기하고있다 레이아웃 관리자가 처리합니다. 그 일을하게하십시오.

+0

다른 방법은'JPanel'을 확장하고 재정의하는 것입니다. 그것 [getPreferredSize] (http://docs.oracle.com/javase/7/docs/api/javax/swing/JComponent.html#getPreferredSize()) 방법 :-) –

+0

@GagandeepBali, 나는 그 해결 방법을 생각하지 않아요. 해당 레이아웃 관리자에 적용 할 수 있습니다. 가장 좋은 해결 방법은 레이아웃 관리자에 직접 추가되는'JPanel' 인스턴스 내에 컴포넌트를 중첩시키는 것입니다. 또는 더 나은 방법은 적절한 레이아웃 관리자를 사용하는 것입니다. – mre

+0

내 잘못, 문제의 GridLayout을 보지 못함 :( –