使用loop(for)添加JButton什么都不做

时间:2014-05-14 23:39:32

标签: java swing for-loop jpanel jbutton

我尝试使用"为"添加各种JButton到JPanel。但是没有用。没有编译或其他错误。按钮刚好不会出现。

一点上下文,我在另一个类中创建一个ArryList(" GestorFrigo")从DataBase获取数据,这很好用,数组包含所有数据,没有问题。从数组中备份数据。

这是我的代码:提前致谢。

    import gestor.GestorFrigo;

import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseListener;
import java.util.ArrayList;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JButton;
import javax.swing.JScrollBar;

@SuppressWarnings("serial")
public class VentanaInterior extends JFrame {

    private JPanel contentPane;
    private JButton btnPerfiles;
    private JButton btnAadir;
    private JButton btnRecetas;
    private JScrollBar scrollBar;

    private GestorFrigo frigo;

    private ArrayList<JButton> botones;
    private ArrayList<Object> boton;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    VentanaInterior frame = new VentanaInterior();
                    frame.setVisible(true);

                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public VentanaInterior() {

        //Componentes       
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 556, 363);
        setLocationRelativeTo(null);
        setTitle("Tu Frigorífico Inteligente");
        setIconImage(new ImageIcon(getClass().getResource("img/logo.png")).getImage());

        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);

        btnPerfiles = new JButton("Perfiles");
        btnPerfiles.setBounds(0, 302, 96, 23);
        contentPane.add(btnPerfiles);

        btnAadir = new JButton("A\u00F1adir alimento");
        btnAadir.setBounds(369, 302, 148, 23);
        contentPane.add(btnAadir);

        btnRecetas = new JButton("Recetas");
        btnRecetas.setBounds(96, 302, 103, 23);
        contentPane.add(btnRecetas);

        scrollBar = new JScrollBar();
        scrollBar.setBounds(523, 0, 17, 325);
        contentPane.add(scrollBar);

        JButton btnQueso = new JButton();
        btnQueso.setBounds(24, 35, 62, 61);
        contentPane.add(btnQueso);

        frigo = new GestorFrigo(); //creamos el gestor
        String imagen = frigo.getArray().get(1).getImagen(); //cogemos la imagen asociada al alimento

        btnQueso.setIcon(new ImageIcon("src/img/"+imagen));

        for(int i=0;i<frigo.getArray().size();i++){

            JButton boton = new JButton();
            String imagen2 = frigo.getArray().get(i).getImagen();
            boton.setIcon(new ImageIcon("src/img/"+imagen2));
            contentPane.add(boton);

        }


    }
}

1 个答案:

答案 0 :(得分:2)

不要使用空布局。

默认情况下,您的按钮的默认大小为(0,0),因此无需绘制任何内容。

使用布局管理器,可能是GridLayout,布局管理器将为您确定每个按钮的大小和位置。

阅读Swing教程o Using Layout Managers中的部分,了解更多信息和工作示例。