Java 在JApplet上的不同位置添加两个JPanel
我试图在Java 在JApplet上的不同位置添加两个JPanel,java,swing,jpanel,layout-manager,Java,Swing,Jpanel,Layout Manager,我试图在JApplet上的不同位置添加两个JPanel对象。 但此代码引发异常: java.lang.IllegalArgumentException: illegal component position 有人会纠正这个代码吗 import java.awt.FlowLayout; import javax.swing.*; public class TwoPanel extends JApplet { JPanel p1,p2; JLabel l1,l2; @
JApplet
上的不同位置添加两个JPanel
对象。
但此代码引发异常:
java.lang.IllegalArgumentException: illegal component position
有人会纠正这个代码吗
import java.awt.FlowLayout;
import javax.swing.*;
public class TwoPanel extends JApplet {
JPanel p1,p2;
JLabel l1,l2;
@Override
public void init()
{
p1=new JPanel();
p2=new JPanel();
p1.setLayout(new FlowLayout());
p2.setLayout(new FlowLayout());
l1=new JLabel("Panel 1");
l2=new JLabel("panel 2");
p1.add(l1,0,0);
p2.add(l2,100,100);
add(p1);
add(p2);
p1.setFocusable(true);
p2.setFocusable(true);
}
}
例外情况
这不是如何在面板中定位对象。在空白处使用边框
import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;
/* <applet code=TwoPanel width=400 height=300></applet> */
public class TwoPanel extends JApplet {
JPanel p1,p2;
JLabel l1,l2;
@Override
public void init()
{
// JApplet defaults to BorderLayout
System.out.println(getLayout());
p1=new JPanel();
p2=new JPanel();
p1.setLayout(new FlowLayout());
p2.setLayout(new FlowLayout());
l1=new JLabel("Panel 1");
l2=new JLabel("panel 2");
p1.add(l1);
p1.setBackground(Color.RED);
p2.add(l2);
p2.setBackground(Color.GREEN);
p2.setBorder(new EmptyBorder(100,100,100,100));
// a panel added to a BorderLayout with no constraint ends in the CENTER
add(p1, BorderLayout.PAGE_START);
// but the CENTER only shows ONE component.
add(p2);
p1.setFocusable(true);
p2.setFocusable(true);
}
}
import java.awt.*;
导入javax.swing.*;
导入javax.swing.border.*;
/*1,以及2的布局填充和边框
@这是我的问题!是的,我看到了。请看AndrewThompson的答案以获得一些有用的提示。如果答案有助于解决问题,请给出答案。
p1.add(l1,0,0);
import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;
/* <applet code=TwoPanel width=400 height=300></applet> */
public class TwoPanel extends JApplet {
JPanel p1,p2;
JLabel l1,l2;
@Override
public void init()
{
// JApplet defaults to BorderLayout
System.out.println(getLayout());
p1=new JPanel();
p2=new JPanel();
p1.setLayout(new FlowLayout());
p2.setLayout(new FlowLayout());
l1=new JLabel("Panel 1");
l2=new JLabel("panel 2");
p1.add(l1);
p1.setBackground(Color.RED);
p2.add(l2);
p2.setBackground(Color.GREEN);
p2.setBorder(new EmptyBorder(100,100,100,100));
// a panel added to a BorderLayout with no constraint ends in the CENTER
add(p1, BorderLayout.PAGE_START);
// but the CENTER only shows ONE component.
add(p2);
p1.setFocusable(true);
p2.setFocusable(true);
}
}