Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 设置函数大小会造成混乱_Java_Swing_Jframe - Fatal编程技术网

Java 设置函数大小会造成混乱

Java 设置函数大小会造成混乱,java,swing,jframe,Java,Swing,Jframe,这段代码运行得很好。但是当我放置setSize(700700)并运行代码时,它不会显示JButtons,而只显示框架。我认为JButtons的网格布局可能存在一些问题,因此我将每个gridlayout的最后两个条目更改为,比如gridlayout(3,1300300)。但是,结果是相同的(即没有可见的jbutton)。为什么会这样 import java.awt.*; import javax.swing.*; public class Calculator extends JFrame {

这段代码运行得很好。但是当我放置
setSize(700700)
并运行代码时,它不会显示JButtons,而只显示框架。我认为JButtons的网格布局可能存在一些问题,因此我将每个gridlayout的最后两个条目更改为,比如
gridlayout(3,1300300)
。但是,结果是相同的(即没有可见的jbutton)。为什么会这样

import java.awt.*;
import javax.swing.*;
public class Calculator extends JFrame
{
    JButton jb[]=new JButton[12];
    public Calculator(String title)
    {
    super(title);
    Container c;
    c=getContentPane();
    setSize(100,100);
    setVisible(true);
    Panel p1=new Panel();
    for(int h=0;h<9;h++)
    {jb[h]=new JButton(""+(h+1));}
    jb[9]=new JButton("=");
    jb[10]=new JButton(".");
    jb[11]=new JButton("0");
    p1.setLayout(new GridLayout(4,3,3,3));
    for(int h=0;h<12;h++){p1.add(jb[h]);}

    Panel p2=new Panel(new GridLayout(3,1,3,3));
    JButton jb1[]=new JButton[3];
    jb1[0]=new JButton("+");
    jb1[1]=new JButton("-");
    jb1[2]=new JButton("*");
    for(int i=0;i<3;i++){
    p2.add(jb1[i]);}


    Panel p4=new Panel(new GridLayout(3,1,3,3));
    JButton jb4[]=new JButton[3];
     jb4[0]=new JButton("%");
     jb4[1]=new JButton("/");
    jb4[2]=new JButton("-");
    for(int i=0;i<3;i++){
    p4.add(jb4[i]);}

    Panel p3=new Panel();
    JLabel jl0=new JLabel("INPUT:");
    TextField tf=new TextField(30);
    p3.add(tf);
    p3.add(jl0);    
    jl0.setLayout(new FlowLayout(FlowLayout.LEFT));

    c.add(BorderLayout.CENTER,p1);
    c.add(BorderLayout.EAST,p2);
    c.add(BorderLayout.WEST,p4);
    c.add(BorderLayout.NORTH,p3);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    }
    public static void main(String args[])
    {new Calculator("Lets calculate ! :)");}
    }
import java.awt.*;
导入javax.swing.*;
公共类计算器扩展JFrame
{
JButton jb[]=新JButton[12];
公共计算器(字符串标题)
{
超级(标题);
容器c;
c=getContentPane();
设置大小(100100);
setVisible(真);
面板p1=新面板();

对于(int h=0;h您必须在方法末尾(添加按钮后)设置setVisible(true)。

您必须在方法末尾(添加按钮后)设置setVisible(true)。

因为
setSize()
会使组件层次结构无效,请参阅:

您需要重新验证它

为此,您可以在最后再次调用
revalidate();
甚至
setVisible(true)

最好先调用
pack();
,然后再调用
setVisible(true);
,而不是在向jframe添加任何组件之前调用
setVisible()

因为
setSize()
会使组件层次结构无效,请参阅:

您需要重新验证它

为此,您可以在最后再次调用
revalidate();
甚至
setVisible(true)


最好先调用
pack();
,然后再调用
setVisible(true);
,而不是在将任何组件添加到jframe之前调用
setVisible()

您使用的是
setSize(100100);
这会创建一个非常小的窗口。相反,请使用
pack()在构造器的末尾使用
将框架与面板匹配。

您正在使用
设置大小(100100);创建一个非常小的窗口。相反,在构造器的末尾使用打包();将框架与面板匹配。

因此…设置可见(true)是否使框架可见而不是按钮?但当使用GridLayout(3,1,3,3)设置大小(100100)时,按钮不可见,但在我将其最大化后变为可见。为什么它们不保持不可见?在最大化窗口时,按钮会自行改变其大小。但在设置大小(700700)的情况下,在最小化时,它们变得可见?为什么?这就是我在ans中告诉你的,你的setSize使jFrame的组件层次结构无效,resize事件再次验证它,因此按钮再次可见。所以…setVisible(true)使框架可见,而不是按钮?但是当setSize(100100)与GridLayout(3,1,3,3)一起时,按钮不可见,但在我将其最大化后变为可见。为什么它们不保持不可见?在最大化窗口时,按钮会自行改变其大小。但在设置大小(700700)的情况下,在最小化时它们变得可见?为什么如此?这就是我在ans中告诉你的,你的setSize使jFrame的组件层次结构无效,resize事件再次验证它,因此按钮再次可见。是的..这给了我一个很酷的输出!:)但我不得不使用show();也为了显示GUI.pack();只是在等待数据。但是,谢谢!我有一个新东西要学(即pack())。是的……这给了我一个很酷的输出!:)但是我不得不使用show();也是为了显示GUI。pack();只是在等待数据。但是,谢谢!我有一个新东西要学(即pack())。