我有这段代码,似乎抛出一个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)
你的代码没有意义。在向JPanel添加组件时不使用BoxLayout常量,而是在创建BoxLayout对象时使用这些常量,这是您还没有做过的事情。
你需要:
- 使用适当的BoxLayout常量创建一个BoxLayout对象,并传递一个引用到将使用此布局的容器。
- 设置JPanel的布局为这个对象
- 在JPanel 中添加不带常量的组件。
- 最重要的是,你需要阅读教程,因为很明显,你试图使用这个工具,没有先检查这个重要的资源。你不能猜测这些东西,并期望它工作。
Google: Java BoxLayout tutorial
。第一次打击。