2015-10-02 2 views
0

Я как бы изучаю Java. Я пытался показать несколько кнопок в одном кадре, используя JFrame, но вторая кнопка не отображается на экране. Исключений и ошибок не происходит.Невозможно отобразить несколько кнопок в одном кадре

Рамка появляется только с кнопкой «идти». Это экран входа для зарегистрированных пользователей с текстовым полем и двумя кнопками. Кнопка «назад», которая не становится видимой, просто используется для возврата к предыдущему кадру.

Первоначально я думал, что проблема связана с функцией setBounds. Также попробовали установить кнопку visible=true. Это тоже не работает. Пожалуйста, помогите мне исправить мой код ниже:

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

public class askuser implements ActionListener { 

    int x, y, x1, y1; 
    Font f; 
    JLabel l1; 
    JTextField user; 
    JButton b1; 
    JButton b2; 
    RandomAccessFile file; 
    //Enumeration<String> names; 
    //Hashtable<String,String> tempdb=new Hashtable<String,String>(); 
    public JFrame fref; 
    public JFrame frame; 
    String str1, str2, str3, str4; 
    FileWriter file_write_uid = null; 
    int k = 0, count = 0; 
    boolean flag = false; 

    askuser(JFrame jfrm) { 
     Toolkit tk = Toolkit.getDefaultToolkit(); 

     Dimension d = tk.getScreenSize(); 
     x = d.width; 
     y = d.height; 
     System.out.println("in askuser.java"); 
     fref = jfrm; 
     fref.setVisible(false); 
     frame = new JFrame("now login"); 
     //declaration 
     frame.setSize(x, y); 
     frame.setLayout(null); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     f = new Font("Arial", Font.PLAIN, 16); 
     Container c = frame.getContentPane(); 
     Color c1 = new Color(243, 238, 207); 
     Color c2 = new Color(227, 214, 134); 
     c.setBackground(c2); 
     l1 = new JLabel("Enter the user name :"); 
     user = new JTextField(""); 
     b1 = new JButton("go"); 
     b2 = new JButton("Back"); 
     l1.setFont(f); 
     b1.setFont(f); 
     b2.setFont(f); 
     user.setFont(f); 
     b1.setBackground(c1); 
     b2.setBackground(c1); 
     user.setBackground(c1); 
     c.add(l1); 
     c.add(user); 
     c.add(b1); 
     x1 = (int) ((x/2.5) - 100); 
     y1 = (int) ((y/2.5) - 60); 
     b1.addActionListener(this); 
     b2.addActionListener(this); 
     user.addActionListener(this); 
     l1.setBounds(x1, y1, 150, 20); 
     user.setBounds(x1 + 150, y1, 150, 40); 
     b1.setBounds(x1 + 100, y1 + 150, 150, 40); 
     b1.setBounds(x1 + 200, y1 + 150, 150, 40); 

     frame.setVisible(true); 
    }//constr 

    public void actionPerformed(ActionEvent ae) { 
     String what2 = ae.getActionCommand(); 
     if (what2.equals("Back")) { 
      new RL(fref); 
     } 

     flag = false; 

     System.out.println("in askuser.java ap()"); 

     str1 = user.getText(); 
     System.out.println("got login id" + str1); 

     if (str1.equals("")) {//System.out.println("please enter a user name"); 
      CustomDialog myDialog = new CustomDialog(frame, true, "please enter a user name"); 
      flag = true; 
      user.setText(""); 
     }//if 

     if (flag == false) { 
      try { 

       file = new RandomAccessFile("rafDB.txt", "r"); 

       do { 
        str2 = file.readUTF(); 
        str3 = file.readUTF(); 
        str4 = file.readUTF(); 
       } while (!str1.equals(str2)); 

      }//try 
      catch (Exception e) { 
      } 

      System.out.println(str1); 
      System.out.println(str2); 

      if (!str2.equals(str1)) { 
       CustomDialog myDialog = new CustomDialog(frame, true, "user not exist"); 
       user.setText(""); 

      }//if 

      try { 

       if (str2.equals(str1)) { 

        file_write_uid = new FileWriter("store_uid.txt"); 

        while (count < str2.length()) { 
         count++; 
         file_write_uid.write(str2.charAt(k)); 
         k++; 
        }//while 

        //file_write_uid.write(str2.toCharArray()); 
        new Pswddiv(str3.toCharArray(), frame);//pass the password of user 
       }//if 

      }//try 
      catch (Exception e) { 
      } 

      try { 
       file_write_uid.close(); 
       file.close(); 
      }//try 
      catch (Exception e) { 
      } 

     }//flag if 

    }//ap() 

} 

    //askuser 
+0

вы никогда не добавляете 'b2' в frame.также вы не установили границы в' b2'. Вы установили границы b1 дважды .mistake? . но почему нулевой макет .use layout manager –

ответ

1

избавиться от пустых макетов и SetBounds (...) методы.

Самый простой способ - использовать JPanel с FlowLayout. Прочтите раздел из учебника Swing по How to Use FlowLayout для рабочих примеров.

Начните с рабочих примеров и внесите изменения. Ваш код будет лучше структурирован, если вы будете следовать примерам учебника.

Смежные вопросы