2012-11-07 34 views
0

我正在做一個任務,我有點卡住了。我有以下要求:使用GridLayout將按鈕添加到框架

  • 1幀用的BorderLayout
  • 上面板
  • 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面板作爲分配中指定。

2個按鈕不能共享與同時可見一BorderLayout同一位置:

add(jbtReadFile1, BorderLayout.SOUTH); 

add(jbtReadFile2, BorderLayout.SOUTH); 
+0

所以,我將如何把它們彼此相鄰的框架南部一部分?該作業只需要使用一幀 – Dhunt90

+0

放置在新面板上。查看更新。 – Reimeus

+0

然後我需要取出我的部分添加(jbtReadFile1,BorderLayout.SOUTH); jbtReadFile1.addActionListener(新的ActionListener(){ 公共無效的actionPerformed(ActionEvent的EVT){ jbtReadFileActionPerformed(EVT);} 只是 – Dhunt90