No jasny gwint mnie zaro szczeli...
Dobra tam, przejdzmy do konkretow.
Juz od jakiegos czasu probuje nauczyc sie programowac.
Za jezyk obralem sobie Jave a srodowisko IntelijIdea.
Umiem juz pisac samodzielnie konsolowe gierki typu wisielec, jakies RPGi kalkulatory i tego typu rzeczy zawierajace klasy dziedziczne, petle, rozne metody itp- czuje sie juz na tyle pewnie, ze za nastepny cel nauki obralem sobie za nastepny krok probe stworzenia czegos, co juz ma jakies okienku. Czegos, co juz ma jakis wyglad, co juz wyglada jak jakas aplikacja.
Jestem samoukiem. Ucze sie glownie za pomoca filmikow z YT i ChatGPT. Przejdzmy do mojego problemu:
Chce sobie dodac swoj wlasny guzik, tzn. zrobilem testowy guzik w paincie i chce by moj button mial jego grafike. No i ogolnie udalo mi sie to zrobic, ale kurwa... Jakby to powiedziec, powierzchnia "funkcjonalna" tego guzika wykracza poza obszar tegoz oto guzika, wyglada dto tak:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class Main extends JFrame implements KeyListener {
private int playerX = 50;
private int playerY = 50;
public Main() {
setTitle("Prosta Gra RPG");
setSize(800, 600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
addKeyListener(this);
setFocusable(true);
setFocusTraversalKeysEnabled(false);
ImageIcon obrazek = new ImageIcon("D:\\Studio\\guz.png");
JButton guzikZObrazkiem = new JButton(obrazek);
guzikZObrazkiem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(Main.this, "Kliknięto guzik z obrazkiem!");
}
});
guzikZObrazkiem.setPreferredSize(new Dimension(obrazek.getIconWidth(), obrazek.getIconHeight()));
guzikZObrazkiem.setBorderPainted(false);
setLayout(new BorderLayout());
JPanel panelGry = new JPanel() {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
rysujPlansze(g);
g.setColor(Color.BLUE);
g.fillRect(playerX, playerY, 20, 20);
}
};
add(guzikZObrazkiem, BorderLayout.SOUTH);
add(panelGry, BorderLayout.CENTER);
}
private void rysujPlansze(Graphics g) {
g.setColor(Color.RED);
g.drawRect(25, 50, 200, 160);
g.setColor(Color.BLACK);
g.drawString("Ekwipunek:", 10, 415);
g.setColor(Color.DARK_GRAY);
g.drawLine(430, 220, 121, 55);
g.setColor(Color.DARK_GRAY);
g.drawLine(433, 223, 124, 58);
g.setColor(Color.DARK_GRAY);
g.drawLine(0, 400, 1111, 400);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
Main gra = new Main();
gra.setVisible(true);
});
}
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
if (key == KeyEvent.VK_LEFT) {
playerX -= 20;
} else if (key == KeyEvent.VK_RIGHT) {
playerX += 20;
} else if (key == KeyEvent.VK_UP) {
playerY -= 20;
} else if (key == KeyEvent.VK_DOWN) {
playerY += 20;
}
repaint();
}
public void keyTyped(KeyEvent e) {
}
public void keyReleased(KeyEvent e) {
}
}