Agregar un título y campos de texto a Java

Tengo un pequeño programa que ya comenzó con múltiples elementos de menú.

Cuando se hace clic en un elemento, me gustaría que se muestre algo en el marco, y cuando se hace clic en otro elemento, el primero desaparece y aparece el segundo.

Puedo imprimir en la consola, pero parece que no puedo imprimir en el marco.

Cualquier sugerencia sera apreciada:

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

public class melco extends JFrame{


public static void main(String[] args){
    JFrame frame = new JFrame("Salesman Resources");
    frame.setVisible(true);
    frame.setSize(1000,800);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JMenuBar menubar = new JMenuBar();
    frame.setJMenuBar(menubar);

    JMenu file = new JMenu("File");
    menubar.add(file);
    JMenuItem exit = new JMenuItem("Exit");
    file.add(exit);

    JMenu orders = new JMenu("Orders");
    menubar.add(orders);
    JMenuItem bookedorders = new JMenuItem("Booked Orders");
    orders.add(bookedorders);
    JMenuItem backorders = new JMenuItem("BackOrders");
    orders.add(backorders);

    JMenu customers = new JMenu("Customers");
    menubar.add(customers);
    JMenuItem customersales = new JMenuItem("Customer Sales");
    customers.add(customersales);
    JMenuItem customeritems = new JMenuItem("Customer Items");
    customers.add(customeritems);
    JMenuItem customerprices = new JMenuItem("Customer Prices");
    customers.add(customerprices);
    JMenuItem customerlistings = new JMenuItem("Customer Listings");
    customers.add(customerlistings);

    JMenu inv = new JMenu("INV");
    menubar.add(inv);
    JMenuItem surplusinv = new JMenuItem("Surplus Inv");
    inv.add(surplusinv);
    JMenuItem stockinv = new JMenuItem("Stock Inv");
    inv.add(stockinv);

    JMenu search = new JMenu("Searh");
    menubar.add(search);
    JMenuItem itemsearch = new JMenuItem("Item Search");
    search.add(itemsearch);
    JMenuItem customersearch = new JMenuItem("Customer Search");
    search.add(customersearch);

    JMenu menulostsales = new JMenu("Lost Sales");
    menubar.add(menulostsales);
    JMenuItem lostsales = new JMenuItem("Lost Sales");
    menulostsales.add(lostsales);


    JMenu menumarginadvisor = new JMenu("Margin Advisor");
    menubar.add(menumarginadvisor);
    JMenuItem marginadvisor = new JMenuItem("Margin Advisor");
    menumarginadvisor.add(marginadvisor);


    JMenu menumakeandhold = new JMenu("Make and Hold");
    menubar.add(menumakeandhold);
    JMenuItem makeandhold = new JMenuItem("Make and Hold");

    menumakeandhold.add(makeandhold);

    makeandhold.addActionListener(
        new ActionListener(){
            public void actionPerformed(ActionEvent e)
            {
                System.out.println("Make and Hold is pressed");
                System.out.println("Hello World");                  
// This is Make and Hold Area

            }
        }
    );          

    class exitaction implements ActionListener {
        public void actionPerformed (ActionEvent e){
        System.exit(0);
        }
    }
        exit.addActionListener(new exitaction());


}

}   
Respuesta 1

No puede imprimir en marco porque un marco no tiene un método de impresión. Si desea agregar el texto al marco directamente, debe dibujarlo. Eso requiere anular el paintmétodo mediante la siguiente técnica

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

public class melco extends JFrame{

  String str;
  int x = 100, y = 100;

  public melco(String title){
    super(title);
  }

  void print(String s){
    str = s;
    repaint();
  }

