Obraz w tle przycisków

Obraz w tle przycisków
N4
  • Rejestracja:około 13 lat
  • Ostatnio:ponad 12 lat
  • Postów:193
0

Pracuję nad grą komputerową w Javie. W jaki sposób, korzystając z bibliotek Swing, dodać panel przycisków i tło menu?
Kombinowałem już dość sporo, jednakże za każdym razem pojawiają się ALBO przyciski z szarym tłem standardowym, ALBO mój obrazek w tle, ale bez przycisków.
Nie mogę udostępnić swojego kodu, ponieważ w stanie głębokiej wściekłości z powodu wielogodzinnej pracy bez żadnych wyników (jestem cierpliwy, ale nie aż tak), usunąłem pliki z kodem. Teraz jednak zaczynam pisać od nowa i chciałbym dowiedzieć się już teraz, w jaki sposób to naprawić.

PS: W trakcie pisania tego postu wpadłem na pomysł. Czy przyciski są, ale schowane za obrazkiem? Wtedy, gdybym narysował te przyciski na obrazku, działałoby, ale nie jestem pewien swojej racji.


...
bogdans
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
0

Wpierw umieść przyciski, a potem JLabel z obrazkiem i ustaw etykiecie setOpaque(true). Trzeba wtedy, niestety, zrezygnować z menadżera rozkładu i wykorzystywać metodę setBounds().


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
edytowany 1x, ostatnio: bogdans
N4
  • Rejestracja:około 13 lat
  • Ostatnio:ponad 12 lat
  • Postów:193
0

Zaraz sprawdzę.
EDIT: Nie mam pojęcia, o co chodzi. Kombinowałem, ale się nie da.
Oto kod, jaki przygotowałem:

Kopiuj
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Start
{
	public static void main(String[] args)
	{
		MenuRamka mr = new MenuRamka();
		mr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		mr.show();
	}
}

class MenuRamka extends JFrame
{
	public MenuRamka()
	{
		Toolkit tk = Toolkit.getDefaultToolkit();
		Dimension rozEkr = tk.getScreenSize();
		int szerEkr = rozEkr.width;
		int wysEkr = rozEkr.height;
		
		setSize(szerEkr, wysEkr);
		setLocation(0, 0);
		
		MenuPanel mp = new MenuPanel();
		MenuTlo mt = new MenuTlo();
		Container Menu = getContentPane();
		Menu.add(mt);
		Menu.add(mp);
		
		int rozdEkr = szerEkr / wysEkr;
		if (rozdEkr == 16 / 9)
		{
			rozdEkrWynik = 9;
		}
		else if (rozdEkr == 16 / 10)
		{
			rozdEkrWynik = 10;
		}
		else
		{
			rozdEkrWynik = 4;
		}
	}
	public static int rozdEkrWynik;
}

class MenuTlo extends JLabel
{
	public void paintComponent(Graphics g)
	{
		super.paintComponent(g);
		
		Toolkit tk = Toolkit.getDefaultToolkit();
		
		if (MenuRamka.rozdEkrWynik == 9)
		{
			String MenuTloSciezka = "images/backgrounds/16_9.gif";
			Image MenuTlo = tk.getImage(MenuTloSciezka);
			g.drawImage(MenuTlo, 0, 0, null);
		}
		else if(MenuRamka.rozdEkrWynik == 10)
		{
			String MenuTloSciezka = "images/backgrounds/16_10.gif";
			Image MenuTlo = tk.getImage(MenuTloSciezka);
			g.drawImage(MenuTlo, 0, 0, null);
		}
		else if(MenuRamka.rozdEkrWynik == 4)
		{
			String MenuTloSciezka = "images/backgrounds/4_3.gif";
			Image MenuTlo = tk.getImage(MenuTloSciezka);
			g.drawImage(MenuTlo, 0, 0, null);
		}
	}
}

class MenuPanel extends JPanel
{	
	public MenuPanel()
	{
		JButton test = new JButton("Test");
		add(test);
	}
} 

...
edytowany 4x, ostatnio: norbi452
bogdans
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
0

Raczej tak

Kopiuj
public class Tlo extends JFrame implements ActionListener
{
    public static void main(String[] args)
    {
        new Tlo();
    }
    //------------------------
    public Tlo()
    {
        setLayout(null);
        setPreferredSize(new Dimension(750,406));

        JButton b=new JButton("Abrakadabra");
        b.setBounds(10,10,120,25);
        b.addActionListener(this);
        add(b);

        b=new JButton("Hokus-pokus");
        b.setBounds(10,110,120,25);
        add(b);

        JLabel bg=new JLabel(new ImageIcon("images/ayers.jpeg"));
        bg.setOpaque(true);
        bg.setBounds(0,0,750,406);
        add(bg);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        pack();
        setLocationRelativeTo(null);
        setVisible(true);
    }
    ...
}

To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
N4
  • Rejestracja:około 13 lat
  • Ostatnio:ponad 12 lat
  • Postów:193
0

A dałoby się wytłumaczyć to prościej? Dopiero uczę się Javy i nie mam bladego pojęcia, gdzie to wstawić.


...
Olamagato
  • Rejestracja:ponad 16 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Polska, Warszawa
  • Postów:1058
0

Najprościej skorzystać z projektów demonstracyjnych do tutoriala Javy i dokładnie je sobie obejrzeć. Można poszukać od razu SwingSet2 lub SwingSet3 bo w tych demkach są niemal wszystkie możliwości Swinga wykorzystane (te nie wymagające specjalnej wyobraźni czy finezji).


Jeżeli ktoś komuś coś, ewentualnie nikt nikomu nic, to właściwie po co...?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.