2015-07-28 71 views
-3

此代碼使員工能夠登錄到咖啡店系統。我承認我有很多不需要的代碼。我的問題是,當我運行程序只是圖像顯示在上面,沒有JButtons,JLabels或JTextFields。爲什麼不顯示JButtons,JLabels和JTextFields?

在此先感謝。

import java.awt.EventQueue; 
import java.awt.GridBagConstraints; 
import java.awt.GridBagLayout; 
import java.awt.Insets; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.UIManager; 
import javax.swing.UnsupportedLookAndFeelException; 
import javax.swing.ImageIcon; 
import java.awt.FlowLayout; 
import java.awt.event.ActionListener; 
import java.awt.event.ActionEvent; 
import java.awt.BorderLayout; 
import java.awt.Container; 
import java.awt.Dimension; 
import java.awt.Graphics; 

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 
import java.io.*; 
import java.util.*; 

import java.awt.image.BufferedImage; 
import java.net.URL; 
import javax.imageio.ImageIO; 

public class login extends JFrame { 



public void CreateFrame() { 

    JFrame frame = new JFrame("Welcome"); 


    JPanel panel = new JPanel(); 
    panel.setOpaque(true); 
    panel.setBackground(Color.WHITE); 
    panel.setLayout(new BorderLayout(1000,1000)); 
    panel.setLayout(new FlowLayout()); 
    getContentPane().add(panel); 

    ImagePanel imagePanel = new ImagePanel(); 
    imagePanel.show(); 

    panel.add(imagePanel, BorderLayout.CENTER); 

    frame.setContentPane(panel); 
    frame.pack(); 
    frame.setLocationByPlatform(true); 
    frame.setVisible(true); 

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.pack(); 
    frame.setVisible(true); 
    frame.add(panel); 



} 

public static void main(String... args) { 
     EventQueue.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
       } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) { 
        ex.printStackTrace(); 
       } 

       new login().CreateFrame(); 
      } 
     }); 

    } 
} 

class GUI extends JFrame{ 

private JButton buttonLogin; 
private JButton buttonNewUser; 
private JLabel iUsername; 
private JLabel iPassword; 
private JTextField userField; 
private JPasswordField passField; 
public void createGUI(){ 

    setLayout(new GridBagLayout()); 

    JPanel loginPanel = new JPanel(); 
    loginPanel.setOpaque(false); 
    loginPanel.setLayout(new GridLayout(3,3,3,3)); 



    iUsername = new JLabel("Username "); 
    iUsername.setForeground(Color.BLACK); 
    userField = new JTextField(10); 
    iPassword = new JLabel("Password "); 
    iPassword.setForeground(Color.BLACK); 
    passField = new JPasswordField(10); 
    buttonLogin = new JButton("Login"); 
    buttonNewUser = new JButton("New User"); 



    loginPanel.add(iUsername); 
    loginPanel.add(iPassword); 
    loginPanel.add(userField); 
    loginPanel.add(passField); 
    loginPanel.add(buttonLogin); 
    loginPanel.add(buttonNewUser); 

    add(loginPanel); 

    pack(); 

    Writer writer = null; 
    File check = new File("userPass.txt"); 
    if(check.exists()){ 

     //Checks if the file exists. will not add anything if the file does exist. 
    }else{ 
     try{ 
       File texting = new File("userPass.txt"); 
       writer = new BufferedWriter(new FileWriter(texting)); 
       writer.write("message"); 
      }catch(IOException e){ 
       e.printStackTrace(); 
      } 
    } 




    buttonLogin.addActionListener(new ActionListener() { 
     @Override 
     public void actionPerformed(ActionEvent e) { 
      try { 
       File file = new File("userPass.txt"); 
       Scanner scan = new Scanner(file);; 
       String line = null; 
       FileWriter filewrite = new FileWriter(file, true); 

       String usertxt = " "; 
       String passtxt = " "; 
       String puname = userField.getText(); 
       String ppaswd = passField.getText(); 


       while (scan.hasNext()) { 
        usertxt = scan.nextLine(); 
        passtxt = scan.nextLine(); 
       } 




       if(puname.equals(usertxt) && ppaswd.equals(passtxt)) { 
        MainMenu menu = new MainMenu(); 
        dispose(); 
       } 
       else if(puname.equals("") && ppaswd.equals("")){ 
        JOptionPane.showMessageDialog(null,"Please insert Username and Password"); 
       } 
       else { 

        JOptionPane.showMessageDialog(null,"Wrong Username/Password"); 
        userField.setText(""); 
        passField.setText(""); 
        userField.requestFocus(); 
       } 
      } catch (IOException d) { 
       d.printStackTrace(); 
      } 
     } 
    }); 


    buttonNewUser.addActionListener(new ActionListener(){ 
     public void actionPerformed(ActionEvent e) { 
      NewUser user = new NewUser(); 
      dispose(); 
     } 
    }); 


} 

} 




    class ImagePanel extends JPanel{ 

    private BufferedImage image; 

    public ImagePanel(){ 
     setOpaque(true); 
     setBorder(BorderFactory.createLineBorder(Color.BLACK,5)); 
     try 
     { 
      image = ImageIO.read(new URL("https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcQ8F5S_KK7uelpM5qdQXuaL1r09SS484R3-gLYArOp7Bom-LTYTT8Kjaiw")); 
     } 
     catch(Exception e) 
     { 
      e.printStackTrace(); 
     } 

     GUI show = new GUI(); 
     show.createGUI(); 
    } 


    @Override 
    public Dimension getPreferredSize(){ 
     return (new Dimension(430, 300)); 
    } 

    public void paintComponent(Graphics g){ 
     super.paintComponent(g); 
     g.drawImage(image,0,0,this); 
    } 
} 
+0

登錄碼和新菜單? – CoderNeji

+0

你的代碼完整亂七八糟。建議你從頭開始。首先創建只顯示空白幀的應用程序。看看它,直到你理解每一個代碼。然後添加圖像。再看一遍。然後添加一個什麼也不做的按鈕。重複,直到你完成。你的代碼表明你不明白你寫的是什麼。我不想冒犯你,但你需要學習不只是從互聯網複製粘貼隨機代碼,但**瞭解**它做了什麼。 – talex

+0

事情是我編碼登錄,但當我需要做一個背景時出現問題。有什麼時候我感到困惑 – lfarr

回答

0

我看來,像你有一個類login(這是一個JFrame,但從來沒有作爲一個)。此登錄類創建一個新的通用「歡迎」JFrame,其中ImagePanel。 ImagePanel調用GUI.createGUI()(它會創建另一個JFrame,但不會顯示它),然後對它完全沒有任何影響,因此它立即丟失。

代碼中有很多JFrames。一個應該夠了,也許兩個。但是你有三個:登錄,gui和一個簡單的新JFrame()。

+0

所以我該怎麼做呢?謝謝 – lfarr

+0

我建議@talex已經建議了什麼。 –

+0

@lfarr如果你創建了另一個框架並沒有顯示它,那麼在'JFrame'中添加'setVisible(true)' – Rahul