调整JavaSwing应用程序中没有Jframe的jpanel的大小

调整JavaSwing应用程序中没有Jframe的jpanel的大小,java,swing,jframe,jpanel,Java,Swing,Jframe,Jpanel,作为学习的一部分,我在一个简单的swing应用程序中创建了一个JPanel。 我把它弄得没装饰过。 现在只显示一个JPanel。我应用了组件移动并将关闭按钮添加到此面板,但面板的大小是固定的 如何使我的JPanel可调整大小 这是我的面板 包装x; 公共类TestRun扩展了javax.swing.JFrame{ /** * Creates new form TestRun */ public TestRun() { setUndecorated(true); initCom

作为学习的一部分,我在一个简单的swing应用程序中创建了一个JPanel。 我把它弄得没装饰过。 现在只显示一个JPanel。我应用了组件移动并将关闭按钮添加到此面板,但面板的大小是固定的

如何使我的JPanel可调整大小

这是我的面板

包装x; 公共类TestRun扩展了javax.swing.JFrame{

/**
 * Creates new form TestRun
 */
public TestRun() {
    setUndecorated(true);
    initComponents();
    setMouseListener();
}
private void setMouseListener() {
    MoveMouseListener mlistener = new MoveMouseListener(jMenuBar1);
    jMenuBar1.addMouseListener(mlistener);
    jMenuBar1.addMouseMotionListener(mlistener);
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">                          
private void initComponents() {

    jPanel1 = new javax.swing.JPanel();
    jMenuBar1 = new javax.swing.JMenuBar();
    jMenu1 = new javax.swing.JMenu();
    jMenu2 = new javax.swing.JMenu();
    jMenuItem1 = new javax.swing.JMenuItem();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

    javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
    jPanel1.setLayout(jPanel1Layout);
    jPanel1Layout.setHorizontalGroup(
        jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0, 1090, Short.MAX_VALUE)
    );
    jPanel1Layout.setVerticalGroup(
        jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0, 689, Short.MAX_VALUE)
    );

    jMenu1.setText("File");
    jMenuBar1.add(jMenu1);

    jMenu2.setText("Exit");

    jMenuItem1.setText("Exit");
    jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jMenuItem1ActionPerformed(evt);
        }
    });
    jMenu2.add(jMenuItem1);

    jMenuBar1.add(jMenu2);

    setJMenuBar(jMenuBar1);

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addComponent(jPanel1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
    );

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

private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {                                           
    // TODO add your handling code here:
    System.exit(EXIT_ON_CLOSE);
}                                          

/**
 * @param args the command line arguments
 */
public static void main(String args[]) {
    /* Set the Nimbus look and feel */
    //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
    /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
     * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
     */
    try {
        for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
            if ("Nimbus".equals(info.getName())) {
                javax.swing.UIManager.setLookAndFeel(info.getClassName());
                break;
            }
        }
    }
    catch (ClassNotFoundException ex) {
        java.util.logging.Logger.getLogger(TestRun.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    }
    catch (InstantiationException ex) {
        java.util.logging.Logger.getLogger(TestRun.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    }
    catch (IllegalAccessException ex) {
        java.util.logging.Logger.getLogger(TestRun.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    }
    catch (javax.swing.UnsupportedLookAndFeelException ex) {
        java.util.logging.Logger.getLogger(TestRun.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    }
    //</editor-fold>

    /* Create and display the form */
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new TestRun().setVisible(true);
        }
    });
}

