La adición de dos simples JLabels a un jframe

He buscado por todas partes, y hay un montón de documentación, pero es todo confuso, y la mitad de la prueba código no funciona, así que yo estoy pidiendo. ¿cuál es la forma más sencilla de hacer un jlabel, establecer su ubicación (con enteros o de una dimensión), y agregar a la JFrame

package com.notelek.notify;

import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Gui {



    public static void main(String[] args){

    }

    public static void notify(String line1, String line2, String imagepath, int style){
        GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
        int width = gd.getDisplayMode().getWidth();
        int swidth = width - 320;

        JFrame notification = new JFrame();
        notification.setSize(new Dimension(320,64));
        notification.setLocation(swidth, 0);
        notification.setUndecorated(true);
        notification.setVisible(true);

        JPanel main = new JPanel();

        JLabel notifyline1 = new JLabel();
        notifyline1.setText("test");
        notifyline1.setLocation(0, 0);
        main.add(notification);
    }

}
  • Nunca añadir la etiqueta de cualquier recipiente, de modo que, ¿cómo puede mostrar hasta anyhwere?
  • favor de hacer este am respuesta (tal vez con un pequeño ejemplo) y así puedo seguir hasta votar
  • Usted no necesita GraphicsEnvironment, reemplazar notification.setLocation(swidth, 0); con notification.setLocationRelativeTo(null);
  • El OP es el uso de GraphicsEnvironment para determinar el ancho de la pantalla y alinearlo a la derecha, mientras que setLocationRelativeTo el centro de la trama…buena idea o mala, no es mi lugar para decir – buena sugerencia, aunque
  • simplemente ignorar las entradas, yo estaba experimentando con diferentes métodos de obtener el texto a la pantalla, se olvidó de tomar los
  • «¿cuál es la forma más sencilla .. establecer su ubicación (con enteros o de una dimensión)» Sencillo en este caso los resultados en ‘broken GUI’. el Uso de diseños. «la mitad de la prueba código no trabajo», Para utilizar el código de la otra mitad.

InformationsquelleAutor user1631686 | 2013-01-13

2 Kommentare

  1. 2

    Creo que te refieres notification.add(main); y el orden es importante:

    import java.awt.*;
    import javax.swing.*;
    
    public class Gui {
    
        public static void main(String[] args){
            notify("", "", "", 0);
        }
    
        public static void notify(String line1, String line2, String imagepath, int style){
            JFrame notification = new JFrame();
            JPanel main = new JPanel();
            JLabel notifyline1 = new JLabel();
            notifyline1.setText("test");
            main.add(notifyline1);
            notification.add(main);
            notification.setSize(new Dimension(320,64));
            notification.setLocationRelativeTo(null);
            notification.setUndecorated(true);
            notification.setVisible(true);
        }
    }
    • no hay necesidad de llamar al método (haciendo que en otra clase), pero funciona! ¿cómo puedo añadir 2 líneas de texto, aunque?
    • «..pero funciona!» creo que esta respuesta es prematuro para convencer a usted de las trampas de lo que están haciendo. Habiendo dicho que, si crees que respondieron a la pregunta, por Favor aceptar la respuesta cuando te dan una oportunidad. «¿cómo puedo añadir 2 líneas de texto, aunque?» Para una JLabel? Hay un montón de ejemplos ASÍ. De búsqueda.
  2. 3

    Que usted necesita para añadir su JLabel a un visible contenedor, de lo contrario no se puede mostrar en la pantalla.

    También supongo que en realidad la intención de añadir a su JPanel a su JFrame en lugar de viceversa – algo así como que:

    ...
    main.add(notifyline1);
    ...    
    notification.add(main);
    ...

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea