2014-10-06 3 views
-1

моя текущая программа принимает текст из некоторых JTextFields и добавляет его в файл для отслеживания лекарств. Что я хочу сделать, добавляет еще одну кнопку в нижней части программы, которая откроет второй jframe для отображения документов, которые уже задокументированы, но все попытки были жестоко безуспешными. Ниже приведен код, с которым я сейчас работаю.Как открыть вторую jframe из текущей?

Большое спасибо.

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 
import java.io.File; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.io.PrintWriter; 


@SuppressWarnings({ "serial" }) 
public class MedGUITest extends JFrame { 

    private JLabel medName; 
    private JLabel medTime; 
    private JLabel medDose; 
    private JLabel finished; 

    private JTextField textFieldMed; 
    private JTextField textFieldTime; 
    private JTextField textFieldDose; 

    private JButton submitButton; 
    private JButton meds; 

    public MedGUITest(){ 
     setLayout(new FlowLayout()); 

     medName = new JLabel("Type Medication Here:"); 
     add(medName); 

     textFieldMed = new JTextField("",15); 
     add(textFieldMed); 

     medDose = new JLabel("Type Medication Dose:"); 
     add(medDose); 

     textFieldDose = new JTextField("",15); 
     add(textFieldDose); 

     medTime = new JLabel("Type Medication Time:"); 
     add(medTime); 

     textFieldTime = new JTextField("",15); 
     add(textFieldTime); 

     submitButton = new JButton("Click Here to Add"); 
     event e = new event(); 
     submitButton.addActionListener(e); 
     add(submitButton); 

     meds = new JButton("Click Here to see meds"); 
     event2 r = new event2(); 
     meds.addActionListener(r); 
     add(meds); 

     finished = new JLabel(""); 
     add(finished); 
    } 


    public class event implements ActionListener { 

     public void actionPerformed(ActionEvent e){ 
      String medName = textFieldMed.getText(); 
      String medDose = textFieldDose.getText(); 
      String medTime = textFieldTime.getText(); 

      File med = new File("med.txt"); 

      try(PrintWriter out= new PrintWriter(new FileWriter(med,true))) { 
       out.println("Medication: " + medName + " " +"Dosage: "+ medDose + " Mg"+ " " +"Time of day: "+ medTime); 
       finished.setText("Your Med has been added"); 
      } catch (IOException e1) { 
       e1.printStackTrace(); 
      } 

     } 
    } 

    public class event2 implements ActionListener{ 

     public void actionPerformed(ActionEvent e){ 

     } 

    } 

    public static void main(String args[]) throws IOException{ 

    int winWidth = 300; 
    int winLength = 300; 

    MedGUITest gui = new MedGUITest(); 
    gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    gui.setSize(winWidth, winLength); 
    gui.setVisible(true); 
    gui.setTitle("Standard GUI"); 


    } 

} 
+1

См. [Использование нескольких JFrames, Good/Bad Practice?] (Http://stackoverflow.com/q/9554636/418556) –

+0

* «.. все попытки были жестоко безуспешными». * Этот код показывает только любая ссылка на один кадр. Покажите нам одну из ваших попыток, а не публикацию шаблона для других. –

+0

Взгляните на [Как сделать диалоги] (http://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html) – MadProgrammer

ответ

3

Возможно, вы захотите использовать JDialog вместо другого JFrame. Вы просто настроили его так же, как и любой другой JFrame или JDialog. Вы создаете кадр/диалог, добавляете компоненты, а затем вызываете пакет(), а затем setvisible (true). Вы просто хотите убедиться, что вы не устанавливаете JFrame.setDefaultCloseOperation() для закрытия, когда закрываете второй JFrame.

Мне легче настроить мои классы для подкласса JPanel вместо JFrame, поэтому его легче использовать в других местах.

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