2012-11-07 5 views
0

나는 조금 붙어있는 과제를하고 있습니다. 나는 이러한 요구 사항이 있습니다 BorderLayout를와GridLayout을 사용하여 프레임에 버튼 추가하기

  • 1 프레임
  • 패널
  • 2 개 버튼
  • 1 GridLayout과와 패널 새로운 프레임에서 남쪽 지역
  • 1 FileChooser에에있는 두 개의 버튼을 넣어를
  • 중앙 지역에서
  • 1 텍스트 영역은
  • 1 라벨 프로그램이 북쪽 지역에서 무엇을 말하는

임시 폴더에서 두 파일의 입력을 가져 와서 화면 중앙의 텍스트 필드 으로 읽습니다.

두 버튼이 모두 표시되지 않는 이유를 알 수 없습니다.

import java.awt.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.io.*; 
import javax.swing.*; 
import java.util.*; 
import java.util.logging.Level; 
import java.util.logging.Logger; 

public class P_Supplemental_11 extends JFrame { 

JPanel jpnl1 = new JPanel(); 
JButton jbtReadFile1 = new JButton("Get Student Names"); 
JButton jbtReadFile2 = new JButton("Get Student Grades"); 
JTextField jtxtFilePath = new JTextField(); 
JLabel jlblDesc = new JLabel("Enter the file name here:"); 
JTextArea jtxtAfileContents = new JTextArea(); 

P_Supplemental_11() { 
    this.setLayout(new BorderLayout(5, 10)); 
    jpnl1.setLayout(new GridLayout(2, 2)); 
    jpnl1.add(jlblDesc); 
    jpnl1.add(jtxtFilePath); 
    add(jpnl1, BorderLayout.NORTH); 
    add(jtxtAfileContents, BorderLayout.CENTER); 



    add(jbtReadFile1, BorderLayout.SOUTH); 
    jbtReadFile1.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent evt) { 

     jbtReadFileActionPerformed(evt); 
    } 

    }); 

    add(jbtReadFile2, BorderLayout.SOUTH); 
    jbtReadFile2.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent evt) { 

     jbtReadFileActionPerformed2(evt); 
    } 

    }); 
    } // end constructor 


private void jbtReadFileActionPerformed(ActionEvent evt) { 
    try { 
     File inFile = new File("c:/temp/studentnames.txt"); 
     Scanner input = new Scanner(inFile); 
     String fileContents = ""; 
     while(input.hasNext()) { 
      fileContents+= input.nextLine() + "\n"; 
     } // end while 

     jtxtAfileContents.setText(fileContents); 
     input.close(); 




    } // end action method for jbtReadFile button 
    catch (FileNotFoundException ex) { 
    Logger.getLogger(P_Supplemental_11.class.getName()).log(Level.SEVERE, null,   ex); 
    } 
} 

private void jbtReadFileActionPerformed2(ActionEvent evt) { 
    try { 
     File inFile = new File("c:/temp/studentscores.txt"); 
     Scanner input = new Scanner(inFile); 
     String fileContents = ""; 
     while(input.hasNext()) { 
      fileContents+= input.nextLine() + "\n"; 
     } // end while 
     input.close(); 
     jtxtAfileContents.setText(fileContents); 





    } // end action method for jbtReadFile button 
    catch (FileNotFoundException ex) { 
     Logger.getLogger(P_Supplemental_11.class.getName()).log(Level.SEVERE, null,  
ex); 
    } 
} 


public static void main(String[] args) { 
    P_Supplemental_11 frame = new P_Supplemental_11(); 
    frame.setTitle("P_Supplemenetal_10"); 
    frame.setSize(410, 520); 
    frame.setLocationRelativeTo(null); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setVisible(true); 
} 
} 

답변

2

당신은 할당에 규정 된 BorderLayout.SOUTH 위치에 GridLayout와 패널을 사용하고 있지 않습니다.

두 버튼을 동시에 볼 수있는 모두BorderLayout에서 같은 위치를 공유 할 수 없습니다 :

그래서
add(jbtReadFile1, BorderLayout.SOUTH); 

add(jbtReadFile2, BorderLayout.SOUTH); 
+0

, I 프레임의 남쪽 부분에 서로 옆에 넣어 얼마나? 할당은 하나의 프레임을 사용하도록 호출합니다. – Dhunt90

+0

새 패널에 배치하십시오. 업데이트를 참조하십시오. – Reimeus

+0

그런 다음 내 섹션 add (jbtReadFile1, BorderLayout.SOUTH)를 제거해야합니다. jbtReadFile1.addActionListener (새의 ActionListener() { 공공 무효의 actionPerformed (ActionEvent의의 EVT) { jbtReadFileActionPerformed (EVT) } – Dhunt90

관련 문제