在按钮单击时更改jFrame的大小

时间:2014-10-01 16:27:53

标签: java swing jbutton

我正在jFrame上创建一个“Presentation”作为项目的一部分,需要一些帮助。 我从一个200,200尺寸的框架开始,中间有一个按钮,上面写着“让我们开始” 然后当你点击它时,框架的大小会改变。当我单击按钮时,您必须拖动窗口使其成为已定义的大小,因为窗口保持原始200乘200,它不会将窗口打开到1335乘675。

这是我的代码。

package randomGUIs;

import java.awt.Color;
import java.awt.Dimension;

public class Presentation extends javax.swing.JFrame {

public Presentation() {
    initComponents();

    startPanel.setBackground(Color.blue);

}

@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">                          
private void initComponents() {

    startPanel = new javax.swing.JPanel();
    jButton1 = new javax.swing.JButton();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

    jButton1.setText("Let's Start");
    jButton1.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jButton1ActionPerformed(evt);
        }
    });

    javax.swing.GroupLayout startPanelLayout = new javax.swing.GroupLayout(startPanel);
    startPanel.setLayout(startPanelLayout);
    startPanelLayout.setHorizontalGroup(
        startPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(startPanelLayout.createSequentialGroup()
            .addGap(50, 50, 50)
            .addComponent(jButton1)
            .addContainerGap(49, Short.MAX_VALUE))
    );
    startPanelLayout.setVerticalGroup(
        startPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(startPanelLayout.createSequentialGroup()
            .addGap(78, 78, 78)
            .addComponent(jButton1)
            .addContainerGap(77, Short.MAX_VALUE))
    );

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addContainerGap()
            .addComponent(startPanel, javax.swing.GroupLayout.DEFAULT_SIZE,      javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addContainerGap())
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addContainerGap()
            .addComponent(startPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addContainerGap())
    );

    pack();
}// </editor-fold>                        

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         

    startPanel.setSize(new Dimension(1335, 675));
    startPanel.setMaximumSize(new Dimension(1335, 675));
    startPanel.setMinimumSize(new Dimension(1335, 675));

    jButton1.setVisible(false);

}                                        

public static void main(String args[]) {

    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new Presentation().setVisible(true);
        }
    });
}

private javax.swing.JButton jButton1;
private javax.swing.JPanel startPanel;

}

我尝试使用startPanel.repaint();没有运气。

2 个答案:

答案 0 :(得分:0)

除非你告诉它,否则你的JFrame不会自动调整大小。像这样:

 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

        startPanel.setSize(new Dimension(1335, 675));
        startPanel.setMaximumSize(new Dimension(1335, 675));
        startPanel.setMinimumSize(new Dimension(1335, 675));

        frame.setSize(1335, 675);

        jButton1.setVisible(false);

    }

您也可以使用JFrame类的pack()函数,具体取决于您想要做什么。

答案 1 :(得分:0)

只需使用此功能设置框架尺寸即可。 要使用此功能,您必须包含相关的包。

import java.awt.Dimension;
...
setSize(new Dimension(1320,220));