  public void paint(Graphics g){
    super.paint(g);
    if (str != null)
      g.drawString(str, x, y);
  }
  public static void main(String[] args){
    final melco frame = new melco("Salesman Resources");
    frame.setVisible(true);
    frame.setSize(1000,800);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JMenuBar menubar = new JMenuBar();
    frame.setJMenuBar(menubar);

    JMenu file = new JMenu("File");
    menubar.add(file);
    JMenuItem exit = new JMenuItem("Exit");
    file.add(exit);

    JMenu orders = new JMenu("Orders");
    menubar.add(orders);
    JMenuItem bookedorders = new JMenuItem("Booked Orders");
    orders.add(bookedorders);
    JMenuItem backorders = new JMenuItem("BackOrders");
    orders.add(backorders);

    JMenu customers = new JMenu("Customers");
    menubar.add(customers);
    JMenuItem customersales = new JMenuItem("Customer Sales");
    customers.add(customersales);
    JMenuItem customeritems = new JMenuItem("Customer Items");
    customers.add(customeritems);
    JMenuItem customerprices = new JMenuItem("Customer Prices");
    customers.add(customerprices);
    JMenuItem customerlistings = new JMenuItem("Customer Listings");
    customers.add(customerlistings);

    JMenu inv = new JMenu("INV");
    menubar.add(inv);
    JMenuItem surplusinv = new JMenuItem("Surplus Inv");
    inv.add(surplusinv);
    JMenuItem stockinv = new JMenuItem("Stock Inv");
    inv.add(stockinv);

    JMenu search = new JMenu("Searh");
    menubar.add(search);
    JMenuItem itemsearch = new JMenuItem("Item Search");
    search.add(itemsearch);
    JMenuItem customersearch = new JMenuItem("Customer Search");
    search.add(customersearch);

    JMenu menulostsales = new JMenu("Lost Sales");
    menubar.add(menulostsales);
    JMenuItem lostsales = new JMenuItem("Lost Sales");
    menulostsales.add(lostsales);


    JMenu menumarginadvisor = new JMenu("Margin Advisor");
    menubar.add(menumarginadvisor);
    JMenuItem marginadvisor = new JMenuItem("Margin Advisor");
    menumarginadvisor.add(marginadvisor);


    JMenu menumakeandhold = new JMenu("Make and Hold");
    menubar.add(menumakeandhold);
    JMenuItem makeandhold = new JMenuItem("Make and Hold");

    menumakeandhold.add(makeandhold);

    makeandhold.addActionListener(
      new ActionListener(){
        public void actionPerformed(ActionEvent e)
        {
          System.out.println("Make and Hold is pressed");
          frame.print("Make and Hold is pressed");
          System.out.println("Hello World");
          frame.print("Hello World");
// This is Make and Hold Area

        }
      }
    );

    class exitaction implements ActionListener {
      public void actionPerformed (ActionEvent e){
        System.exit(0);
      }
    }
    exit.addActionListener(new exitaction());


  }

}
Respuesta: 2

Puedo imprimir en la consola, pero parece que no puedo imprimir en el marco.

¿Qué quieres decir exactamente?

Si desea establecer un título en el Marco, puede usar setTitle:

frame.setTitle("a title");

De lo contrario, si desea agregar algún texto, al menos debe agregar algún componente a su JFrame. Echa un vistazo a JLabel :

JLabel label = new JLabel();
frame.getContentPane().add(label);

cuando necesitas cambiar el texto:

label.setText("some text");
Respuesta: 3
  • Nunca use el EDT (subproceso de despachador de eventos) para otras cosas además de dejar que maneje la GUI. main() El método en Java Gui sale después de programar la construcción de la GUI en el subproceso de despachador de eventos. Entonces es el EDT el que lo maneja.

P.ej:

public static void main(String[] args){

    EventQueue.invokeLater(new Runnable(){

         public void run(){

             myframe.setVisible(true);

           } 
      }
  }
  • Necesita algo como JLablepara agregar cosas como Título .

  • Puede agregar un JPanela JFramey luego agregar un JTextFielda él.

Respuesta: 4

No imprime en un marco. ¿Quizás desee agregar un JTextArea y agregarle datos?

Respuesta: 5

Bien, ¿entonces necesitas algo para mostrar en el marco, algo así como un JLabel??

frame.setLayout(new BorderLayout());
JLabel lblMessage = new JLabel(); // You'll probably need to declare this as final
frame.add(lblMessage);

Luego, en su acción, el oyente podría hacer algo como

public void actionPerformed (ActionEvent e){
    label.setText("This is a message from the menu item");
}
Respuesta: 6

Tengo una consulta que devuelve una lista de entidades. Cuando trato de poner esta lista en el caché, obtengo la familiar java.lang.IllegalArgumentException. Sin embargo ... puedo poner cada elemento dentro de la lista para ...

booleano yn = verdadero; while (yn) {System.out.println ("ingrese su nombre"); nombre de char = (char) System.in.read (); interruptor (nombre) {...

Estoy tratando de cargar un archivo en una aplicación de arranque de primavera que se ejecuta dentro de un contenedor Docker pero obtengo la siguiente excepción: java.nio.file.FileSystemNotFoundException en com.sun.nio ...

Puedo recuperar una lista de archivos de un directorio usando el siguiente código public List listClassFilesForFolder (carpeta de archivo final) {for (final File fileEntry: folder.listFiles ()) {...