Java 添加具有绝对位置的多个JTextfields

Java 添加具有绝对位置的多个JTextfields,java,jtextfield,absolute,Java,Jtextfield,Absolute,我目前正在学习java编程课程,该项目涉及为一家餐厅制作计算器。我们必须使用绝对位置来定位所有GUI元素。我的项目进展顺利(我想)。我只是很难将大量的JTextfield添加到GUI中,每次我添加并放入X&Y坐标时,它并不是添加第二个或第三个JTexfield,而是将第一个JTextfield移动到最后定义的位置。我不能100%确定我是否正确解释了这个问题,所以我附上了问题的截图 在此方面的任何帮助都将不胜感激 import java.awt.Container; import java.awt

我目前正在学习java编程课程,该项目涉及为一家餐厅制作计算器。我们必须使用绝对位置来定位所有GUI元素。我的项目进展顺利(我想)。我只是很难将大量的
JTextfield
添加到GUI中,每次我添加并放入X&Y坐标时,它并不是添加第二个或第三个
JTexfield
,而是将第一个
JTextfield
移动到最后定义的位置。我不能100%确定我是否正确解释了这个问题,所以我附上了问题的截图

在此方面的任何帮助都将不胜感激

import java.awt.Container;
import java.awt.Insets;
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.Font;
import javax.swing.JTextField;

public class RestaurantCalculator {
     public static void addComponentsToPane(Container pane){
        pane.setLayout(null);

       JLabel Welcome = new JLabel("Restuarant");
              Welcome.setBounds(250, 5, 150, 100);
              Welcome.setFont(new Font("Arial Black", Font.BOLD, 20));


       JLabel Waiter = new JLabel("Waiter Information");
          Waiter.setBounds(100, 100, 200, 100);
          Waiter.setFont(new Font("Arial Black", Font.BOLD, 14));

   JLabel Tableno = new JLabel("Table number:");
          Tableno.setBounds(120, 130, 200, 100);
          Tableno.setFont(new Font("Arial Black", Font.BOLD, 12));


   JLabel WaiterName = new JLabel("Waiter Name:");
          WaiterName.setBounds(120, 160, 200, 100);
          WaiterName.setFont(new Font("Arial Black", Font.BOLD, 12));

    JLabel MenuItems = new JLabel("Menu Items");
           MenuItems.setBounds(100, 220, 150, 100);
           MenuItems.setFont(new Font("Arial Black", Font.BOLD, 14));

    JLabel Beverage = new JLabel("Beverage:");
           Beverage.setBounds(120, 250, 200, 100);
           Beverage.setFont(new Font("Arial Black", Font.BOLD, 12));

    JLabel Appetizer = new JLabel("Appetizer:");
           Appetizer.setBounds(120, 280, 200, 100);
           Appetizer.setFont(new Font("Arial Black", Font.BOLD, 12));

    JLabel MainCourse = new JLabel("Main Course:");
           MainCourse.setBounds(120, 310, 200, 100);
           MainCourse.setFont(new Font("Arial Black", Font.BOLD, 12));

    JLabel Dessert = new JLabel("Dessert:");
           Dessert.setBounds(120, 340, 200, 100);
           Dessert.setFont(new Font("Arial Black", Font.BOLD, 12));

    JLabel SubTotal = new JLabel("Sub Total:");
           SubTotal.setBounds(120, 440, 200, 100);
           SubTotal.setFont(new Font("Arial Black", Font.BOLD, 12));

    JLabel Tax = new JLabel("Tax:");
           Tax.setBounds(120, 470, 200, 100);
           Tax.setFont(new Font("Arial Black", Font.BOLD, 12));

    JLabel Total = new JLabel("Total:");
           Total.setBounds(120, 500, 200, 100);
           Total.setFont(new Font("Arial Black", Font.BOLD, 12));


    JTextField Table = new JTextField(10);
           Table.setBounds(290, 171, 150, 20);


   pane.add(Welcome);       
   pane.add(Waiter);
   pane.add(Tableno);
   pane.add(WaiterName);
   pane.add(MenuItems);
   pane.add(Beverage);
   pane.add(Appetizer);
   pane.add(MainCourse);
   pane.add(Dessert);
   pane.add(SubTotal);
   pane.add(Tax);
   pane.add(Total);
   pane.add(Table);

}

/**
 * Create the GUI and show it.  For thread safety,
 * this method should be invoked from the
 * event-dispatching thread.
 */
private static void createAndShowGUI() {
    //Create and set up the window.
    JFrame frame = new JFrame("Restaurant Bill Calculator");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    //Set up the content pane.
    addComponentsToPane(frame.getContentPane());

    //Size and display the window.
    Insets insets = frame.getInsets();
    frame.setSize(600 + insets.left + insets.right,
                  700 + insets.top + insets.bottom);
    frame.setVisible(true);
}

public static void main(String[] args) {
    //Schedule a job for the event-dispatching thread:
    //creating and showing this application's GUI.
    javax.swing.SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            createAndShowGUI();
        }
    });
}

}

大多数人都不同意,但如果您使用eclipse,则有一个windowbuilder插件可用于使用GUI生成GUI代码。正如我所见,您没有在该代码中添加更多JTextFields,您应该为每个字段获得内存(使用new关键字)此外,变量名应按约定以小写字母开头。我知道在示例中,我没有演示如何向窗格中添加额外的文本字段,但每次添加都会更改表文本字段,而不是向GUI中添加额外的文本字段,这意味着语法错误?也许你能告诉我们它到底说了什么,也许是导致它的代码?您不能将两个文本字段命名为相同的名称。这给了我一个语法错误,它只是将表textbox定位到一个名为WName的textbox的新声明位置…下面是我用来将名为WName的Textfirld添加到GUI窗格的代码。。。JTextField WName=新的JTextField(10);WName.setBounds(29020115020);然后我添加到pane…pane.add(WName);大多数人都会不同意,但是如果您使用eclipse,则有一个windowbuilder插件用于使用GUI生成GUI代码。正如我所看到的,您没有在该代码中添加更多JTextFields,您应该为每个字段获得内存(使用new关键字)此外,变量名应按约定以小写字母开头。我知道在示例中,我没有演示如何向窗格中添加额外的文本字段,但每次添加都会更改表文本字段,而不是向GUI中添加额外的文本字段,这意味着语法错误?也许你能告诉我们它到底说了什么,也许是导致它的代码?您不能将两个文本字段命名为相同的名称。这给了我一个语法错误,它只是将表textbox定位到一个名为WName的textbox的新声明位置…下面是我用来将名为WName的Textfirld添加到GUI窗格的代码。。。JTextField WName=新的JTextField(10);WName.setBounds(29020115020);然后我添加到pane…pane.add(WName);