Witam,
Musze zrobic aplikacje z uzyciem biblioteki swing. Jak na razie ogarniam sobie konceptualnie ta biblioteke . Dodam tez ze nie mam doswiadczenia z JAVA (najlepiej znam C++). Moj problem polega na tym , ze chce stworzyc przyciski ktore beda odpowiadac za jakas akcje( nie jest zaprogramowana jeszcze) oraz umozliwic sterowanie strzalkami. Niestety kiedy pisze funkcje
add(jakis Obiekt)
to w przedstawionym kodzie nie dziala mi obsluga przyciskow. Oto kod
package podsum;
import java.awt.FlowLayout;// zarzdca
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JPanel;
public class Ramka extends JFrame implements KeyListener{
public Ramka() {
super( "Not Hello World" );
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(800, 800);
setLocation(0,0);
JPanel panel = new Panel(20);
add(panel);
setLayout(new FlowLayout(FlowLayout.RIGHT, 10, 10)); // zarzadca
add(new Przycisk("Przycisk 1"));
add(new Przycisk("Przycisk 2"));
add(new Przycisk("Przycisk 3"));
addKeyListener(this); // i tutaj gryza sie przyciski z obsluga strzalek
pack(); // ustawia automatyczne dopasowanie
System.out.println("tgfgft");
setVisible(true);
}
@Override
public void keyPressed(KeyEvent evt) {
System.out.println("test");
}
@Override
public void keyTyped(KeyEvent evt) {
System.out.println("tes");
}
@Override
public void keyReleased(KeyEvent evt) {
//char c = evt.getKeyChar();
//getkeyCode() = VK_RIGHT;
int key = evt.getKeyCode();
if (key == KeyEvent.VK_RIGHT)
System.out.println("right");
else if (key == KeyEvent.VK_LEFT)
System.out.println("left");
else if (key == KeyEvent.VK_UP)
System.out.println("up");
else if (key == KeyEvent.VK_DOWN)
System.out.println("down");
else
System.out.println("other");
/* if (c == 'c'){
System.out.println("test");
}*/
/*if(counter < secret.length())
checkSecret(c);*/
}
}
Dodaje jeszcze mniej istotne klasy
```c
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package podsum;
/**
*
* @author Adam
*/
import java.awt.*;
import javax.swing.JPanel;
public class Panel extends JPanel {
private int rozmiar;
public Panel(int r) {
this.rozmiar = r;
setPreferredSize(new Dimension(700, 700));
}
@Override
protected void paintComponent(Graphics g) {
final int stala = 30;
super.paintComponent(g );
Graphics2D g2d = (Graphics2D) g;
// prostokat
Color kolor[] = new Color[3];
kolor[0] = new Color(255,65,54);
kolor[1] = new Color(2,67,54);
kolor[2] = new Color(85,65,54);
Color tmp;
for (int i=0; i<this.rozmiar; i++){
for (int j=0; j<this.rozmiar; j++){
tmp = kolor[(i+j)%3];
g2d.setColor(tmp);
g2d.fillRect(i * stala ,j * stala, stala, stala);
}
}
String nazwa = "Test";
for (int i=0; i < kolor.length; i++){
tmp = kolor[i];
g2d.setColor(tmp);
g2d.fillRect(610 ,i * stala, stala, stala);
g2d.drawString(nazwa, 650, i*stala+stala);
}
}
}
i klasa przycisk
package podsum;
/**
*
* @author Adam
*/
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JPanel;
public class Przycisk extends JPanel implements ActionListener{
public static final int HEIGHT = 100;
public static final int WIDTH = 300;
private JButton greenButton;
private JButton blueButton;
private JButton redButton;
public Przycisk(String nazwa) {
greenButton = new JButton(nazwa);
greenButton.addActionListener(this);
add(greenButton);
}
@Override
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
if(source == greenButton)
greenButton.setText("Przycisk 1a") ;
}
}
Glownym problemem jest dla mnie ten moment (kod 1-wszej klasy)
add(new Przycisk("Przycisk 1"));
add(new Przycisk("Przycisk 2"));
add(new Przycisk("Przycisk 3"));
addKeyListener(this); // i tutaj gryza sie przyciski z obsluga strzalek