JTabbedPane - Как я могу установить свойства при выборе новой вкладки? - PullRequest
0 голосов
/ 13 ноября 2018

Я новичок в Java и Swing, если кто-то может указать мне направление, это будет оценено.

Это один класс, строящий мою раму. Я считаю, что должен использовать ChangeListener, который вы видите добавленным, но ничего не сделал, кроме как скопировать метод с этого сайта. Все, что я хочу сделать с моими вкладками, это установить их обратно в их состояние по умолчанию, если щелкнуть другую вкладку ... просто означает установить текстовые поля и выбор списка обратно в состояние и т. Д.

Будет ли метод, который мне нужен для этого, быть в моих классах для панелей или рамки? Нужно ли мне что-то менять? Я искал ответ, но не нашел того, что искал.

public class GUIFrame extends JFrame implements ChangeListener {

JTabbedPane tabs;

public GUIFrame(String title) {
    JFrame frame = new JFrame(title);
    Container c = frame.getContentPane();
    pack();
    buildGUI(c);
    setFrameAttributes(frame);
}
private void buildGUI(Container c) {
    tabs = new JTabbedPane(JTabbedPane.TOP, JTabbedPane.WRAP_TAB_LAYOUT);
    MedicalSystemIO medLogs = new MedicalSystemIO();
    c.setLayout(new BorderLayout());
    c.add("Center", tabs);
    tabs.addTab("Specialty", new SpecialtyPanel(medLogs.getListOfSpecialties()));
    tabs.addTab("Doctor", new DoctorPanel(medLogs.getListOfDoctors()));
    tabs.addTab("Patient", new PatientPanel(medLogs.getListOfPatients()));
    tabs.addTab("Treatment", new TreatmentPanel(medLogs.getListOfTreatments(), medLogs.getListOfPatients()));
    tabs.addChangeListener(this);

}

@Override
public void stateChanged(ChangeEvent e) {
    // TODO Auto-generated method stub
    if(e.getSource() instanceof JTabbedPane)
        tabs = (JTabbedPane) e.getSource();
        System.out.println("Selected paneNo : " + tabs.getSelectedIndex());
}

Это метод из класса "public TreatmentPanel (...)". Я не включил большинство методов, но некоторые из них - ActionListener и ListSelectionListener.

    private void buildPanel(ArrayList<Treatment> treatments, ArrayList<Patient> patients) {

    setLayout(new BorderLayout());

    model = new DefaultListModel<Treatment>();
    list = new JList<Treatment>(model);
    list.setModel(model);
    list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    list.setSize(20,80);
    list.setFixedCellWidth(150);
    scroll = new JScrollPane(list, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
            JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);

    this.patients = new ArrayList<Patient>(patients);
    this.treatments = new ArrayList<Treatment>();

    JPanel jpaInput = createInputPanel();
    JPanel jpaProcess = createProcessPanel();
    JPanel jpaOutput = createOutputPanel();

    add("North", jpaInput);
    add("South", jpaProcess);
    add("Center", jpaOutput);
}
...