W okienku jest panel z narysowanym tlem (jpg) i JTextField. Muszę zmienić tło i tylko tło. Jak mi się uda podmienić to JTextField znika, tzn. jest caly czas ale go nie widac, dopiero jak sie cos tam wpisze to sie pojawia. Jak to zrobic. Probowalem zmieniac rysunek w samym panelu, zmieniac panel, txtfielda dodawac w roznych miejscach ale najwiecej co osiagnalem to tak jak opisalem. Jak to zrobic? Z góry dzięki.
1
- Pomysł by w metodzie paint(..) tworzyć obrazek jest nierozsądny, metoda ta jest wywoływana przy każdej konieczności odrysowania: użytkownik wyciągnął okno na wierzch, przesunął okno, zmienił rozmiar.... Obiekt typu Image winien być tworzony raz w konstruktorze, ewentualnie podmieniany.
- Jeżeli chcesz używek obrazka jako tła, to lepiej to zrobić przez wstawienie JLabel. Poniżej program, w którym tło jest w etykiecie i jest może być zmienione przez użytkownika.
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Tlo extends JFrame implements ActionListener
{
private JLabel bg;
private boolean first=true;
//------------------------
public static void main(String[] args)
{
new Tlo();
}
//------------------------
public Tlo()
{
setLayout(null);
setPreferredSize(new Dimension(750,406));
JButton b=new JButton("Abrakadabra");
b.setBounds(10,10,120,25);
b.addActionListener(this);
add(b);
JTextField tf=new JTextField(10);
tf.setBounds(10,210,120,25);
add(tf);
bg=new JLabel(new ImageIcon("images/ayers.jpeg"));
bg.setOpaque(true);
bg.setBounds(0,0,750,406);
add(bg);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setLocationRelativeTo(null);
setVisible(true);
}
//------------------------
public void actionPerformed(ActionEvent ae)
{
remove(bg);
if(first)
{
bg=new JLabel(new ImageIcon("images/ayers2.jpeg"));
bg.setOpaque(true);
bg.setBounds(0,0,750,406);
}
else
{
bg=new JLabel(new ImageIcon("images/ayers.jpeg"));
bg.setOpaque(true);
bg.setBounds(0,0,750,406);
}
add(bg);
first=!first;
repaint();
}
}
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.