학생, 대학 및 출구에 3 개의 메뉴 항목이있는 작은 프로그램을 만들려고합니다. 거의 완성되었지만 컴파일되지만 학생과 대학 메뉴 항목은 내부 자바 패널을 열지 못합니다.menuItems가 클릭되었을 때 Java 내부 패널이 열리지 않습니다
는 대학에 대한 패널을 가진 메뉴 데스크톱 응용 프로그램을 작성하는 프로그램을 작성 :
는 다음과 같이 할당 문제는 읽어 내 자바 2 검토를위한 별도의 신용 질문 (정말 포인트가 필요합니다) 그 학생용 패널. 대학 패널에는 이름과 상태 코드가 있습니다. 학생 패널에는 이름과 ID가 있습니다. 사용자는 각각 University 및 Student의 이름과 코드 또는 ID를 입력 할 수 있습니다. 각 패널에는 데이터를 승인하고 필드를 지우고 포커스를 다시 설정하는 제출 버튼이 있습니다. 각 패널에는 수표 입력 방법이 있습니다. Id는 정수입니다. 대학 또는 학생 데이터는 각 해당 arraylist에 배치됩니다.
나는 이것을 기반으로 한 실례를 가지고 있으며, 내가 잘못한 곳을 알아낼 수 없다. 학생과 대학을 클릭하면 패널이 열리지 않습니다.
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;
public class Question4 extends JFrame
{
private JDesktopPane theDesktop;
ArrayList<Student> studentList = new ArrayList<Student>();
ArrayList<University> universityList = new ArrayList<University>();
public static void main(String args[])
{
Question4 q4 = new Question4();
q4.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
q4.setSize(400,400);
q4.setLocationRelativeTo(null);
q4.setVisible(true);
}
public Question4()
{
super("Question 4");
theDesktop = new JDesktopPane();
JMenuBar bar = new JMenuBar();
JMenu menu = new JMenu("Menu");
JMenuItem studentItem = new JMenuItem("Student");
JMenuItem universityItem = new JMenuItem("University");
JMenuItem exitItem = new JMenuItem("Exit");
exitItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
System.exit(0);
}
});
studentItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
JInternalFrame sFrame = new JInternalFrame("Student",true,true,true);
AddStudentPanel sPanel = new AddStudentPanel();
sFrame.add(sPanel);
sFrame.pack();
theDesktop.add(sFrame);
sFrame.setVisible(true);
}
});
universityItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
JInternalFrame uFrame = new JInternalFrame("University",true,true,true);
AddUniversityPanel uPanel = new AddUniversityPanel();
uFrame.add(uPanel);
uFrame.pack();
theDesktop.add(uFrame);
uFrame.setVisible(true);
}
});
menu.add(studentItem);
menu.add(universityItem);
menu.add(exitItem);
bar.add(menu);
setJMenuBar(bar);
add(theDesktop);
}
private class AddStudentPanel extends JPanel
{
private JLabel nameLabel;
private JLabel idLabel;
private JLabel submitLabel;
private JTextField nameField;
private JTextField idField;
private JButton submitButton;
public AddStudentPanel()
{
setLayout(new GridLayout (3,2));
nameLabel = new JLabel("Enter Name");
idLabel = new JLabel("Enter ID");
submitLabel = new JLabel("Submit");
nameField = new JTextField(15);
idField = new JTextField(15);
StudentHandler sHandler = new StudentHandler();
submitButton.addActionListener(sHandler);
add(nameLabel);
add(nameField);
add(idLabel);
add(idField);
add(submitLabel);
add(submitButton);
}
class StudentHandler implements ActionListener
{
public void actionPerformed(ActionEvent ae)
{
if(ae.getSource() == submitButton)
{
if(checkStudentInput())
{
studentList.add(new Student(nameField.getText(),Integer.parseInt(idField.getText())));
nameField.setText("");
idField.setText("");
nameField.requestFocus();
}
}
}
public boolean checkStudentInput()
{
boolean input = true;
if(nameField.getText().isEmpty())
{
JOptionPane.showMessageDialog(null,"Please enter a name");
nameField.requestFocus();
input = false;
}
else if(idField.getText().isEmpty())
{
JOptionPane.showMessageDialog(null,"Please enter an id");
idField.requestFocus();
input = false;
}
else
{
try
{
Integer.parseInt(idField.getText());
}catch(NumberFormatException nfe)
{
JOptionPane.showMessageDialog(null,"Please enter an integer for id");
idField.setText("");
idField.requestFocus();
input = false;
}
}
return input;
}
}
}
private class AddUniversityPanel extends JPanel
{
private JLabel nameLabel;
private JLabel codeLabel;
private JLabel submitLabel;
private JTextField nameField;
private JTextField codeField;
private JButton submitButton;
public AddUniversityPanel()
{
setLayout(new GridLayout (3,2));
nameLabel = new JLabel("Enter Name");
codeLabel = new JLabel("Enter State Code");
submitLabel = new JLabel("Submit");
nameField = new JTextField(15);
codeField = new JTextField(15);
UniversityHandler uHandler = new UniversityHandler();
submitButton.addActionListener(uHandler);
add(nameLabel);
add(nameField);
add(codeLabel);
add(codeField);
add(submitLabel);
add(submitButton);
}
class UniversityHandler implements ActionListener
{
public void actionPerformed(ActionEvent ae)
{
if(ae.getSource() == submitButton)
{
if(checkUniversityInput())
{
universityList.add(new University(nameField.getText(),Integer.parseInt(codeField.getText())));
nameField.setText("");
codeField.setText("");
nameField.requestFocus();
}
}
}
public boolean checkUniversityInput()
{
boolean input = true;
if(nameField.getText().isEmpty())
{
JOptionPane.showMessageDialog(null,"Please enter a name");
nameField.requestFocus();
input = false;
}
else if(codeField.getText().isEmpty())
{
JOptionPane.showMessageDialog(null,"Please enter an State Code");
codeField.requestFocus();
input = false;
}
else
{
try
{
Integer.parseInt(codeField.getText());
}catch(NumberFormatException nfe)
{
JOptionPane.showMessageDialog(null,"Please enter an integer for State Code");
codeField.setText("");
codeField.requestFocus();
input = false;
}
}
return input;
}
}
}
}
제출 버튼이 문제였습니다. 초기화 버튼을 간과했다고 생각할 수 없습니다. 두 번째 눈이 필요했습니다. 감사합니다. –
당신을 진심으로 환영합니다. 나는 당신이'setContentPane'을 사용해야한다고 생각했지만, 분명히'add'도 잘 동작합니다. :) – Steinar