Witam. Pracuję nad gui, w którym jest pozagnieżdżanych kilka frame'ów/labelów/listenerów. Jedno z okien wygląda tak: na górze umieszczony jest JMenu "Zmień listę", następnie w nim są wypisane kolejne kategorie prowadzących/grup/sal, itd. Kliknięcie którejś z listy powoduje pojawienie się JLista z dostępnymi buttonami – listSelectionListener umożliwia nam wejście w konkretną rubrykę naszej listy, celem zobaczenia szczegółów. Wszystko działa jak należy, poza samym rozmieszczeniem obiektów – menu wyświetla się z lewej strony i przykrywa naszą listę (dlaczego z lewej? Nie mam pojęcia. Powinno u samej góry). Lista natomiast uaktywnia się dopiero po zabawą kursorem i rozdzielczością – wcześniej jest przykryta przez JMenu. Powiem szczerze, że nie mam żadnego doświadczenia w rozmieszczaniu tych wszystkich obiektów. Prosiłbym o pomoc lub małą podpowiedź. Poniżej zamieszczam kod. Celem jest, aby nasze menu było na górze i w zależności od wybranej pozycji, pojawiała się lista typowa dla danej kategorii, gdzie po kliknięciu w daną kategorię pojawią się odpowiednie dla niej obiekty (np. wybór konkretnego prowadzącego i jego dane personalne).
public class wprowadzDane extends JFrame implements ActionListener {
JFrame JFwprowadzDane = new JFrame("Wprowadź dane");
JMenuItem JMIwyswietlProwadzacych;
JMenuItem JMIwyswietlGrupy;
JMenuItem JMIwyswietlSale;
JMenuItem JMIwyswietlZajecia;
JMenuItem JMIwyjscie;
JList<wyswietlProwadzacych> JLprowadzacy = new JList<>();
DefaultListModel<wyswietlProwadzacych> model = new DefaultListModel<>();
public wprowadzDane() {
JFwprowadzDane.setVisible(true);
JFwprowadzDane.setSize(600, 400);
JFwprowadzDane.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
// główne menu
JMenuBar JMBARwprowadzDane = new JMenuBar();
JFwprowadzDane.setJMenuBar(JMBARwprowadzDane);
// kategorie menu
JMenu JMpodgladDanych = new JMenu("Zmień listę");
JMBARwprowadzDane.add(JMpodgladDanych);
// obiekty podkategorii
JMIwyswietlProwadzacych = new JMenuItem("Prowadzący");
JMIwyswietlGrupy = new JMenuItem("Grupy");
JMIwyswietlSale = new JMenuItem("Sale");
JMIwyswietlZajecia = new JMenuItem("Zajęcia");
JMIwyjscie = new JMenuItem ("Wyjście");
// dodawanie obiektów do podkategorii
JMpodgladDanych.add(JMIwyswietlProwadzacych);
JMpodgladDanych.add(JMIwyswietlGrupy);
JMpodgladDanych.add(JMIwyswietlSale);
JMpodgladDanych.add(JMIwyswietlZajecia);
JMpodgladDanych.addSeparator();
JMpodgladDanych.add(JMIwyjscie);
// dodawanie do actionListenerów
JFwprowadzDane.add(JMBARwprowadzDane);
JMIwyswietlProwadzacych.addActionListener(this);
JMIwyjscie.addActionListener(this);
JMIwyjscie.setAccelerator(KeyStroke.getKeyStroke("ctrl X"));
// lista prowadzących, ustawienia
}
@Override
public void actionPerformed(ActionEvent e) {
Object Zrodlo = e.getSource();
if (Zrodlo == JMIwyswietlProwadzacych) {
JLprowadzacy.setModel(model);
JLabel JLBprowadzacy = new JLabel();
JPanel JPprowadzacy = new JPanel();
JSplitPane JSprowadzacy = new JSplitPane();
JSprowadzacy.setSize(600,200);
JSprowadzacy.setVisible(true);
JSprowadzacy.setLeftComponent(new JScrollPane(JLprowadzacy));
JPprowadzacy.add(JLBprowadzacy);
JSprowadzacy.setRightComponent(JPprowadzacy);
model.addElement(new wyswietlProwadzacych(1, "Robert", "Kowalski"));
model.addElement(new wyswietlProwadzacych(2, "Robert", "Kubicki"));
JLprowadzacy.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
wyswietlProwadzacych WP = JLprowadzacy.getSelectedValue();
JLBprowadzacy.setText("Indeks: " + WP.id + "\nImię: " + WP.imie + "\nNazwisko: " + WP.nazwisko);
}
});
JFwprowadzDane.add(JSprowadzacy);
}
if (Zrodlo == JMIwyjscie) {
JFwprowadzDane.dispose();
}
}