JPanel - dlaczego ten Label się nie dodaje?

0

Witam! Mam taki kod:

import javax.swing.*;
import java.awt.*;
import java.awt.Window.Type;
import java.io.*;
import java.awt.event.*;


public class Widget extends JFrame implements MouseListener, MouseMotionListener{
	static JFrame mainFrame, minFrame;
	//JButton minBtn, exitBtn, scrnBtn;
	JPanel upBar, contentPanel;
	JLabel mainLabel, maxBtnLbl,exitBtnLbl,minBtnLbl,scrnBtnLbl;
	static int xMouse, yMouse,widthScreen,heightScreen;
	
	public static void main(String[] args){
		System.out.println("Hacking mode activated");
		new Widget();
	}
	
	public Widget(){
//		FRAMES
		mainFrame = new JFrame();
		mainFrame.setLayout(null);
		mainFrame.setLocationRelativeTo(null);
		mainFrame.setAlwaysOnTop(true);
		mainFrame.setSize(500,250);
		mainFrame.setCursor(Tools.CustomCursor("images\\cursors\\Cursor.png"));
		mainFrame.setResizable(false);
		mainFrame.setUndecorated(true);
		mainFrame.setType(Type.UTILITY);
		mainFrame.getRootPane().setBorder(BorderFactory.createMatteBorder(5, 5, 5, 5, new Color(38,38,38)));
		
		minFrame = new JFrame();
		minFrame.setLayout(null);
		Dimension();
		minFrame.setBounds(widthScreen-30,heightScreen-77,30,30);
		minFrame.setAlwaysOnTop(true);
		minFrame.setUndecorated(true);
		minFrame.setType(Type.UTILITY);
		minFrame.setVisible(false);
		minFrame.setCursor(Tools.CustomCursor("images\\cursors\\Cursor.png"));
//		FRAMES
		
//		BUTTONS		
		
//		BUTTONS
		
		
//		LABELS
		mainLabel = new JLabel();
		mainLabel.setBounds(0,0,500,40);
		mainLabel.setIcon(new ImageIcon("images\\other\\mainLabelImg.png"));
		mainLabel.addMouseListener(this);
		mainLabel.addMouseMotionListener(this);
		
		maxBtnLbl = new JLabel();
		maxBtnLbl.setBounds(0,0,30,30);
		maxBtnLbl.setIcon(new ImageIcon("images\\buttons\\maxBtnImg.png"));
		maxBtnLbl.addMouseListener(this);
		maxBtnLbl.addMouseMotionListener(this);
		
		exitBtnLbl = new JLabel();
		exitBtnLbl.setIcon(new ImageIcon("images\\buttons\\exitBtnImg.png"));
		exitBtnLbl.setBounds(458,3,30,30);
		exitBtnLbl.addMouseListener(this);
		exitBtnLbl.addMouseMotionListener(this);
		
		minBtnLbl = new JLabel();
		minBtnLbl.setIcon(new ImageIcon("images\\buttons\\minBtnImg.png"));
		minBtnLbl.setBounds(421,3,30,30);
		minBtnLbl.addMouseListener(this);
		
		scrnBtnLbl = new JLabel();
		scrnBtnLbl.setBounds(5, 5, 45, 45);
		scrnBtnLbl.setBackground(Color.black);
//		LABELS
		
//		PANELS
		upBar = new JPanel();
		upBar.setBounds(0,0,500,40);
		upBar.setLayout(null);
		
		contentPanel = new JPanel();
		contentPanel.setBounds(0,40,500,210);
		contentPanel.setBackground(new Color(96,96,96));
		contentPanel.setLayout(null);
//		PANELS
		
		
//		ADDITION
		mainFrame.add(mainLabel);
		mainFrame.add(contentPanel);
		
		minFrame.add(maxBtnLbl);
		
		contentPanel.add(scrnBtnLbl);
		
		mainLabel.add(minBtnLbl);
		mainLabel.add(exitBtnLbl);
		
//		ADDITION
		mainFrame.setVisible(true);
	}
	
