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。可以免费下载