Java 并排创建同一类的多个实例
如何将同一类的3个相同实例并排放置?在下面的代码中,这3个是相互重叠的-我如何修改它使它们并排Java 并排创建同一类的多个实例,java,swing,class,Java,Swing,Class,如何将同一类的3个相同实例并排放置?在下面的代码中,这3个是相互重叠的-我如何修改它使它们并排 import java.awt.BorderLayout; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JPanel; public class RestaurantBillCalculatorMain { public static void main(String[] args
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class RestaurantBillCalculatorMain {
public static void main(String[] args) {
if (args.length != 2) {
JOptionPane.showMessageDialog(null,
"Correct arguments not provided.\nPlease enter database username and password on the command line.\nProgram will now exit.");
} else {
JFrame frame = new JFrame();
JPanel mainPanel = new JPanel();
mainPanel.setSize(1200, 600);
mainPanel.setVisible(true);
RestaurantBillCalculator application1 = new RestaurantBillCalculator(
"jdbc:mysql://localhost:3306/restaurant", args[0], args[
application1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
application1.setSize(400, 600);
application1.setVisible(true);
RestaurantBillCalculator application2 = new RestaurantBillCalculator(
"jdbc:mysql://localhost:3306/restaurant", args[0], args[1]);
application2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
application2.setSize(400, 600);
application2.setVisible(true);
RestaurantBillCalculator application3 = new RestaurantBillCalculator(
"jdbc:mysql://localhost:3306/restaurant", args[0], args[1]);
application3.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
application3.setSize(400, 600);
application3.setVisible(true);
mainPanel.add(application1);
mainPanel.add(application2);
mainPanel.add(application3);
frame.add(mainPanel);
}
} // end method main
}
代码中还出现了一个错误:“线程中的异常”main“java.lang.IllegalArgumentException:将窗口添加到容器”。这是什么原因造成的
构造函数的一部分如下所示,我怀疑这与此有关
Container contentPane = getContentPane();
contentPane.setLayout( null );
我对Java基本上是新手,因此仍在学习。要回答关于使用布局管理器的原始问题,您可以在这里尝试阅读Java教程: 下面是一些简单的入门代码,可以帮助您基本了解如何在一行中水平地重新排列组件:
...
/*
when you add components to the layout, it will
automatically add them to your mainPanel, so the following is unnecessary.
mainPanel.add(application1);
mainPanel.add(application2);
mainPanel.add(application3);
*/
frame.add(mainPanel);
GroupLayout layout = new GroupLayout(mainPanel);
mainPanel.setLayout(layout);
//set margins around components by default
layout.setAutoCreateContainerGaps(true);
layout.setAutoCreateGaps(true);
layout.setHorizontalGroup(layout.createSequentialGroup()
.addComponent(application1)
.addComponent(application2)
.addComponent(application3));
layout.setVerticalGroup(layout.createParallelGroup()
.addComponent(application1)
.addComponent(application2)
.addComponent(application3));
上面的链接有图片,可以更好地显示布局管理器如何解释水平组和垂直组 使用?可能重复的?我们被要求在每个实例中使用绝对定位,我可以使用布局管理器来定位每个实例吗?是的,布局管理器会工作得很好,并且比绝对定位灵活得多。发生错误的原因是您将JFrame添加到JPanel。那就像是想把车塞进人的身体里--简直是疯了。解决方案:不要这样做。根据经验,我可以告诉你,猜测这些东西是行不通的,所以请阅读教程,不要将JFrames放入JPanels中,而是将JPanels放入JFrames中。为什么要使用复杂的GroupLayout,一个更适合代码生成软件的布局管理器,而不是更容易处理的GridLayout?你是对的,GridLayout绝对是这里最好的选择:感谢你们的帮助-我已经尝试添加了上面的代码(我可以理解它是如何工作的),但是我仍然得到了上面提到的java异常?