JavaGUI按钮

JavaGUI按钮,java,swing,Java,Swing,我有一个程序,但我不能将文本字段和按钮组合在同一个框架中,就像在顶部文本字段和下方的按钮: 以下是我的源代码: import java.awt.*; import javax.swing.*; public class FirstGui extends JFrame { JTextField texts; JButton button; public FirstGui() { texts = new JTextField(15);

我有一个程序,但我不能将
文本字段
按钮
组合在同一个框架中,就像在顶部
文本字段
和下方的
按钮

以下是我的源代码:

import java.awt.*;
import javax.swing.*;
public class FirstGui extends JFrame
{
     JTextField texts;
 JButton button;   

    public FirstGui()
    {
        texts = new JTextField(15);
        add(texts);
        button = new JButton("Ok");
        add(button);

    }
    public static void main(String args [])
    {
        FirstGui gui = new FirstGui();
        gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        gui.setSize(200,125);
        gui.setVisible(true);

    }
}

添加类似于
FlowLayout
的布局:

public FirstGui()
{
    setLayout(new FlowLayout());
    texts = new JTextField(15);
    add(texts);
    button = new JButton("Ok");
    add(button);

}

在构造器的最开始处,在任何其他内容之前。

添加一个类似于
FlowLayout
的布局:

public FirstGui()
{
    setLayout(new FlowLayout());
    texts = new JTextField(15);
    add(texts);
    button = new JButton("Ok");
    add(button);

}

在构造器的最开始,在任何其他内容之前。

对于
JFrame
,默认布局是
BorderLayout
。将组件添加到
BorderLayout
时,如果未指定其
BorderLayout
位置,如
BorderLayout.SOUTH
,则组件将自动添加到
BorderLayout.CENTER
。但问题是,每个位置只能有一个组件。因此,当您添加
文本
时,它会被添加到
中心
。然后,当您添加
按钮时,它会被添加到
中心
,但
文本
会被踢出。所以要解决这个问题,你可以

add(texts, BorderLayout.NORTH);
add(button, BorderLayout.CENTER);
有关布局管理器的详细信息,请参见


更新

import java.awt.*;
import javax.swing.*;

public class FirstGui extends JFrame {

    JTextField texts;
    JButton button;

    public FirstGui() {
        texts = new JTextField(15);
        add(texts, BorderLayout.CENTER);
        button = new JButton("Ok");
        add(button, BorderLayout.SOUTH);

    }

    public static void main(String args[]) {
        FirstGui gui = new FirstGui();
        gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        gui.pack();
        gui.setVisible(true);

    }
}

对于
JFrame
,默认布局为
BorderLayout
。将组件添加到
BorderLayout
时,如果未指定其
BorderLayout
位置,如
BorderLayout.SOUTH
,则组件将自动添加到
BorderLayout.CENTER
。但问题是,每个位置只能有一个组件。因此,当您添加
文本
时,它会被添加到
中心
。然后,当您添加
按钮时,它会被添加到
中心
,但
文本
会被踢出。所以要解决这个问题,你可以

add(texts, BorderLayout.NORTH);
add(button, BorderLayout.CENTER);
有关布局管理器的详细信息,请参见


更新

import java.awt.*;
import javax.swing.*;

public class FirstGui extends JFrame {

    JTextField texts;
    JButton button;

    public FirstGui() {
        texts = new JTextField(15);
        add(texts, BorderLayout.CENTER);
        button = new JButton("Ok");
        add(button, BorderLayout.SOUTH);

    }

    public static void main(String args[]) {
        FirstGui gui = new FirstGui();
        gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        gui.pack();
        gui.setVisible(true);

    }
}

请看:陈述你期望发生的事情和实际发生的事情总是一个好主意。比“我不能”或“不行”要好得多。看:陈述你期望发生的事情和实际发生的事情总是一个好主意。比“我不能”或“不工作”要好得多。我已经尝试过了,但错误是java.lang。错误:不要使用FirstGui。setLayout()使用FirstGui.getContentPane().setLayout()代替。不要使用FirstGui.setLayout(),这样不行。FirstGui指的是类,而不是实例。只需按原样编写setLayout(new FlowLayout())。有什么可以尝试的吗?我已经尝试过了,但错误是java.lang。错误:不要使用FirstGui。setLayout()使用FirstGui.getContentPane().setLayout()代替。不要使用FirstGui.setLayout(),这是行不通的。FirstGui指的是类,而不是实例。只需按原样编写setLayout(new FlowLayout())。有什么可以尝试的吗?相同的java.lang.Error:ccccccccc我不知道你做错了什么,它对我很好。我知道setLayout(new FlowLayout());可以工作,但我会得到java.lang.error:((先生,我使用JCreator。使用业界标准的IDE,如Netbeans或Eclipse。可以免费下载相同的java.lang.error:ccccccccccc我不知道你做错了什么,它对我来说很好。我知道setLayout(new FlowLayout());可以工作,但我会得到java.lang.error:((先生,我正在使用JCreator。使用业界标准的IDE,如Netbeans或Eclipse。可以免费下载