JAVA用frame实现图中2个窗口 怎么写啊? 100
图片看起来很模糊,隐约看到需要一个登录窗口,那就分享一下以前练习的登录窗口demo吧。
先上效果图:
源码如下:
AbsoluteLoginFrame.java
public class AbsoluteLoginFrame extends JFrame {
private static final int LOGIN_WIDTH = 600;
private static final int LOGIN_HEIGHT = 400;
private static final long serialVersionUID = -2381351968820980500L;
public AbsoluteLoginFrame(){
//设置窗口标题
setTitle("登录界面");
//设置一个初始面板,填充整个窗口
JPanel loginPanel = new JPanel();
//设置背景颜色
loginPanel.setBackground(new Color(204, 204, 204));//#CCC
loginPanel.setLayout(null);
JPanel centerPanel = new JPanel();
centerPanel.setBackground(Color.WHITE);
centerPanel.setBounds(114, 70, 360, 224);
centerPanel.setLayout(null);
JLabel jLabel = new JLabel("用户名:");
jLabel.setOpaque(true);
jLabel.setBackground(Color.YELLOW);
jLabel.setBounds(60, 60, 54, 20);
JLabel label = new JLabel("密 码:");
label.setOpaque(true);
label.setBackground(Color.CYAN);
label.setBounds(60, 90, 54, 20);
JTextField textField = new JTextField(15);
textField.setBounds(130, 60, 166, 21);
JPasswordField passwordField = new JPasswordField(15);
passwordField.setBounds(130, 90, 166, 21);
JButton jButton = new JButton("登录");
jButton.setBounds(148, 120, 62, 28);
centerPanel.add(jLabel);
centerPanel.add(label);
centerPanel.add(textField);
centerPanel.add(jButton);
centerPanel.add(passwordField);
loginPanel.add(centerPanel);
getContentPane().add(loginPanel);//将初始面板添加到窗口中
setSize(LOGIN_WIDTH, LOGIN_HEIGHT);//设置窗口大小
setLocation(Screen.getCenterPosition(LOGIN_WIDTH, LOGIN_HEIGHT));//设置窗口位置
setDefaultCloseOperation(EXIT_ON_CLOSE);//设置窗口默认关闭方式
setResizable(false);
setVisible(true);
}
public static void main(String[] args) {
new AbsoluteLoginFrame();
}
}
Screen.java
public class Screen {
private int width;
private int height;
public Screen(){
Toolkit toolkit = Toolkit.getDefaultToolkit();
Dimension screenSize = toolkit.getScreenSize();
this.width = screenSize.width;
this.height = screenSize.height;
}
public static Point getCenterPosition(int width, int height){
Screen screen = new Screen();
int x = (screen.getWidth() - width) / 2;
int y = (screen.getHeight() - height) / 2;
return new Point(x, y);
}
public int getWidth() {
return width;
}
public void setWidth(int width) {
this.width = width;
}
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
}
2.AWT中的两个核心类为Container和Component。
3.Frame是Window的子类,由Frame或其子类创建的对象为一个窗体,构造方法如下:
Frame()
Frame(String s)//创建标题栏为字符串s的窗口
4.创建一个简单地窗口,代码如下:
import java.awt.*;
public class Frame1 {
public static void main(String[] args) {
Frame a = new Frame("Frame");//new一个frame对象
a.setSize(50,50);//设置大小
a.setBackground(Color.red);//设置背景颜色
a.setLocation(100,100);//设置窗口的宽和高
a.setResizable(false);//设置窗口大小为不可变
a.setVisible(true);//是把图形界面设置为可见
}
}
5.FlowLayout是Pannel默认的布局管理器,panel不能独立显示,必须加在某个容器中,FlowLayout对组件默认的对齐方式是居中。
构造方法如下:
new FlowLayout(FlowLayout.LEFT,20,30);//左对齐,组件之间水平之间距离为20个像素,垂直距离为30个像素
new FlowLayout(FlowLayout.RIGHT);//右对齐,水平和垂直距离为缺省值5
new FlowLayout();//使用缺省的居中对齐方式,水平和垂直间距为缺省值5
6.现在编一个小程序,来熟悉一下FlowLayout的用法:
import java.awt.*;
public class Frame2 {
public static void main(String[] args) {
Frame a = new Frame("选一下");
FlowLayout b = new FlowLayout(FlowLayout.RIGHT,10,20);//
a.setLayout(b);
a.setLocation(100,200);
a.setSize(100,200);
a.add(new TextField("你心情好吗?"));
a.add(new Button(" YES"));
a.add(new Button(" NO"));
a.setVisible(true);
}
}程序执行后拉动窗口的大小,窗口中的组件的排列会自动发生变化
0818b9ca8b590ca3270a3433284dd417.png
7.pack()方法默认窗口的大小,可在未设置窗口大小时使用 8.BorderLayout是Frame类的默认布局管理器,BorderLayout可以分为东西南北中五个区域,每个区域只能放一个组件,不指定组件的加入位置,默认为加入中间的位置 用法: Button b = new Button("aa"); a.add(b.BorderLayout.WEST); //相当于:a.dd(b,"West"); 9.GridLayout布局管理器将空间划分成规则的矩形网格,每个网格区域大小相等 用法: GridLayout(3,4);//3表示行数,4表示列数
一个是三个JText文本框,,只需要设置一下宽高就行,外加一个JButton
另一个是两个JText加一个JButton
其中JText设置一下长宽就行,需要注意的是第一个是需要将JText和JButton放在一起的,好像是用JLabel框起来,具体的记不清了,你可以参考下楼下的回答,或者网上找找,第二个不需要框,至于距离,应该是有个布局方式是调距离来着,忘记是啥了,JFrame组件基本用不上,你也没必要深入研究