2013-03-06 2 views
0

На самом деле я новичок в java. Я хочу знать, как связать два кадра. Я сделал два разных java-файла, которые выглядят просто. Но до сих пор я не могу ее решить. Он должен открыть рамку приветствия, нажав кнопку «Далее» в Enter.java. Кто-нибудь может мне помочь?подключение двух java-фреймов

Вот мой код:

Enter.java 

import java.awt.FlowLayout; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JTextField; 

public class Enter extends JFrame { 

public Enter() { 
// TODO Auto-generated constructor stub 

setLayout(new FlowLayout(FlowLayout.LEFT, 10, 20)); 

add(new JLabel("Name")); 
add(new JTextField(8)); 
add(new JLabel("Address")); 
add(new JTextField(15)); 
add(new JLabel("Surname")); 
add(new JTextField(8)); 
add(new JLabel("Phone")); 
add(new JTextField(8)); 
add(new JButton("Next")); 
} 


/** 
* @param args 
*/ 
public static void main(String[] args) { 
// TODO Auto-generated method stub 
    Enter myProg = new Enter(); 
myProg.setTitle("Ceng 344 - Lab 7"); 
myProg.setSize(450, 400); 
myProg.setLocationRelativeTo(null); 
myProg.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
myProg.setVisible(true); 
} 

} 

Welcome.java 
import java.awt.FlowLayout; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JTextField; 

public class welcome extends JFrame { 

public welcome() { 
// TODO Auto-generated constructor stub 

setLayout(new FlowLayout(FlowLayout.LEFT, 10, 20)); 

add(new JLabel("Welcome")); 
} 


/** 
* @param args 
*/ 
public static void main(String[] args) { 
// TODO Auto-generated method stub 
welcome myProg = new welcome(); 
myProg.setTitle("Ceng 344 - Lab 7"); 
myProg.setSize(450, 400); 
myProg.setLocationRelativeTo(null); 
myProg.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
myProg.setVisible(true); 
} 

} 
+0

См [Использование нескольких JFrames, хороший/плохой практике?] (Http://stackoverflow.com/a/ 9554657/418556) –

ответ

0

Если вам нужно вызвать Welcome Кадр из Next кнопки, так что вы можете добавить действие на эту кнопку.

Попробуйте это:

import java.awt.FlowLayout; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JTextField; 

public class Main extends JFrame { 

    public Main() { 
// TODO Auto-generated constructor stub 

     setLayout(new FlowLayout(FlowLayout.LEFT, 10, 20)); 

     add(new JLabel("Name")); 
     add(new JTextField(8)); 
     add(new JLabel("Address")); 
     add(new JTextField(15)); 
     add(new JLabel("Surname")); 
     add(new JTextField(8)); 
     add(new JLabel("Phone")); 
     add(new JTextField(8)); 
     JButton next = new JButton("Next"); 
     add(next); 
     next.addActionListener(new java.awt.event.ActionListener() { 

      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       NextActionPerformed(evt); 
      } 

      private void NextActionPerformed(ActionEvent evt) { 
       welcome myProg = new welcome(); 
       myProg.setTitle("Ceng 344 - Lab 7"); 
       myProg.setSize(450, 400); 
       myProg.setLocationRelativeTo(null); 
       myProg.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       myProg.setVisible(true); 
      } 
     }); 



    } 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
// TODO Auto-generated method stub 
     Main myProg = new Main(); 
     myProg.setTitle("Ceng 344 - Lab 7"); 
     myProg.setSize(450, 400); 
     myProg.setLocationRelativeTo(null); 
     myProg.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     myProg.setVisible(true); 
    } 
} 

class welcome extends JFrame { 

    public welcome() { 
// TODO Auto-generated constructor stub 

     setLayout(new FlowLayout(FlowLayout.LEFT, 10, 20)); 
     add(new JLabel("Welcome")); 
    } 
    /** 
    * @param args 
    */ 
} 

я удалить главный класс Добро пожаловать, и добавить его содержимое в методом NextActionPerformed

+0

Спасибо, что сработали. Но вы можете объяснить мне этот код. Что оно делает? private void NextActionPerformed (ActionEvent evt) { welcome myProg = new welcome(); myProg.setTitle («Ceng 344 - Lab 7»); myProg.setSize (450, 400); myProg.setLocationRelativeTo (null); myProg.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); myProg.setVisible (true); } –

+0

Итак, вам нужно добавить действие к следующей кнопке, когда вы нажмете на нее, она вызовет другой фрейм, поэтому я создаю кнопку «Далее» ** JButton next = new JButton («Next»); **, затем добавляю действие к нему, это действие называется ** NextActionPerformed **, этот метод называется ** Welcome ** Frame –

+0

Эта часть, которую вы называете ее ** Welcome ** Основной метод, поэтому мне не нужен он в основном методе , это действие ** Next ** button –

0

Прежде всего

  1. Вам нужно добавить ActionListener к JButton
  2. Вы можете установить про (JFrame) внутри конструктора.
  3. Вам не нужно main() в welcome.java, только `конструктор сделает .

Enter.java

import java.awt.FlowLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JTextField; 
public class Enter extends JFrame implements ActionListener { 
public Enter(){ 
    setLayout(new FlowLayout(FlowLayout.LEFT, 10, 20)); 
    add(new JLabel("Name")); 
    add(new JTextField(8)); 
    add(new JLabel("Address")); 
    add(new JTextField(15)); 
    add(new JLabel("Surname")); 
    add(new JTextField(8)); 
    add(new JLabel("Phone")); 
    add(new JTextField(8)); 
    JButton next = new JButton("Next"); 
    next.addActionListener(this); 
    add(next); 
} 

public void actionPerformed(ActionEvent ae){ 
    //if your frame contains more than one button then you can check which button is clicked using ae.getSource() or using ae.getActionCommand() 
    new Welcome(); 
} 
public static void main(String[] args) { 
    Enter myProg = new Enter(); 
    myProg.setTitle("Ceng 344 - Lab 7"); 
    myProg.setSize(450, 400); 
    myProg.setLocationRelativeTo(null); 
    myProg.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    myProg.setVisible(true); 
} 
} 

// Добро пожаловать

import java.awt.FlowLayout; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
public class Welcome extends JFrame { 
    public Welcome() { 
     setLayout(new FlowLayout(FlowLayout.LEFT, 10, 20)); 
     add(new JLabel("Welcome")); 
     setTitle("Ceng 344 - Lab 7"); 
     setSize(450, 400); 
     setLocationRelativeTo(null); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setVisible(true); 
    } 
} 
+0

Я просто смущен. Нужно ли редактировать только enter.java? –

+0

@ user1598040, если вы отредактируете в 'Enter.java', тогда он также будет работать, но нам не нужно реализовывать' main() 'в каждом классе java. Мы просто реализуем 'main()' в стартовом классе. – Bhushan

+0

не работает. Я пробовал, но он показывает ошибку –

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