java - 使用 ScrollPane java 的动态按钮

标签 java swing button jscrollpane

我想创建动态按钮(例如 15 个),但我可以在屏幕上看到它们(450,450),我尝试使用滚动 Pane ,但没有结果。这个想法很简单,创建 X 按钮并可以在屏幕中垂直滚动(按钮位于屏幕中央)

这是代码,但我不知道谁能让滚动 Pane 正常工作..总是有相同的结果(我不包括滚动 Pane 代码)

public class Consulta2 extends JFrame {

    private JPanel contentPane;
    private JLabel label;
    private JButton boton;


    public Consulta2() {




        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(450, 450);  
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);


        int x=50;
        for (int i=0;i<10;i++){


         JButton boton = new JButton("oli");

            GroupLayout gl_contentPane1 = new GroupLayout(contentPane);
            gl_contentPane1.setHorizontalGroup(
                gl_contentPane1.createParallelGroup(Alignment.LEADING)
                    .addGroup(gl_contentPane1.createSequentialGroup()
                        .addGap(163)
                        .addComponent(boton)
                        .addContainerGap(172, Short.MAX_VALUE))
            );
            gl_contentPane1.setVerticalGroup(
                gl_contentPane1.createParallelGroup(Alignment.LEADING)
                    .addGroup(gl_contentPane1.createSequentialGroup()
                        .addGap(50+x)
                        .addComponent(boton)
                        .addContainerGap(229, Short.MAX_VALUE))
            );
            contentPane.setLayout(gl_contentPane1);

            x=x+50;
         //contentPane.add(boton);


         setVisible(true);  
        }

         label = new JLabel("New label");
        GroupLayout gl_contentPane = new GroupLayout(contentPane);
        gl_contentPane.setHorizontalGroup(
            gl_contentPane.createParallelGroup(Alignment.LEADING)
                .addGroup(gl_contentPane.createSequentialGroup()
                    .addGap(183)
                    .addComponent(label))
        );
        gl_contentPane.setVerticalGroup(
            gl_contentPane.createParallelGroup(Alignment.LEADING)
                .addGroup(gl_contentPane.createSequentialGroup()
                    .addGap(68)
                    .addComponent(label))
        );
        contentPane.setLayout(gl_contentPane);

        Dimension tamFrame=this.getSize();//para obtener las dimensiones del frame
        Dimension tamPantalla=Toolkit.getDefaultToolkit().getScreenSize();      //para obtener el tamanio de la pantalla
        setLocation((tamPantalla.width-tamFrame.width)/2, (tamPantalla.height-tamFrame.height)/2);  //para posicionar
        setVisible(true);  



    }


    public void mostrar()
    {
        setVisible(true);
    }


    public void setText(String string) {
        //JLabel label = new JLabel();
        label.setText(string);

    }
}

http://imageshack.us/photo/my-images/94/45985657.jpg/

最佳答案

我很快在 JFrame 中完成了这个。 它对我有用。

    // the panel
    JPanel buttonPanel = new JPanel();
    buttonPanel.setLayout(new GridBagLayout());
    buttonPanel.setSize(new Dimension(400, 300)); // whatever

    // the scrollpane
    JScrollPane pane = new JScrollPane();
    pane.setSize(new Dimension(400, 300)); // whatever

    // GridBagConstraint for button
    GridBagConstraints constraint = new GridBagConstraints();
    constraint.anchor = GridBagConstraints.CENTER;
    constraint.fill = GridBagConstraints.NONE;
    constraint.gridx = 0;
    constraint.gridy = GridBagConstraints.RELATIVE;
    constraint.weightx = 1.0f;
    constraint.weighty = 1.0f;

    int sizeOfButtons = 50;
    for(int i = 0; i < sizeOfButtons; i++) {
        JButton button = new JButton();

        button.setText("Button #" + i);

        // other attributes you will set

        buttonPanel.add(button, constraint);
    }

    pane.setViewportView(buttonPanel);
    this.rootPane.add(pane); // or other panel etc.
    pane.updateUI();

关于java - 使用 ScrollPane java 的动态按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15913623/

相关文章:

java - 使用 ArrayList 存储变量

javascript - 单击按钮重新加载页面并更改按钮文本

java - 使用线程在同一个 jframe 上执行操作

java - 如何检测 ‘Save as PDF…’ 是从 OS X 上的 AWT PrinterJob 中选取的

java - Nimbus - 覆盖 TableHeader 的颜色

html - 带有CSS的图像按钮

javascript - 覆盖 Instaemail 弹出窗口的 CSS

java - 如何覆盖子类中的 @Autowired 属性

java - 使用java将数据插入mysql

java - 如何在单个注解中组合多个 Spring 测试注解?