是的,我在谷歌上搜索了大约30分钟。是的,在stackoverflow中有两篇关于这个主题的不同帖子,但这些帖子并没有给我任何解决问题的方法。
我使用了相当多的面板和BoxLayout来定位一些东西。当我试图将最后一件事添加到我的主面板时,我得到了"BoxLayout无法共享"。
代码:
private void open(int i) {
JLabel titelLabel = new JLabel("Aufgabenblatttitel: ");
JTextField titelTextField = new JTextField();
JLabel dozentLabel = new JLabel("Dozent: ");
JTextField dozentTextField = new JTextField();
JLabel beschreibungLabel = new JLabel("Aufgabenblattbeschreibung: ");
JTextField beschreibungTextField = new JTextField();
JLabel studiengangLabel = new JLabel("Studiengang: ");
JTextField studiengangTextField = new JTextField();
JLabel dateLabel = new JLabel("Erstellt am: ");
for(Aufgabe aufgabe : data.get(i).getAufgaben()) {
JPanel aufgabenPanel = new JPanel();
JLabel aufgabeTitelLabel = new JLabel("Titel: ");
JTextField aufgabeTitelTextField = new JTextField();
aufgabeTitelTextField.setText(aufgabe.getTitel());
JPanel aufgabeTitelPanel = new JPanel();
aufgabeTitelPanel.add(aufgabeTitelLabel);
aufgabeTitelPanel.add(aufgabeTitelTextField);
aufgabeTitelPanel.setLayout(new BoxLayout(aufgabeTitelPanel, BoxLayout.LINE_AXIS));
JLabel aufgabeBeschreibungLabel = new JLabel("Beschreibung: ");
JTextField aufgabeBeschreibungTextField = new JTextField();
aufgabeBeschreibungTextField.setText(aufgabe.getBeschreibung());
JPanel aufgabeBeschreibungPanel = new JPanel();
aufgabeBeschreibungPanel.add(aufgabeBeschreibungLabel);
aufgabeBeschreibungPanel.add(aufgabeBeschreibungTextField);
aufgabeBeschreibungPanel.setLayout(new BoxLayout(aufgabeBeschreibungLabel, BoxLayout.LINE_AXIS));
JLabel aufgabeLoesungLabel = new JLabel("Lösung: ");
JTextField aufgabeLoesungTextField = new JTextField();
aufgabeLoesungTextField.setText(aufgabe.getLoesung());
JPanel aufgabeLoesungPanel = new JPanel();
aufgabeLoesungPanel.add(aufgabeLoesungLabel);
aufgabeLoesungPanel.add(aufgabeLoesungTextField);
aufgabeLoesungPanel.setLayout(new BoxLayout(aufgabeLoesungPanel, BoxLayout.LINE_AXIS));
aufgabenPanel.add(aufgabeTitelPanel);
aufgabenPanel.add(aufgabeBeschreibungPanel);
aufgabenPanel.add(aufgabeLoesungPanel);
aufgabenPanel.setLayout(new BoxLayout(aufgabenPanel, BoxLayout.PAGE_AXIS));
this.add(aufgabenPanel);
}
}
这是类"AufgabeEditieren"的一部分,定义为:
public class AufgabeEditieren extends JPanel { ... }
因此:AufgabeEditieren构造函数在初始化类之后调用open()。它试图创建一些面板和对象,并希望通过"this.add(aufgabenPanel);"将它们添加到类本身。这引用了类AufgabeEditieren(它的对象)。那么,为什么它不起作用呢?这是一个小组,应该能够得到这些物品吗?谢谢
好吧,我花了一段时间,因为我真的不熟悉你的母语(如果你用英文名称发布代码作为变量,对每个人来说都会简单得多),但问题来自这里:
aufgabeBeschreibungPanel.setLayout(new BoxLayout(aufgabeBeschreibungLabel, BoxLayout.LINE_AXIS));
您在aufgabeBeschreibungPanel
上设置了BoxLayout,但您提供了aufgabeBeschreibungLabel
作为BoxLayout
的参数。你应该写:
aufgabeBeschreibungPanel.setLayout(new BoxLayout(aufgabeBeschreibungPanel, BoxLayout.LINE_AXIS));
当看到这个问题时,最常见的原因是您写道:
y.setLayout(new BoxLayout(x, BoxLayout.XXX));
其中CCD_ 4和CCD_。