	public static void Dimension() {
		Toolkit tk = Toolkit.getDefaultToolkit();
		Dimension dim = tk.getScreenSize();
		widthScreen = dim.width;
		heightScreen = dim.height;
	}
	
	
	public void mouseDragged(MouseEvent ev) {
		Object src = ev.getSource();
		int x = ev.getXOnScreen();
		int y = ev.getYOnScreen();
		
		if(src==mainLabel) {
			mainFrame.setLocation(x-xMouse, y-yMouse);
		}
		else {
			minFrame.setLocation(x-xMouse, y-yMouse);
		}
	}

	public void mousePressed(MouseEvent ev) {
		xMouse = ev.getX();
		yMouse = ev.getY();
	}

	public void mouseMoved(MouseEvent arg0) {}
	public void mouseClicked(MouseEvent ev) {
		Object src = ev.getSource();
		
		if(src==maxBtnLbl) {
			mainFrame.setVisible(true);
			minFrame.setVisible(false);
		}
		else if(src==exitBtnLbl) {
			System.exit(0);
		}
		else if(src==minBtnLbl) {
			mainFrame.setVisible(false);
			minFrame.setVisible(true);
		}
	}
	public void mouseEntered(MouseEvent ev) {
		Object src = ev.getSource();
		
		if(src==exitBtnLbl) {
			exitBtnLbl.setIcon(new ImageIcon("images\\buttons\\exitBtnImgEnt.png"));
		}
		else if(src==minBtnLbl) {
			minBtnLbl.setIcon(new ImageIcon("images\\buttons\\minBtnImgEnt.png"));
		}
		else if(src==maxBtnLbl) {
			maxBtnLbl.setIcon(new ImageIcon("images\\buttons\\maxBtnImgEnt.png"));
		}
	}
	public void mouseExited(MouseEvent ev) {
		Object src = ev.getSource();
		
		if(src==exitBtnLbl) {
			exitBtnLbl.setIcon(new ImageIcon("images\\buttons\\exitBtnImg.png"));
		}
		else if(src==minBtnLbl) {
			minBtnLbl.setIcon(new ImageIcon("images\\buttons\\minBtnImg.png"));
		}
		else if(src==maxBtnLbl) {
			maxBtnLbl.setIcon(new ImageIcon("images\\buttons\\maxBtnImg.png"));
		}
	}
	public void mouseReleased(MouseEvent arg0) {}
}

I... scrnBtnLbl się nie dodaje. Nie widać go. Dlaczego? Próbowałem z innym labelem i też nie działa. Co jest nie tak?

0

spróbuj z scrnBtnLbl = new JLabel("hello");

0

A jak rozpoznałeś że tego JLabela nie ma w oknie? Na nim nie ma żadnego napisu, a czarnego tła nie widać, bo JLabel jest domyślnie przezroczysty.

scrnBtnLbl = new JLabel();
...
scrnBtnLbl.setOpaque(true);
0

Nie odpowiadaj w komentarzach, na forum zamieszczaj ten kod, którego używasz i który nie działa W zamieszczonym kodzie żadnego obrazka nie ma.
//Edit Poza tym mijasz się z prawdą. Po dopisaniu instrukcji

scrnBtnLbl.setOpaque(true);

okno programu wygląda tak: screenshot-20171014083514.png

0
bogdans napisał(a):

Nie odpowiadaj w komentarzach, na forum zamieszczaj ten kod, którego używasz i który nie działa W zamieszczonym kodzie żadnego obrazka nie ma.
//Edit Poza tym mijasz się z prawdą. Po dopisaniu instrukcji

scrnBtnLbl.setOpaque(true);

okno programu wygląda tak: screenshot-20171014083514.png

Nie? a "scrnBtnbl.setIcon(new ImageIcon("images\buttons\scrnBtnImg.png"));"?

@Edit Przepraszam, teraz zauważyłem, że tego tam nie ma. Po dodaniu pytania zrobiłem ten obrazek, ale i tak nie było widać tego guzika...

0

W nic co piszesz o zachowaniu tego programu nie, wierzę.
Po dopisaniu instrukcji

scrnBtnbl.setIcon(new ImageIcon(resources/background.png"));"

okno programu wygląda tak;
screenshot-20171014183040.png
Sam plik background.png wygląda tak: screenshot-20171014183213.png
specjalnie wybrałem obrazek, który się nie mieści w JLabel.

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