Witajcie, to mój pierwszy kontakt z językiem wysokiego poziomu. Utworzyłem osobną klasę JBackgroundPanel, mająca na celu utworzenie JPanelu, którego tłem jest obrazek:
class JBackgroundPanel extends JPanel
{
public JBackgroundPanel(String bg) {
setOpaque(false);
backgroundImage = new ImageIcon(bg);
}
public void paintComponent(Graphics g) {
if (backgroundImage != null) g.drawImage(backgroundImage.getImage(),0,0,getWidth(),getHeight(),null);
super.paintComponent(g);};
private ImageIcon backgroundImage;
}
oraz klasę - okienko z przyciskami class Start:
class Start extends JFrame implements ActionListener
{
private JBackgroundPanel tlo = new JBackgroundPanel("tlo.jpg");
public Start(){
super("Menu");
getContentPane().add(tlo);
setSize(800,600);
setResizable(false);
//setLayout(null);
PanelGlowny();
setVisible(true);
repaint();
}//end public startpublic void PanelGlowny()
{
JLabel tekst = new JLabel("Rozróżnianie Kształtów");
tekst.reshape(300,40,300,50);
tekst.setFont(new Font("arial", Font.BOLD, 20));
tlo.add(tekst);
JButton przycisk1 = new JButton("Rozpocznij nową grę");
przycisk1.setBounds(125,150,200,80);
tlo.add(przycisk1);
przycisk1.addActionListener(this);
JButton przycisk2 = new JButton("Wznów grę");
przycisk2.reshape(475,150,200,80);
przycisk2.addActionListener(this);
tlo.add(przycisk2);
JButton przycisk3 = new JButton("POMOC");
przycisk3.reshape(165,300,120,50);
przycisk3.addActionListener(this);
tlo.add(przycisk3);
JButton przycisk4 = new JButton("KONIEC");
przycisk4.reshape(515,300,120,50);
przycisk4.addActionListener(this);
tlo.add(przycisk4);
}public void actionPerformed(ActionEvent e) { String nazwa = e.getActionCommand(); if(nazwa.equals("Rozpocznij nową grę")) { dispose(); new OknoGlowne(); } if(nazwa.equals("Wznów grę")) { dispose(); new OknoGlowne(); } }
} //koniec public class start
Problem w tym, że przyciski nie reagują na reshape, ani na setBounds. Gdy stosuję takie cudo jak GridLayout, nie można ustalić ich rozmiaru w pikselach, ani dowolnie ich ustawić (albo raczej jest to niezwykle skomplikowane). Teraz kombinuję coś z containerami, ale wydaje mi się, że to jest zła droga. Zależy mi na tym, by można było dowolnie rozmieszczać przyciski, po prostu podając współrzędne zaczepienia przycisku i jego rozmiar. Męczę się z tym już parę godzin, a rozwiązanie z pewnością jest trywialne, więc gorąco proszę o podpowiedzi.