// Variables declaration - do not modify                     
private javax.swing.JMenu jMenu1;
private javax.swing.JMenu jMenu2;
private javax.swing.JMenuBar jMenuBar1;
private javax.swing.JMenuItem jMenuItem1;
private javax.swing.JPanel jPanel1;
// End of variables declaration                   
/**
*创建新表单TestRun
*/
公共测试运行(){
未装饰的设置(真实);
初始化组件();
setMouseListener();
}
私有void setMouseListener(){
MoveMouseListener mlistener=新的MoveMouseListener(jMenuBar1);
jMenuBar1.addMouseListener(mlistener);
jMenuBar1.addMouseMotionListener(mlistener);
}
@抑制警告(“未选中”)
//                           
私有组件(){
jPanel1=newjavax.swing.JPanel();
jMenuBar1=newjavax.swing.JMenuBar();
jMenu1=newjavax.swing.JMenu();
jMenu2=newjavax.swing.JMenu();
jMenuItem1=newjavax.swing.JMenuItem();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
javax.swing.GroupLayout jPanel1Layout=新的javax.swing.GroupLayout(jPanel1);
setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0,1090,短。最大值)
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0,689,短。最大值)
);
setText(“文件”);
jMenuBar1.add(jMenu1);
jMenu2.setText(“退出”);
jMenuItem1.setText(“退出”);
jMenuItem1.addActionListener(新java.awt.event.ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent evt){
jMenuItem1执行的操作(evt);
}
});
jMenu2.add(jMenuItem1);
jMenuBar1.add(jMenu2);
setJMenuBar(jMenuBar1);
javax.swing.GroupLayout=newjavax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(布局);
layout.setHorizontalGroup(
createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1,javax.swing.GroupLayout.DEFAULT\u SIZE,javax.swing.GroupLayout.DEFAULT\u SIZE,Short.MAX\u值)
);
layout.setVerticalGroup(
createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1、javax.swing.GroupLayout.Alignment.TRAILING、javax.swing.GroupLayout.DEFAULT\u SIZE、javax.swing.GroupLayout.DEFAULT\u SIZE、Short.MAX\u值)
);
包装();
}//                         
private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt){
//TODO在此处添加您的处理代码:
系统退出(关闭时退出);
}                                          
/**
*@param指定命令行参数
*/
公共静态void main(字符串参数[]){
/*设置Nimbus的外观和感觉*/
//
/*如果Nimbus(在JavaSE6中引入)不可用,请使用默认的外观。
*详情请参阅http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
*/
试一试{
for(javax.swing.UIManager.LookAndFeelInfo:javax.swing.UIManager.getInstalledLookAndFeels()){
if(“Nimbus”.equals(info.getName())){
setLookAndFeel(info.getClassName());
打破
}
}
}
捕获(ClassNotFoundException ex){
getLogger(TestRun.class.getName()).log(java.util.logging.Level.SEVERE,null,ex);
}
catch(实例化异常){
getLogger(TestRun.class.getName()).log(java.util.logging.Level.SEVERE,null,ex);
}
捕获(非法访问例外){
getLogger(TestRun.class.getName()).log(java.util.logging.Level.SEVERE,null,ex);
}
catch(javax.swing.UnsupportedLookAndFeelException ex){
getLogger(TestRun.class.getName()).log(java.util.logging.Level.SEVERE,null,ex);
}
//
/*创建并显示表单*/
invokeLater(new Runnable()){
公开募捐{
新建TestRun().setVisible(true);
}
});
}
//变量声明-不修改
私有javax.swing.JMenu jMenu1;
私有javax.swing.JMenu jMenu2;
私有javax.swing.JMenuBar jMenuBar1;
私有javax.swing.JMenuItem jMenuItem1;
私有javax.swing.JPanel jPanel1;
//变量结束声明

}

您应该能够使用
setPreferredSize(维度大小)并调用
pack()

上,您可以显示您的JPanel的代码吗?您希望如何调整JPanel的大小?在运行时?如何显示此
JPanel
I应用组件移动
-这是什么意思?更新了代码。。这是JPanel。如何在运行时调整其大小?(与调整窗口或JFrame大小的方法相同)从概念上讲,您需要执行以下操作。此示例向您展示了如何移动未装饰的窗口,这也是调整大小的基础。我知道设置最小/首选/最大大小并不是实现此效果的最优雅的方法,而是与“pack();”结合使用这是将组件调整为所需尺寸并重新计算其周围容器的最简单方法。通常,当我这样做时,我会将所有3个维度设置为相同的大小。“另一个”问题是,这不是op实际要求的,他们希望能够手动调整未装饰框架的大小。如果您“需要”提供大小调整提示,最好根据需要重写getter方法