- Mam problem z suwakami mianowicie. Jak dodam je do jakiegoś obrazka lub czegokolwiek innego i napisze okno.setLayout(null); jak się nie myle odpowiada to za autorozmieszczenie, to znika mi wszystko w oknie a jak usunę to okno.setLayout(null); to widać suwaki ale ale jest autorozmieszczenie którego nie chcę. Jak to rozwiązać.
- Istnieje polecenie aby zamknąć bieżące okno a nie wyjść z programu?
- setVisible(false);
- Co nazywasz suwakiem, JSlider czy elementy JScrollPane? Najlepiej pokaż kod, bo, imho, fantazjujesz.
w.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
JFrame okno=new JFrame("Dane"); //tworzenie okna
okno.setSize(800,600);
//okno.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
okno.setLayout(null); // wylaczamy autorozmieszczanie
okno.setVisible(true);
String dane=" ";
try
{
FileReader plik = new FileReader ("studenci.txt");
BufferedReader odczyt = new BufferedReader (plik);
while (dane!=null)
{
a=a+1;
dane=odczyt.readLine();
if(dane!=null)
{
JLabel napis=new JLabel(a+". "+dane);
napis.setBounds(50,a*15,500,50);
okno.getContentPane().add(napis);
}
}
odczyt.close();
a=0;
}catch (IOException w)
{
JOptionPane.showMessageDialog(null,"Blad odczytu pliku tekstowego");
}
}
});
JScrollPane gdy chcĘ tutaj dodać suwaki okno.getContentPane().add(new JScrollPane (napis));
I jeżeli jest włączone okno.setLayout(null); to w ogóle okno się nie pokazuje jeżeli natomiast wyłącze to autorozmieszczenie to suwaki się pojawiają ale wtedy wczytane napisy nie są jeden pod drugim.
To
okno.getContentPane().add(new JScrollPane (napis));
jest pozbawione sensu. JScrollPane ma zawierać wszystkie etykiety, a nie jedną. Wybierz jedną z dwóch możliwości:
- utwórz JPanel, p a obiekty JLabel dodawaj do panelu pan, na końcu okno daj
okno.add(new JScrollPane(pan)); - utwórz pole tekstowe JTextArea ta, zamiast
JLabel napis=new JLabel(a+". "+dane);
napis.setBounds(50,a*15,500,50);
daj ta.append(a+"."+dane+"\n");, na końcu daj okno.add(new JScrollPane(ta));
a co do zamknięcia konkretnego okna. Jak to zrobić?
Jeśli chcesz ukryć bez udziału użytkownika, to okno.SetVisible(false). Jeżeli okno ma zniknąć po "kliknięciu w krzyżyk", to
okno.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
Powinieneś też zmienić ten fragment:
public void actionPerformed(ActionEvent e)
{
JFrame okno=new JFrame("Dane"); //tworzenie okna
okno.setSize(800,600);
//Zmienna okno winna być składową klasy (a nie zmienną lokalną)
//na taki
public void actionPerformed(ActionEvent e)
{
if(okno==null)
{
JFrame okno=new JFrame("Dane"); //tworzenie okna
okno.setSize(800,600);
//odczytanie pliku ................
}
okno.setVisible(true);
Zrobiłem tak jak radziłeś z tym polem tekstowym ale nie uwidaczniają się dalej te suwaki a po drugie wypisuje tylko pierwszą linię z pliku.
Suwaki się pokażą jak bedą porzebne. Jak chcesz żeby były zawsze, to
new JScrollPane(ta,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
Na pewno coś pokręciłeś z dodawaniem do pola tekstowego.