3 düğme oluşturduk. Her biri bir JFrame'de iki kez görüntülenir. Çerçevenin arka planını değiştirirken sorun yaşıyorum. ActionListeners'ı ayarlıyorum ama tıklama üzerine hiçbir şey değişmiyor. Biraz yardım isteyebilir miyim. Eğer beklendiği gibiAyar Eylem Dinleyici ve arka plan değiştirme
public class MyButtons extends JPanel {
public static JFrame frame;
private JButton Red = new JButton("Red");
private JButton Green = new JButton("Green");
private JButton Blue = new JButton("Blue");
public void InitializeButton()
{
Blue.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
frame.setBackground(Color.BLUE);
}
});
Green.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
frame.setBackground(Color.GREEN);
}
});
Red.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
frame.setBackground(Color.RED);
}
});
}
public MyButtons() {
InitializeButton();
add(Red);
add(Green);
add(Blue);
}
public static void main(String[] args) {
frame = new JFrame();
JPanel row1 = new MyButtons();
JPanel row2 = new MyButtons();
row1.setPreferredSize(new Dimension(250, 100));
row2.setPreferredSize(new Dimension(250, 100));
frame.setLayout(new GridLayout(3,2));
frame.add(row1);
frame.add(row2);
frame.pack();
frame.setVisible(true);
}
}
Görünüşe göre 1) çerçeve tamamen panellerle kaplanmış veya 2) 'setBackground (..) 'çağrısı çerçevenin içerik bölmesine aktarılmıyor. - İki paneli, referans tuttuğunuz ve BG'yi değiştirebileceğiniz üçüncü bir panele eklemeniz daha iyi bir strateji olacaktır. –
ActionListeners'ınızda yanlış bir şey yoktur. Sorun, ContentPane'inizin arka planının GridLayout tarafından kapsandığı gerçeğinde yatmaktadır. Programınızı çalıştırarak, herhangi bir tuşa basarak ve ardından JFrame'i yeniden boyutlandırarak deneyin. Yeniden boyutlandırılana kadar arka plan rengini bir süre için göreceksiniz. Grafik kartınız bunun için çok hızlıysa, şunun gibi bir şey ekleyin: System.out.println (frame.getBackground(). GetBlue()); Blue ActionListener’ınıza Mavi düğmesine her bastığınızda 255 basılmalıdır. GridLayout'a boş bir üçüncü panel eklerim ve çerçevenin yerine rengini değiştiririm. –