java - 我在这里缺少什么? (可能是显而易见的事情)

标签 java swing jframe jpanel layout-manager

该程序用于创建电影列表。电影正在通过“添加”按钮(JButton)添加,还有一个“删除”按钮可以清除 Jtextfield。代码可以编译,但只显示空白 JFrame。我缺少什么? (Java 导入是存在的,但是粘贴它们会占用太多空间)

public class SamodzielnaListaOsob extends JFrame  implements ActionListener {

JButton add, erease;
JTextField film;
DefaultListModel<String> listFilm;

public SamodzielnaListaOsob(String title){
    super(title);

        setDefaultCloseOperation(EXIT_ON_CLOSE);


        final JTextField film = new JTextField("Tutaj wpisz tytul filmu", 10);
        film.setBorder(BorderFactory.createTitledBorder(null, "Film"));

        JPanel p1 = new JPanel();
            p1.add(film);


        JButton add = new JButton("Dodaj do listy");
            add.addActionListener(new ActionListener(){
                @Override
                public void actionPerformed(ActionEvent e) {
                            String nowyFilm = film.getText();
                                if (nowyFilm !=""){
                                    listFilm.addElement(nowyFilm);
                                    film.setText("");
                                }
                }
            });
            JButton erease = new JButton("Wyczysc pole");
                erease.addActionListener(new ActionListener(){
                    @Override
                    public void actionPerformed(ActionEvent e) {
                         film.setText("");

                    }
                });

                JPanel p2 = new JPanel();
                p2.add(add);
                p2.add(erease);

                listFilm = new DefaultListModel<String>();
                listFilm.addElement("Film0");
                listFilm.addElement("Film1");
                listFilm.addElement("Film2");





             setPreferredSize(new Dimension(900, 900));      
             pack();
             setVisible(true);
}




public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            new SamodzielnaListaOsob("List of movies");
        }
    });
}



}

最佳答案

代码将组件添加到面板,但面板永远不会添加到框架。

enter image description here

 //setPreferredSize(new Dimension(900, 900));
 p1.add(p2);
 setContentPane(p1);

完整的、可编译的源代码。

import javax.swing.*;
import java.awt.*;

public class SamodzielnaListaOsob extends JFrame {

    JButton add, erease;
    JTextField film;
    DefaultListModel<String> listFilm;

    public SamodzielnaListaOsob(String title){
        super(title);
        setDefaultCloseOperation(EXIT_ON_CLOSE);

        final JTextField film = new JTextField("Tutaj wpisz tytul filmu", 10);
        film.setBorder(BorderFactory.createTitledBorder(null, "Film"));

        JPanel p1 = new JPanel();
        p1.add(film);
        JButton add = new JButton("Dodaj do listy");
        JButton erease = new JButton("Wyczysc pole");

        JPanel p2 = new JPanel();
        p2.add(add);
        p2.add(erease);

        listFilm = new DefaultListModel<String>();
        listFilm.addElement("Film0");
        listFilm.addElement("Film1");
        listFilm.addElement("Film2");

        //setPreferredSize(new Dimension(900, 900));
        p1.add(p2);
        setContentPane(p1);
        pack();
        setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new SamodzielnaListaOsob("List of movies");
            }
        });
    }
}

关于java - 我在这里缺少什么? (可能是显而易见的事情),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21309485/

相关文章:

Java字符转字符串

java - 如何使用 MiGLayout 将组件居中放置在包含多个组件的行上

java - 我可以捕获退出 JTextField 的事件吗

java - JSlider 不调整形状大小

java - 将信息从 ArrayList 从一个类传递到 WindowsBuilder GUI 类

java - Web 服务器上的 Php 或 Java

java - 反向打印循环单链表

java - jBCrypt 无法验证密码

java - Oracle Java 教程中的 AbsoluteLayoutDemo.java

java - pack() 之后 JFrame 的大小为奇数