2011-12-08 2 views
0

시스템 관리자, 직원 또는 재무 회원 인 경우 사용자가 클릭하는 메인 윈도우를 만들었습니다. 내 문제 중 하나는 화면 중앙에 있지 않습니다. 그렇게? 둘째, Finance Button을 클릭하면 Mainwindow가 닫히고 화면에 로그인하게됩니다. 어떻게해야합니까? 여기 내 MainWindow를 코드새 버튼 윈도우 및 UI 정렬

import java.awt.BorderLayout; 
import java.awt.EventQueue; 

import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.border.EmptyBorder; 
import java.awt.CardLayout; 
import javax.swing.JEditorPane; 
import javax.swing.SpringLayout; 
import javax.swing.JButton; 
import javax.swing.JTextField; 
import javax.swing.JLabel; 
import javax.swing.JFormattedTextField; 
import java.awt.event.ActionListener; 
import java.awt.event.ActionEvent; 


    public class MainWindow extends JFrame { 

     private JPanel contentPane; 

     /** 
     * Launch the application. 
     */ 
     public static void main(String[] args) { 
      EventQueue.invokeLater(new Runnable() { 
       public void run() { 
        try { 
         MainWindow frame = new MainWindow(); 
         frame.setVisible(true); 
        } catch (Exception e) { 
         e.printStackTrace(); 
        } 
       } 
      }); 
     } 

     /** 
     * Create the frame. 
     */ 
     public MainWindow() { 
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      setBounds(100, 100, 333, 191); 
      contentPane = new JPanel(); 
      contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 
      setContentPane(contentPane); 
      contentPane.setLayout(new BorderLayout(0, 0)); 

      JButton btnNewButton = new JButton("Employee"); 
      contentPane.add(btnNewButton, BorderLayout.WEST); 

      JButton btnNewButton_1 = new JButton("Finance"); 
      btnNewButton_1.addActionListener(new ActionListener() { 
       public void actionPerformed(ActionEvent arg0) { 
        Login login = new Login(); 
       } 
      }); 
      contentPane.add(btnNewButton_1, BorderLayout.CENTER); 

      JButton btnNewButton_2 = new JButton("System Admin"); 
      contentPane.add(btnNewButton_2, BorderLayout.EAST); 

      JLabel lblNewLabel = new JLabel("Welcome"); 
      contentPane.add(lblNewLabel, BorderLayout.NORTH); 
     } 

    } 

것은 여기에 필요에 따라 당신은 carefully choose a layout manager에 필요한 로그인 양식

import java.awt.BorderLayout; 
import java.awt.GridLayout; 
import java.awt.event.ActionListener; 
import java.awt.event.ActionEvent; 
import javax.swing.JFrame; 
import javax.swing.JOptionPane; 
import javax.swing.JLabel; 
import javax.swing.JTextField; 
import javax.swing.JPasswordField; 
import javax.swing.JButton; 
import javax.swing.JPanel; 
import java.sql.Connection; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 

public class Login extends JFrame { 

    private JLabel label1, label2; 
    private JButton submit; 
    private JTextField textfield1; 
    private JPasswordField passfield; 
    private JPanel panel; 

    public Login() { 

     setSize(300, 100); 
     setVisible(true); 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 

     label1 = new JLabel("User ID:"); 
     textfield1 = new JTextField(15); 
     label2 = new JLabel("Password:"); 
     passfield = new JPasswordField(15); 
     submit = new JButton("Submit"); 
     panel = new JPanel(new GridLayout(3, 1)); 

     panel.add(label1); 
     panel.add(textfield1); 
     panel.add(label2); 
     panel.add(passfield); 
     panel.add(submit); 
     add(panel, BorderLayout.CENTER); 

     ButtonHandler handler = new ButtonHandler(); 
     submit.addActionListener(handler); 
    }// end login constructor 

    private class ButtonHandler implements ActionListener { 

     public void actionPerformed(ActionEvent event) { 

      String user = textfield1.getText(); 
      char[] passChars = passfield.getPassword(); 
      Connection conn = Jdbc.dbConn(); 
      PreparedStatement ps = null; 
      ResultSet rs = null; 
      String pass = new String(passChars); 

      if (passChars != null) { 
       String sql = "SELECT employee_ID, employee_password FROM user WHERE employee_ID = ? AND employee_password = ?"; 

       try { 
        ps = conn.prepareStatement(sql); 
        ps.setString(1, user); 
        ps.setString(2, pass); 
        rs = ps.executeQuery(); 
        if (rs.next()) { 
         JOptionPane.showMessageDialog(null,"Welcome! "+user); 
        } else { 
         JOptionPane.showMessageDialog(null, "Wrong Input"); 
        } 
       } catch (Exception e) { 
         e.printStackTrace(); 
       } finally { 
        try { 
         rs.close(); 
         ps.close(); 
         conn.close(); 
        } catch (Exception ee) { 
          ee.printStackTrace(); 
        } 
       } 
      }// end actionPerformed 
     }// End ButtonHandler 
    }// End of class 
} 
+1

질문 마크 키 – kleopatra

답변

3

제안 :

  1. MainWindow (JFrame의)에 대한 setBounds()를 사용하지 마십시오. 일부 레이아웃을 사용하고 끝에 pack()을 사용하십시오. 수동으로 크기를 설정하려면 setSize()을 사용할 수도 있습니다.
  2. 현재 창을 닫고 로그인 프레임을 열려면 setVisible(false) 또는 dispose()을 추가하고 로그인 개체를 만들고 표시되게합니다.

  3. 프레임을 중앙에 놓으려는 시도는 setLocationRelativeTo(null);입니다.

  4. label1, textFiled2, btnNewButton 등과 같은 변수 이름을 사용하지 마십시오. 사용법을 반영하는 적절한 변수에 적절한 이름을 사용하십시오. 포인트 2

예 :

btnNewButton_1.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent arg0) { 
      setVisible(false); 
      Login login = new Login(); 
     } 
    }); 
+0

soo 재정 버튼을 클릭하면 오브젝트를 생성 한 다음 false로 설정할 것입니다. 또는 dispose()를 사용하겠습니까 ?? – user962206

+0

@ user962206 내 대답을 편집하십시오. –

+0

이것이 내가 찾고 있었던 것입니다. 고마워요! – user962206

3

내 코드입니다. 현재 BorderLayout을 사용하고 있으며 원하는 것을 수행하지 않는 것 같습니다.

JPanel에 3 개의 버튼을 추가하고 해당 패널을 프레임의 콘텐츠 창으로 설정해보십시오. JPanel은 기본적으로 FlowLayout을 사용하며 트릭을 수행해야합니다.

+0

편집 :-) 조금 붙어있는 것 같다 : 어떻게 접근 방법의 종류 내 로그인 양식을 보여주는 것 ?? – user962206

+0

좋아요 ?? : http://pastebin.com/bZqB3iuE – user962206

+0

주석에 코드를 넣지 마십시오. 읽을 수 없게됩니다. 질문을 업데이트로 편집하고 질문이 업데이트되었다는 것을 사용자에게 알리십시오. –