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