Janela no canto inferior direito. [RESOLVIDO]

1 resposta
A

Fala galera, Boa Tarde.

Estou tentando abrir uma JWindow no canto inferior direito, porem não consegui descobrir como conseguir o tamanho do taskbar do windows. A minha ideia é criar um JWindows AlwaysOnTop no cando inferior direito, e para fecha-la basta clicar no IconTray, que ja implementei. O Problema é que eu pego o valor do ScreenSize utilizando o Toolkit(), mas não consigo o tamanho da taskbar para posicionar a janela. Ate o momento a janela fica sobre o taskbar tampando os icontrays.

Alguem sabe como conseguir este valor da altura do taskbar, ou alguma outra solução.

Segue o codigo do que fiz ate agora.

import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JWindow;

public class JWindowTest extends JWindow{
    JPanel pan = new JPanel();
    JButton jb = new JButton("Fechar");
    int JWindowHEIGHT = 600;
    int JWindowWIDTH = 600;

    private Dimension getScreenSize(){
        return Toolkit.getDefaultToolkit().getScreenSize();
    }

    public JWindowTest(){
        initComponents();
    }

    private void close(){
        this.setVisible(false);
    }

    private void initComponents(){

        this.add(pan, "Center");
        pan.setLayout(new FlowLayout());
        pan.add(jb);

        this.setSize(JWindowWIDTH,JWindowHEIGHT);
        this.setLocation(getScreenSize().width-JWindowWIDTH,
                getScreenSize().height-JWindowHEIGHT);
        this.setAlwaysOnTop(true);

        jb.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                close();
            }
        });

    }


    public static void main(String args[]){
        java.awt.EventQueue.invokeLater(new Runnable(){
            public void run(){
                new JWindowTest().setVisible(true);
            }
        });
    }


}

Valeu galera…

Abraço

1 Resposta

A

Boa Tarde Galera.

Consegui resolver o problema, que ja foi respondido neste forum a um tempo atras pelo Ricardo_Neves :arrow:

O problema foi resolvido substituindo

private Dimension getScreenSize(){
        return Toolkit.getDefaultToolkit().getScreenSize();
}

por

private Dimension getScreenSize(){
        GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
        Rectangle rect = ge.getMaximumWindowBounds();
        return new Dimension(rect.width, rect.height);
}

Segue abaixo o código completo, com as modificações feitas.

import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GraphicsEnvironment;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JWindow;

public class JWindowTest extends JWindow{
    JPanel pan = new JPanel();
    JButton jb = new JButton("Fechar");
    int JWindowHEIGHT = 600;
    int JWindowWIDTH = 600;

    private Dimension getScreenSize(){
        GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
        Rectangle rect = ge.getMaximumWindowBounds();
        return new Dimension(rect.width, rect.height);
    }

    public JWindowTest(){
        initComponents();
    }

    private void close(){
        this.setVisible(false);
    }

    private void initComponents(){

        this.add(pan, "Center");
        pan.setLayout(new FlowLayout());
        pan.add(jb);

        this.setSize(JWindowWIDTH,JWindowHEIGHT);
        this.setLocation(getScreenSize().width-JWindowWIDTH,
                getScreenSize().height-JWindowHEIGHT);
        this.setAlwaysOnTop(true);

        jb.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                close();
            }
        });
    }
}

Espero que se mais alguem tive esta duvida, esta solução possa ser de alguma ajuda.

Grande abraço

Criado 9 de fevereiro de 2011
Ultima resposta 10 de fev. de 2011
Respostas 1
Participantes 1