BoxLayout不工作?

时间:2014-06-01 15:00:05

标签: java swing layout-manager illegalargumentexception boxlayout

我有这个代码似乎抛出IllegalComponentException,我不知道为什么。归结为这些代码行:

JRadioButton setRed = new JRadioButton(“Red", true);
JRadioButton setBlue = new JRadioButton("Blue", false);
JRadioButton setYellow = new JRadioButton("Yellow", false);
JPanel options = new JPanel();
options.add(setBlue, BoxLayout.Y_AXIS);//error here
options.add(setRed, BoxLayout.Y_AXIS);//and probably here too
options.add(setYellow, BoxLayout.Y_AXIS);//and here

这是错误:

Exception in thread "main" java.lang.IllegalArgumentException: illegal component position
    at java.awt.Container.addImpl(Container.java:1034)
    at java.awt.Container.add(Container.java:406)
    at DrawCanvas.go(DrawCanvas.java:42)
    at DrawCanvas.main(DrawCanvas.java:27)

1 个答案:

答案 0 :(得分:2)

你的代码毫无意义。在向JPanel添加组件时,不使用BoxLayout常量,而是在创建BoxLayout对象时使用常量,这是您尚未完成的。

你需要:

  • 使用适当的BoxLayout常量创建BoxLayout对象,并传入对将使用此布局的容器的引用。
  • 将JPanel的布局设置为此对象
  • 将您的组件添加到JPanel ,不带常量。
  • 最重要的是,你需要阅读教程,因为很明显你在没有先检查这个重要资源的情况下尝试使用这个工具。你无法猜测这些东西并期望它能够发挥作用。

Google:Java BoxLayout tutorial。第一次打。