向Java添加标题和文本字段

向Java添加标题和文本字段,java,swing,user-interface,paint,Java,Swing,User Interface,Paint,我有一个小程序已经开始与多个菜单项 单击一个项目时,我希望在框架上显示一些内容,单击另一个项目时,第一个项目消失,第二个项目出现 我可以打印到控制台,但似乎无法打印到框架 如有任何建议,将不胜感激: import javax.swing.*; import java.awt.*; import java.awt.event.*; public class melco extends JFrame{ public static void main(String[] args){ JF

我有一个小程序已经开始与多个菜单项

单击一个项目时,我希望在框架上显示一些内容,单击另一个项目时,第一个项目消失,第二个项目出现

我可以打印到控制台,但似乎无法打印到框架

如有任何建议,将不胜感激:

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());


}

}   

你不能打印到相框上。也许您想添加一个JTextArea并向其附加数据?

为什么不在JMenuItems上添加一个MouseListener?您可以将最新的“message”引用作为成员变量保存,并在另一个MouseListener被触发时将其从JFrame中删除。

好的,因此您需要在框架上显示一些内容,例如
JLabel

frame.setLayout(new BorderLayout());
JLabel lblMessage = new JLabel(); // You'll probably need to declare this as final
frame.add(lblMessage);
然后,在你的行动中,听众可以做如下事情

public void actionPerformed (ActionEvent e){
    label.setText("This is a message from the menu item");
}
我可以打印到控制台,但似乎无法打印到框架

你到底是什么意思

如果要在框架上设置标题,可以使用setTitle:

frame.setTitle("a title");
否则,如果您想添加一些文本,您至少需要向JFrame添加一些组件。 看看:

当您需要更改文本时:

label.setText("some text");
  • 除了让EDT处理GUI之外,永远不要将它用于其他事情main()方法在将Gui的构造调度到事件调度程序线程后退出。因此,是EDT来处理它。
例如:

public static void main(String[] args){

    EventQueue.invokeLater(new Runnable(){

         public void run(){

             myframe.setVisible(true);

           } 
      }
  }
  • 您需要像
    JLable
    这样的东西来添加像Title这样的东西

  • 您可以将
    JPanel
    添加到
    JFrame
    中,然后将
    JTextField
    添加到其中


无法打印到帧,因为帧没有打印方法。如果要直接将文本添加到框架中,则应绘制文本。这需要通过以下技术覆盖
绘制
方法

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());


  }

}

欢迎来到这个论坛:-)为了让潜在的帮助者更容易,请学习java命名约定并坚持它们。谢谢,这是我前进所需要的!接下来,我将尝试向不同的事件处理程序添加一些文本框和按钮。
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());


  }

}