Java中JDialog如何调整大小,要可行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中JDialog如何调整大小,要可行相关的知识,希望对你有一定的参考价值。

setBounds不行

   JDidalog有一个setBound()方法可以更改对话框的大小,示例如下:

package com.han;  
  
import java.awt.*;  
import java.awt.event.ActionEvent;  
import java.awt.event.ActionListener;  
  
import javax.swing.*;  
  
/** 
 * This program demonstrates the creation of a JDialog from a super-window. 
 * The created dialog is on the mode "Modal". 
 * @author han 
 * 
 */  
public class SwingJDialog   
    public SwingJDialog()  
        final JFrame jf=new JFrame("弹出窗体实验");  
        // Some methods defined by Toolkit query the native operating system directly.  
        Dimension screensize=Toolkit.getDefaultToolkit().getScreenSize();   
        int Swing1x=500;  
        int Swing1y=300;  
        jf.setBounds(screensize.width/2-Swing1x/2,screensize.height/2-Swing1y/2,Swing1x,Swing1y);  
        jf.setVisible(true);  
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
        Container c=jf.getContentPane();  
        c.setBackground(Color.pink);  
        c.setLayout(null);  
  
        Dimension Swing1size=jf.getSize();  
        JButton jb=new JButton("弹出对话窗");  
        int jbx=100;  
        int jby=30;  
        jb.setBounds(Swing1size.width/2-jbx/2,Swing1size.height/2-jby/2,jbx,jby);  
        //jb.setBounds(Swing1x/2-jbx/2,Swing1y/2-jby/2,jbx,jby);  
        c.add(jb);  
  
        class Dialog1   
            JDialog jd=new JDialog(jf,"JDialog窗体",true);  
            Dialog1()  
  
                jd.setSize(300,200);  
                Container c2=jd.getContentPane();  
                c2.setLayout(null);  
                JLabel jl=new JLabel("只是一个对话框");  
                jl.setBounds(0,-20,100,100);  
                JButton jbb=new JButton("确定");  
                jbb.setBounds(100,100,60,30);  
                c2.add(jl);  
                c2.add(jbb);  
                jbb.addActionListener(new ActionListener()  
                    @Override  
                    public void actionPerformed(ActionEvent e)   
                        jd.dispose();  
                        //System.exit(0);  
                      
  
                );  
                System.out.println("OK");  
  
                jd.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);  
  
              
          
  
        jb.addActionListener(new ActionListener()  
            public void actionPerformed(ActionEvent e)  
                new Dialog1().jd.setVisible(true);//弹出对话框  
                System.out.println("OK2");  
              
        );  
        System.out.println("OK3");  
      
  
    public static void main(String[] args)  
        new SwingJDialog();  
      
参考技术A 肯定可以用setBounds的。
setBounds的后两个参数,就是长度和高,你设置得大点,肯定是可行的。一般窗体、对话框只用setBounds方法。
setLocation和setSize这两个方法的综合其实就是JDialog。由于对话框处于屏幕下,所以本身不存在布局管理,直接用setBounds方法。
四个参数分别是:对话框左上角起点横坐标,对话框左上角起点纵坐标,对话框的长度,对话框的高。
要不你setVisable(true);一下就可见了。本回答被提问者采纳
参考技术B setlocation和setsize试下行不行

java - 如何在java swing中检查当前窗口大小?

【中文标题】java - 如何在java swing中检查当前窗口大小?【英文标题】:How to check current window size in java swing? 【发布时间】:2012-01-10 02:47:42 【问题描述】:

例如,窗口的大小改变了(用户调整了它的大小),如何获取当前的窗口大小?

【问题讨论】:

"如何获取当前窗口大小?" 你认为你为什么需要它?我已经编写了 100 多个 GUI,并且很少需要获取父容器的大小(尤其是在调整大小时)。 你如何处理框架的大小调整? 【参考方案1】:
Rectangle r = frame.getBounds();
h = r.height;
w = r.width;

【讨论】:

【参考方案2】:

假设您有一个在其中绘制界面的 JFrame:

Dimension size = frame.getBounds().getSize()

返回框架的尺寸。此外,您可以为框架提供一个调整大小处理程序,以便在用户调整框架大小时捕获:

    class ResizeListener implements ComponentListener 

        public void componentHidden(ComponentEvent e) 
        public void componentMoved(ComponentEvent e) 
        public void componentShown(ComponentEvent e) 

        public void componentResized(ComponentEvent e) 
            Dimension newSize = e.getComponent().getBounds().getSize();          
           
    

    frame.addComponentListener(new ResizeListener());

【讨论】:

如果您不覆盖大多数方法,我会考虑改用ComponentAdaper【参考方案3】:

只需使用getSize()方法:javadoc

【讨论】:

我在该链接上收到 404。请更新它并补充您的答案,因此这不会在将来使其无效。 getSize() 哪个类的方法? @VictorMoraes 自从 OP 暂停了一段时间,我更新了断开的链接。

以上是关于Java中JDialog如何调整大小,要可行的主要内容,如果未能解决你的问题,请参考以下文章

更改 Qt 布局中的调整大小行为

如何根据也调整大小的终端宽度打印字符数?

磁盘上的图像文件大小(KB)随着Java中动态图像大小的调整(减小大小)而增加

PyQt5,让用户调整小部件的大小

Java - 如何在 GroupLayout 中调整组件的大小

如何在Java中裁剪调整大小的图像?