Ustawienie przycisków

0

Witam!
Chciałem prosić o pomoc w ustawieniu przycisków na samym dole programu, ponieważ w dalszym jego rozwoju chce zrobić aby po kliknięciu pierwszego wyświetlały się tabele przycisków (coś w stylu smartfona). Z góry dzięki za pomoc.

 
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JFrame;


public class Ekran extends JPanel{

	public static final int HEIGHT = 100;
	public static final int WIDTH = 300;
	private JButton greenButton;
	private JButton blueButton;
	private JButton redButton;

	private JPanel ekran;

	public Ekran() {
		greenButton = new GreenButton();
		blueButton = new BlueButton();
		redButton = new RedButton();

		ekran = this;

		setLayout(new FlowLayout()); 
		setPreferredSize(new Dimension(WIDTH, HEIGHT));
		add(greenButton);
		add(blueButton);
		add(redButton);
	}

	class GreenButton extends JButton implements ActionListener {

		GreenButton() {
			super("Green");
			addActionListener(this);
		}

		@Override
		public void actionPerformed(ActionEvent e) {
			ekran.setBackground(Color.GREEN);
		}
	}

	class BlueButton extends JButton implements ActionListener {
		
		BlueButton() {
			super("Blue");
			addActionListener(this); 
		}

		@Override
		public void actionPerformed(ActionEvent e) {
			ekran.setBackground(Color.BLUE);
		}
	}

	class RedButton extends JButton implements ActionListener {

		RedButton() {
			super("Red");
			addActionListener(this);
		}

		@Override
		public void actionPerformed(ActionEvent e) {
			ekran.setBackground(Color.RED);
		}
	}

}
0
 private JPanel panelWithButtons;
 
    public Ekran() {
        setLayout(new BorderLayout());
        panelWithButtons = new JPanel();
        panelWithButtons.setLayout(new FlowLayout());
        
        greenButton = new GreenButton();
        blueButton = new BlueButton();
        redButton = new RedButton();
 
        ekran = this;
 
        setPreferredSize(new Dimension(WIDTH, HEIGHT));
        panelWithButtons.add(greenButton);
        panelWithButtons.add(blueButton);
        panelWithButtons.add(redButton);
        
        add(panelWithButtons, BorderLayout.SOUTH);
    }
0

Teraz przy tym kodzie kolor zmienia się tylko w obszarze przycisków a ma się zmieniać ponad nimi, da się to jakoś zmienić ? A jeśli odkomentuje linijkę "//ekran = this;" to wyskakuje bład "cannot find symbols"

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JFrame;


public class Ekran extends JPanel{

	public static final int HEIGHT = 100;
	public static final int WIDTH = 300;
	private JButton greenButton;
	private JButton blueButton;
	private JButton redButton;

	private JPanel panelWithButtons;
 
    public Ekran() {
        setLayout(new BorderLayout());
        panelWithButtons = new JPanel();
        panelWithButtons.setLayout(new FlowLayout());
 
        greenButton = new GreenButton();
        blueButton = new BlueButton();
        redButton = new RedButton();
 
        //ekran = this;
 
        setPreferredSize(new Dimension(WIDTH, HEIGHT));
        panelWithButtons.add(greenButton);
        panelWithButtons.add(blueButton);
        panelWithButtons.add(redButton);
 
        add(panelWithButtons, BorderLayout.SOUTH);
		}

	class GreenButton extends JButton implements ActionListener {

		GreenButton() {
			super("Green");
			addActionListener(this);
		}

		@Override
		public void actionPerformed(ActionEvent e) {
			panelWithButtons.setBackground(Color.GREEN);
		}
	}

	class BlueButton extends JButton implements ActionListener {
		
		BlueButton() {
			super("Blue");
			addActionListener(this); 
		}

		@Override
		public void actionPerformed(ActionEvent e) {
			panelWithButtons.setBackground(Color.BLUE);
		}
	}

	class RedButton extends JButton implements ActionListener {

		RedButton() {
			super("Red");
			addActionListener(this);
		}

		@Override
		public void actionPerformed(ActionEvent e) {
			panelWithButtons.setBackground(Color.RED);
		}
	}

} 
0
Ekran.this.setBackground(Color.GREEN);
panelWithButtons.setBackground(Color.GREEN);
0

Dzięki za pomoc :) Problem z kolorem rozwiazałem sam ponieważ twoja poprawka garari nie dziala tak jak bym chcial ponieważ ustawia tylko pierwszy kolor i reszta nie działa a ja dodalem:

  • private JPanel gora;
  • gora = this;
  • i każdy przycisk gora.setBackground(Color.GREEN);

Dzięki jeszcze raz. Mozna zamknac.

0

Nie chcę rozpoczynać nowego watku wiec napisze tutaj. Dodałem tło (chciałbym żeby to tło nie zniknęło pomimo wciskania przycisku z kolorem), lecz do class przycisków jest ustawiony kolor i pomimo wciskania ich żaden kolor się nie wyświetla ponad tło które ustawiłem, i jeszcze jedna sprawa chciałbym aby po wciśnięciu przycisku wyświetlały się kolejne przyciski ( tak jak w smartfonie ). Z góry dzięki za pomoc. Oto kod:

 
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JFrame;

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


public class Ekran extends JPanel{


	public static final int HEIGHT = 100;
	public static final int WIDTH = 300;
	public JButton greenButton;
	public JButton blueButton;
	public JButton redButton;
	
	private JPanel panelWithButtons;
	private JPanel gora;
	
	public JLabel bg;
    public boolean first=true;
	
    public Ekran() {
		setLayout(new BorderLayout());
		JLabel background=new JLabel(new ImageIcon("blackcube.jpg"));
        panelWithButtons = new JPanel();
        panelWithButtons.setLayout(new FlowLayout());
		
		greenButton = new GreenButton();
        blueButton = new BlueButton();
        redButton = new RedButton();
		
		
	    gora = this;
 
        setPreferredSize(new Dimension(WIDTH, HEIGHT));
        panelWithButtons.add(greenButton);
        panelWithButtons.add(blueButton);
        panelWithButtons.add(redButton);
 
        add(panelWithButtons, BorderLayout.SOUTH);
		
	   bg=new JLabel(new ImageIcon("blackcube.jpg"));
       bg.setOpaque(false);
       bg.setBounds(0,0,320,480);
       add(bg);
		
	  
	   
		
		}
	class GreenButton extends JButton implements ActionListener {
	

		GreenButton() {
		
			super("");
			addActionListener(this);
			
		}

		@Override
		public void actionPerformed(ActionEvent e) {
			gora.setBackground(Color.BLUE);
			//panelWithButtons.setBackground(Color.BLUE);
		
		}
	}

	class BlueButton extends JButton implements ActionListener {
		
		BlueButton() {
			super("");
			addActionListener(this); 
		}

		@Override
		public void actionPerformed(ActionEvent e) {
			gora.setBackground(Color.GREEN);
			//panelWithButtons.setBackground(Color.GREEN);
		}
	}

	class RedButton extends JButton implements ActionListener {

		RedButton() {
			super("");
			addActionListener(this);
		}

		@Override
		public void actionPerformed(ActionEvent e) {
			gora.setBackground(Color.RED);
			//panelWithButtons.setBackground(Color.RED);
		}
	}

}

1 użytkowników online, w tym zalogowanych: 0, gości: 1