frame.setlayout(null);
时间: 2023-04-21 10:00:47 浏览: 85
frame.setLayout(null)是Java Swing中设置窗口布局为null布局的方法。这意味着窗口中的组件可以自由定位和调整大小,而不受任何布局管理器的限制。这种布局方式需要手动设置每个组件的位置和大小,因此需要更多的编程工作。
相关问题
public class Login_Register extends JFrame{ Login_Register() { init(); } //登录界面初始化 public void init() { final JFrame frame = new JFrame("登录"); frame.setLayout(null); JLabel nameStr = new JLabel("账号:"); nameStr.setBounds(250, 200, 100, 25); frame.add(nameStr); JLabel passwordStr = new JLabel("密码:"); passwordStr.setBounds(250, 250, 100, 25); frame.add(passwordStr); final JTextField userID = new JTextField(); userID.setBounds(300, 200, 150, 25); frame.add(userID); final JPasswordField password = new JPasswordField(); password.setBounds(300, 250, 150, 25); frame.add(password); JButton buttonlogin = new JButton("登录"); buttonlogin.setBounds(275, 300, 70, 25); frame.add(buttonlogin); JButton buttonregister = new JButton("注册"); buttonregister.setBounds(375, 300, 70, 25); frame.add(buttonregister); frame.setBounds(400, 100, 800, 640); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true);
这是一个 Java 语言编写的登录界面的代码,采用了 JFrame 类来创建窗口,包含账号、密码输入框和登录、注册按钮。其中 init() 方法进行登录界面的初始化设置,使用了 JLabel、JTextField、JPasswordField 和 JButton 等 Swing 组件来构建界面。整个窗口的位置、大小、关闭方式等也在 init() 方法中进行了设置。
import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JButton; import javax.swing.JTextField; import javax.swing.JLabel; import java.awt.*; public class demo extends Frame{ public static void main(String[] args) { JFrame frame=new JFrame();//创建一个窗口 frame.setTitle("开始你的复制吧!");//设置窗口标题 frame.setBounds(400,400,400,400);//设置窗口的位置和大小 frame.setVisible(true);//设置Frame为可见,默认不可见 frame.setBackground(Color.CYAN);//设置Frame的背景色 //JPanel panel=new JPanel();//创建一个面板 JTextField textField1=new JTextField(30); JTextField textField2=new JTextField(30); JLabel label1=new JLabel("输入你要拷贝的文件:"); JLabel label2=new JLabel("输入拷到哪里去:"); textField1.setColumns(30); textField2.setColumns(30); label1.setBounds(10,10,100,20); label2.setBounds(10,40,100,20); textField1.setBounds(110,10,80,20); textField2.setBounds(110,40,50,20); frame.setLayout(null);//不适用布局管理器,设置为NULL frame.add(label1); frame.add(textField1); frame.add(label2); frame.add(textField2); //frame.setSize(400,100); //frame.setLocation(300,200); frame.setVisible(true); } }看一下哪里有问题,为什么生成的界面需要手动拉一下才显示文字和框
在这段代码中,你使用了 `setLayout(null)` 来将布局管理器设置为 `null`,这意味着你需要手动设置组件的位置和大小,否则它们将不会显示在你想要的位置。你需要调整组件的位置和大小,使它们适合窗口的大小。
另外,你创建了一个 `Frame` 对象,但是你没有使用它,而是创建了一个 `JFrame` 对象。如果你想使用 `Frame`,你需要将所有的 `JFrame` 替换为 `Frame`。或者,如果你想使用 `JFrame`,你可以将类的继承关系修改为 `public class demo extends JFrame`。
这是一个修正过的代码示例,它应该可以正常工作:
```java
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JLabel;
import java.awt.*;
public class demo extends JFrame {
public static void main(String[] args) {
JFrame frame = new JFrame();// 创建一个窗口
frame.setTitle("开始你的复制吧!");// 设置窗口标题
frame.setBounds(400, 400, 400, 400);// 设置窗口的位置和大小
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 设置窗口关闭时的操作
frame.setLayout(null);// 不使用布局管理器,设置为NULL
JTextField textField1 = new JTextField(30);
JTextField textField2 = new JTextField(30);
JLabel label1 = new JLabel("输入你要拷贝的文件:");
JLabel label2 = new JLabel("输入拷到哪里去:");
textField1.setColumns(30);
textField2.setColumns(30);
label1.setBounds(10, 10, 120, 20);
label2.setBounds(10, 40, 120, 20);
textField1.setBounds(140, 10, 200, 20);
textField2.setBounds(140, 40, 200, 20);
frame.add(label1);
frame.add(textField1);
frame.add(label2);
frame.add(textField2);
frame.setVisible(true);// 设置Frame为可见,默认不可见
}
}
```
阅读全文