2013-05-11 45 views
0

我需要一個JFrame,裏面有一個JPanel和一個JTable。我想在北部有jtable,在南部有JPanel。爲什麼JPanel的第二行不可見?

JPanel有兩條線,當我將它添加到我的JFrame南部時,第二條線不可見!如此混亂......請幫助

package javaapplication18; 

import javaapplication23.*; 
import java.awt.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.sql.*; 

import javax.swing.JTable.*; 
import javax.swing.table.*; 
import javax.swing.*; 
import javax.swing.JFrame; 

/** 
* 
* @author danial 
*/ 
public class JavaApplication18 extends JFrame { 

static JLabel jFN,jLN,jP,jR,jB,jIranianDate; 
static JTextField tFN,tLN,tP,tR,tfBirthDate,tIranianDate; 
static java.util.Date dateBirthDate; 
static java.sql.Date sqlBirthDate; 




static ResultSet rs; 

static Object[][] info; 
static Object[] columns={"ID","FirstName","LastName","P","R","BD"}; 

static DefaultTableModel dTable=new DefaultTableModel(info,columns); 

    public static void main(String[] args) { 

     JavaApplication23 iranianDateInterface=new JavaApplication23() ; 
     JavaApplication23 iranianDateInterface1=new JavaApplication23() ; 

     iranianDateInterface1.setIranianDate(1364, 3, 14); 

     String bg=iranianDateInterface1.getIranianDate(); 


    String iranianDate=iranianDateInterface.getIranianDate(); 
     System.out.println(bg); 
    JFrame frame=new JFrame(); 
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
Connection con; 




     try { 
      Class.forName("com.mysql.jdbc.Driver"); 
      con= DriverManager.getConnection("jdbc:mysql://localhost/kn","root","rit3000"); 
      Statement st=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); 
      String query = "Select * From tabmain"; 
      rs=st.executeQuery(query); 

      while(rs.next()) { 
       Object[] object=new Object[]{rs.getInt(1),rs.getString(2),rs.getString(3),rs.getInt(4),rs.getInt(5),rs.getDate(6)}; 
       dTable.addRow(object); 

      } 

     } catch (ClassNotFoundException ex) { 

     }catch (SQLException e){ 
      System.out.println(e.getMessage()); 
     } 
final JTable jTable=new JTable(dTable); 
jTable.setRowHeight(jTable.getRowHeight()+10); 
jTable.setFont(new Font("Serif",Font.PLAIN,20)); 
jTable.setAutoCreateRowSorter(true); 
jTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); 

JScrollPane scrollPane= new JScrollPane(jTable); 



frame.add(scrollPane,BorderLayout.CENTER); 

JButton add= new JButton("add"); 
add.addActionListener(new ActionListener(){ 
    public void actionPerformed(ActionEvent e){ 


    } 
}); 
JButton remove=new JButton("remove"); 
remove.addActionListener(new ActionListener(){ 
    @Override 
    public void actionPerformed(ActionEvent e){ 

    } 
}); 


jFN=new JLabel("First Name"); 
jLN=new JLabel ("Last Name"); 
jP=new JLabel("Payment"); 
jR=new JLabel("Rest"); 
jB=new JLabel("Birthday"); 
jIranianDate=new JLabel("Cal"); 


tFN=new JTextField(15); 
tLN=new JTextField (15); 
tP=new JTextField(7); 
tR=new JTextField(7); 
tIranianDate=new JTextField(iranianDate,8); 


tfBirthDate=new JTextField("0000-00-00",7); 
JPanel inputPanel =new JPanel(); 


inputPanel.add(jFN); 
inputPanel.add(tFN); 
inputPanel.add(jLN); 
inputPanel.add(tLN); 
inputPanel.add(jP); 
inputPanel.add(tP); 
inputPanel.add(jR); 
inputPanel.add(tR); 
inputPanel.add(jB); 
inputPanel.add(tfBirthDate); 
inputPanel.add(add); 
inputPanel.add(remove); 
inputPanel.add(jIranianDate); 
inputPanel.add(tIranianDate); 

frame.add(inputPanel,BorderLayout.SOUTH); 



frame.setSize(900,600); 
frame.setVisible(true); 


    } 
} 
+0

你可以在inputPanel上放置一個GridLayout。 – PeterMmm 2013-05-11 21:08:22

+0

發佈[MCVE](http://stackoverflow.com/help/mcve)。一定要將你的代碼複製粘貼到一個*新的項目中*,並確保它在發佈之前編譯並運行。 – user1803551 2016-02-08 18:48:42

回答

0

當你使用你的目標數控制有一定的寬度(東/西)或高度(北,南),並有其餘的自動調整大小(BorderLayout的中心)。要爲邊上的控件設置特定的寬度或高度,請使用java.awt.Component類的首選大小屬性。