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, botów: 0