Здравствуйте! Я новичок в java. Мне нужно сделать компонент, который, я смог бы потом добавлять на фрейм, который имел бы обработчик события - обработка клика мыши - меняется цвет компонента с одного на другой.
Написал вот что:
| Код | import javax.swing.*; import java.awt.*;
public class MyFrameTest{ public static void main(String [] args){ MyFrame frame = new MyFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } }
class MyFrame extends JFrame{ public MyFrame(){
Toolkit kit = Toolkit.getDefaultToolkit(); Dimension dem = kit.getScreenSize();
this.width = dem.width; this.height = dem.height; this.setBounds(this.width / 4, this.height / 4,this.width / 2, this.height / 2); this.setBackground(Color.BLUE);
Container contentPane = this.getContentPane(); component = new MyComponent(); contentPane.add(component);
} private int width; private int height; private MyComponent component; }
class MyComponent extends JComponent{ public void paintComponent(Graphics g){ super.paintComponent(g);//непонял g.drawString("text", text_x, text_y); } public MyComponent(){ this.setOpaque(true);// непонял this.setSize(100,100);//не работает this.setLocation(100,100);//не работает this.setBackground(Color.BLUE);//не работает this.setForeground(Color.GREEN);// работает } public static final int text_x = 50; public static final int text_y = 50; }
|
JComponent:
- Не устанавливается расположение компонента относительно фрейма через setLocation(,) - Не устанавливается размер через setSize(100,100); - Не устанавливается цвет фона компонента через setBackgound(Color color);
- Но устанавливается цвет текста.
JFrame:
- Не устанавливается цвет фона через setBackgound(Color color); - Работает, если поставить в JComponent, this.setOpaque(true); Т.е.:
| Код | class MyFrame extends JFrame{ public MyFrame(){ //... this.setBackground(Color.BLUE);
Container contentPane = this.getContentPane(); component = new MyComponent(); contentPane.add(component); } //... }
class MyComponent extends JComponent{ public void paintComponent(Graphics g){ //... } public MyComponent(){ this.setOpaque(true);// непонял //... } //... }
|
Причем, если убрать добавляемый компонент с формы, то никакой закраски формы не происходит...
- Как закрасить форму унаследованной от JFrame - Как изменить параметры Location, size и Background компонента унаследованного от JComponent - Как правильно сделать что-то вроде контрола в Java? И есть ли такое понятие в Java?
Помогите пожалуйста разобраться!
|