首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BoxLayout不能共享

BoxLayout不能共享
EN

Stack Overflow用户
提问于 2014-10-29 15:47:16
回答 1查看 385关注 0票数 0

是的,我搜索了大约30分钟。是的,在堆栈溢出中有关于这个主题的两篇不同的文章,但是这些文章并没有给我任何解决我的问题的方法。

我使用了相当多的面板与BoxLayout定位一些东西。当我试图将最后一件东西添加到我的主面板时,我得到了"BoxLayout不能共享“。

代码:

代码语言:javascript
复制
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“的一部分,定义为:

代码语言:javascript
复制
public class AufgabeEditieren extends JPanel { ... }

因此: AufgabeEditieren构造函数在类初始化后调用open()。它试图创建一些面板和对象,并希望通过"this.add(aufgabenPanel);“将它们添加到类本身。这是引用类AufgabeEditieren (它的对象)。那为什么不起作用呢?这是一个面板,应该能够得到这些项目?谢谢..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-29 20:12:39

好吧,这花了我一段时间,因为我真的不熟悉你的母语(如果你把你的英文名字写成变量的代码,这对每个人来说都要简单得多),但问题来自以下几个方面:

代码语言:javascript
复制
aufgabeBeschreibungPanel.setLayout(new BoxLayout(aufgabeBeschreibungLabel, BoxLayout.LINE_AXIS));

您在BoxLayout上设置了一个aufgabeBeschreibungPanel,但是您提供了aufgabeBeschreibungLabel作为BoxLayout的一个参数。相反,你应该写:

代码语言:javascript
复制
aufgabeBeschreibungPanel.setLayout(new BoxLayout(aufgabeBeschreibungPanel, BoxLayout.LINE_AXIS));

当看到这个问题时,最常见的原因是你写道:

代码语言:javascript
复制
y.setLayout(new BoxLayout(x, BoxLayout.XXX));

其中yx是不同的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26634819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档