2017-01-03 128 views
0

我在这里有两个动作,一个是查看学生信息,另一个是查看教师信息。如何将Java选项卡式面板添加到自定义布局?

我想添加名为学生和老师的两个选项卡,但不知道在java中定制的布局中添加jpanels的位置。

请帮助我建议解决方案或指出要添加的格式。

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

public class Searchdb extends JFrame implements ActionListener { 

//Initializing Components 
    JLabel lb,lbd,lb1, lb2, lb3, lb5; 
    JTextField tf1, tf2,tf3,tf5,tfd; 
    JButton btn; 

    //Creating Constructor for initializing JFrame components 
    Searchdb() { 
     //Providing Title 
     super("Fetching Roll Information"); 




     lb5 = new JLabel("Roll Number:"); 
     lb5.setBounds(20, 20, 100, 20); 
     tf5 = new JTextField(20); 
     tf5.setBounds(130, 20, 200, 20); 

     lbd = new JLabel("Date:"); 
     lbd.setBounds(20, 50, 100, 20); 
     tfd = new JTextField(20); 
     tfd.setBounds(130, 50, 200, 20); 


     btn = new JButton("Submit"); 
     btn.setBounds(50, 50, 100, 20); 
     btn.addActionListener(this); 

     lb = new JLabel("Fetching Student Information From Database"); 
     lb.setBounds(30, 80, 450, 30); 
     lb.setForeground(Color.black); 
     lb.setFont(new Font("Serif", Font.PLAIN, 12)); 
     setVisible(true); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setSize(500, 500); 

     lb1 = new JLabel("Name:"); 
     lb1.setBounds(20, 120, 100, 20); 
     tf1 = new JTextField(50); 
     tf1.setBounds(130, 120, 200, 20); 
     lb2 = new JLabel("Fathername:"); 
     lb2.setBounds(20, 150, 100, 20); 
     tf2 = new JTextField(100); 
     tf2.setBounds(130, 150, 200, 20); 
     lb3 = new JLabel("State:"); 
     lb3.setBounds(20, 180, 100, 20); 
     tf3 = new JTextField(50); 
     tf3.setBounds(130, 180, 200, 20); 

     setLayout(null); 

     //Add components to the JFrame 
     add(lb5); 
     add(tf5); 
     add(lbd); 
     add(tfd); 
     add(btn); 

     add(lb); 
     add(lb1); 
     add(tf1); 
     add(lb2); 
     add(tf2); 
     add(lb3); 
     add(tf3); 


     //Set TextField Editable False 
     tf1.setEditable(false); 
     tf2.setEditable(false); 
     tf3.setEditable(false); 

    } 

    public void actionPerformed(ActionEvent e) { 
     //Create DataBase Coonection and Fetching Records 

     // First panel dispalyed only the student below information. 

     try { 
      String str = tf5.getText(); 

      Datestri = tfd.getText();//Getting the unable to convert String to Date error 

      System.out.println(str); 
      System.out.println(stri); 

      Class.forName("oracle.jdbc.driver.OracleDriver"); 
      Connection con = DriverManager.getConnection("jdbc:oracle:thin:@//host:port/servicename","username","password"); 
      PreparedStatement st = con.prepareStatement("select Name,Fathername,State from student_db where roll_number=? and medium=?"); 
      System.out.println(st); 
      st.setString(1, str); 
      st.setDate(2, stri); 



      //Excuting Query 
      ResultSet rs = st.executeQuery(); 
      System.out.println(rs); 

      if (rs.next()) { 
       String s = rs.getString(1); 
       String s1 = rs.getString(2); 
       String s2 = rs.getString(3); 


       //Sets Records in TextFields. 
       tf1.setText(s); 
       tf2.setText(s1); 
       tf3.setText(s2); 

      } else { 
       JOptionPane.showMessageDialog(null, "Student not Found"); 
      } 

      //Create Exception Handler 
     } catch (Exception ex) { 

      System.out.println(ex); 
     } 
    } 

    public void actionPerformed(ActionEvent e) { 
     //Create DataBase Coonection and Fetching Records 

    // Second panel dispalyed only the teacher information. 
     //Teacher information should be retrieved from the db 

     } 

//Running Constructor 

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

感谢您的任何帮助提前。

+1

Java GUI必须使用不同语言环境中使用不同PLAF的不同OS,屏幕大小,屏幕分辨率等。因此,它们不利于像素的完美布局。请使用布局管理器或[它们的组合](http://stackoverflow.com/a/5630271/418556)以及[white space]的布局填充和边框(http://stackoverflow.com/a/17874718/ 418556)。 –

+0

我认为布局管理器不是最佳实践,那么为什么尝试过自定义布局并且每次都选择和使用布局管理器时会感到困惑?@AndrewThompson – sathya

+0

以最小尺寸提供ASCII图形或简单的GUI图形,如果可调整大小,具有更多的宽度和高度(以显示额外空间的分配方式)。如果学生/教师容器具有不同的布局,则显示两倍的ASCII艺术/图纸(每个为一个)。 –

回答

2

添加到您的construcotr,然后你可以自定义你的愿望:

JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP); 
tabbedPane.setBounds(10, 211, 464, 240); 
getContentPane().add(tabbedPane); 

JPanel panel = new JPanel(); 
tabbedPane.addTab("New tab", null, panel, null); 
panel.setLayout(null); 

JLabel lblNewLabel_1 = new JLabel("New label"); 
lblNewLabel_1.setBounds(43, 35, 46, 14); 
panel.add(lblNewLabel_1); 

JPanel panel_1 = new JPanel(); 
tabbedPane.addTab("New tab", null, panel_1, null); 
panel_1.setLayout(null); 

JLabel lblNewLabel = new JLabel("New label"); 
lblNewLabel.setBounds(50, 149, 46, 14); 
panel_1.add(lblNewLabel); 

此外,我认为你应该使用其它的布局,而不是绝对的这种形式,如果你调整窗口大小的组件留在相同的地方相同的尺寸。

+0

谢谢我将检查@Paner – sathya

+0

其工作真棒@帕纳 – sathya

相关问题