首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >下拉菜单不显示(intellij编辑器)

下拉菜单不显示(intellij编辑器)
EN

Stack Overflow用户
提问于 2021-06-25 21:52:21
回答 1查看 292关注 0票数 0

我想了解一下GUI设计人员。为此,我想从一个简单的程序开始,该程序有一个下拉菜单,其中包含项目。但是,由于某些原因,在执行时没有显示这些项。

代码语言:javascript
复制
package DSA;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

public class App {
    public JPanel window_main;
    public JComboBox<String> Klimaauswahl;

    public App() {
        Klimaauswahl.addActionListener(new ActionListener() {
              @Override
        public void actionPerformed(ActionEvent e) {

        }
    });
}

    public static void main(String[] args) {

        JFrame klima = new JFrame("Klimazone");
        klima.setContentPane(new App().window_main);
        klima.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        klima.pack();
        klima.setVisible(true);
        klima.setLocation(430, 100);


        String[] klimazonen;
        klimazonen = new String[]{ "Ewiges Eis", "Tundra", "Nördliche Steppen", "Nördliches 
        Hochland", "Kalkgebirge", "Mittelländische Gebirge", "Nördliche Wälder (Westküste)", 
        "Nördliche Wälder (Taiga)","Nördliche Wälder (Bornland)", "Nördliche Sümpfe", 
        "Mittelländisches Heideland", "Mittelländische Wälder", "Yaqirische Wälder", "Tobrische 
        Wälder", "Immergrüne Wälder", "Savanne", "Wüstenrandgebiete", "Wüste", "Südliche Gebirge", 
        "Maraskan", "Südliche Sümpfe", "Regenwald", "Regengebirge" };

        final JComboBox<String> Klimaauswahl = new JComboBox<>(klimazonen);
        klima.add(Klimaauswahl);
        Klimaauswahl.setVisible(true);
    }
}

GUI表单本身包含一个名为"window_main“的JComboBox和一个名为"Klimaauswahl”的JComboBox。对不起,我用德语来表示变量和对象,但是对于我和使用代码的伙伴来说,这样更容易理解。

当我执行程序时,没有编译错误。但是我在控制台中得到以下消息:

代码语言:javascript
复制
Exception in thread "main" java.lang.NullPointerException 
    at m.intellij.uiDesigner.core.GridLayoutManager.addLayoutComponent(GridLayoutManager.java:134)
    at java.awt.Container.addImpl(Container.java:1130)
    at java.awt.Container.add(Container.java:1007)
    at javax.swing.JFrame.addImpl(JFrame.java:567)
    at java.awt.Container.add(Container.java:419)
    at DSA.App.main(App.java:38)

最后,程序被执行,但是下拉菜单是空的。我真的希望我提供了所有的信息。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-25 22:24:48

您将内容窗格设置为null,因为在使用window_main之前从未初始化过它。

对于要使用哪个Klimaauswahl (请不要用大写开始变量名)也有一些混淆。在App中有一个,还有另一个,实际上是在添加到框架的main()中初始化的。

我只能猜到你有点搞不懂这是什么。问问自己应用程序实例变量是什么,以及创建它们的目的是什么。

好的,下面是我从您的代码中创建的一些工作示例,希望您阅读我更改/添加/删除的内容,并从中解决它。

代码语言:javascript
复制
package dsa;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

public class App {

    public static void main(String[] args) {

        JFrame klima = new JFrame("Klimazone");
        JPanel actualContentPane = new JPanel();
        final JLabel sampleLabel = new JLabel( "Initialized text" );
        String[] klimazonen = { "Ewiges Eis", "Tundra", "Nördliche Steppen", "Nördliches Hochland",
            "Kalkgebirge", "Mittelländische Gebirge", "Nördliche Wälder (Westküste)", 
            "Nördliche Wälder (Taiga)","Nördliche Wälder (Bornland)", "Nördliche Sümpfe", 
            "Mittelländisches Heideland", "Mittelländische Wälder", "Yaqirische Wälder", "Tobrische Wälder",
            "Immergrüne Wälder", "Savanne", "Wüstenrandgebiete", "Wüste", "Südliche Gebirge", 
            "Maraskan", "Südliche Sümpfe", "Regenwald", "Regengebirge" };
            
        final JComboBox<String> klimaauswahl = new JComboBox<>(klimazonen);
        
        klimaauswahl.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) { 
                sampleLabel.setText( klimaauswahl.getSelectedItem().toString() );
            }
        });    
            
        klima.setContentPane( actualContentPane );
        klima.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        klima.setLocation(430, 100);
        klima.setSize( 300, 300 );

        klima.getContentPane().add(klimaauswahl);
        klima.getContentPane().add(sampleLabel);
        klima.setVisible(true);
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68137399

复制
相关文章

相似问题

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