Witam
Niedawno zaczalem nauke Swinga w javie. Napisalem maly program, ktory ustawia kolor panelu po kliknieciu przycisku.
Niestety nie wiem jak zrobić tak, by po kliknięciu na przycisk na panelu pierwszym (np. buttona Zielony) zmienił się kolor na drugim panelu. Chodzi o taka "komunikacje" miedzy panelami.
Szukałem w googlach i znalazłem pare tematów, ale nie moge tego załapać, dużo tam słówek "this", a do konca jeszcze nie wiem jak działa. Jeden z tematów:
KLIK: Komunikacja między panelami
Moze moglibyscie cos podpowiedziec?:)
w razie czego kod:
RAMKA:
import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Ramka extends JFrame
{
public Ramka()
{
setTitle("Zmiana koloru");
setSize(1000,1000);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new FlowLayout());
JPanel bu = new Panel();
add(bu);
JPanel bu1 = new Panel1();
add(bu1);
pack();
}
public static void main(String[] args)
{
new Ramka();
}
}
PANEL:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.Border;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter.DEFAULT;
public class Panel extends JPanel implements ActionListener
{
JButton green;
JButton blue;
public Panel()
{
setPreferredSize(new Dimension(200,200));
setLayout(new FlowLayout());
green = new JButton("Zielony");
blue = new JButton("Niebieski");
blue.addActionListener(this);
green.addActionListener(this);
add(green);
add(blue);
}
@Override
public void actionPerformed(ActionEvent e)
{
Object zrodlo = e.getSource();
if(zrodlo == green)
{
setBackground(Color.green);
System.out.println(new Date());
}
else if(zrodlo == blue)
{
setBackground(Color.blue);
}
}
}
PANEL1:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JPanel;
public class Panel1 extends JPanel implements ActionListener
{
JButton pink;
JButton gray;
public Panel1()
{
setPreferredSize(new Dimension(200,200));
setLayout(new FlowLayout());
pink = new JButton("rozowy");
gray = new JButton("szary");
pink.addActionListener(this);
gray.addActionListener(this);
add(pink);
add(gray);
}
@Override
public void actionPerformed(ActionEvent e)
{
Object zrodlo = e.getSource();
if(zrodlo == pink)
{
setBackground(Color.pink);
}
else if(zrodlo == gray)
{
setBackground(Color.gray);
}
}
}
Pozdrawiam i licze na porady! :)
EDIT
probowalem dodac do klasy Panel pole: Panel1 nazwa; i w listenerze klasy Panel dac nazwa.setBackground(Color.jakiskolor); ale niestety wywalało mase błędów