Links zum gleichen Kurs:
https://www.bilibili.com/video/BV1HJ411q7jW?p=3&vd_source=a55a729a8abbc793a24a2504a9067a76
1: Richten Sie das erste Fenster ein
package ja615;
import javax.swing.JFrame;
public class WidonwRun {
public static void main(String[] args) {
// TODO Auto-generated method stub
FirstWindow first=new FirstWindow();
}
}
class FirstWindow extends JFrame{
public FirstWindow() {
init();
}
public void init() {
setTitle("first window");
setSize(400,200);
setLocation(20,20);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
}
2 Design und Implementierung des Login-Formulars
package ja615;
import javax.swing.*;
public class WidonwRun {
public static void main(String[] args) {
// TODO Auto-generated method stub
LoginFrame first=new LoginFrame();
}
}
class LoginFrame extends JFrame{
private JTextField txtUser;//用户名
private JPasswordField txtPwd;
private JLabel lblUser, lblPwd;
private JButton btnOk,btnExit;
LoginFrame() {
init();
}
public void init() {
lblUser =new JLabel("用户名"); //标签
lblPwd =new JLabel("密码");
lblUser.setBounds(20, 20, 60, 20); //设置控件的位置以及大小
lblPwd.setBounds(20, 50, 60, 20);
setLayout(null); //设置布局管理为null
txtUser=new JTextField(10); // 输入文本框
txtPwd=new JPasswordField(10);
txtUser.setBounds(80, 20, 100, 20); //设置文本框 x,y,长.高
txtPwd.setBounds(80, 50, 100, 20);
JButton btnOK =new JButton("确定");
JButton btnExit= new JButton("取消");
btnOK.setBounds(60, 100, 60, 20);
btnExit.setBounds(125, 100, 60, 20);
add(lblUser);
add(lblPwd);
add(txtUser);
add(txtPwd);
add(btnOK);
add(btnExit);
setBounds(1,1,250,200);
setTitle("登录窗体");
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
3: Einführung in gängige Kontrollklassen
Erstellen Sie ein Objekt mit der Klasse, die dem Steuerelement entspricht.
Zum Beispiel: Jlabel (Beschriftung) JButtton (Schaltfläche) JTextFiled (Text)
Gemeinsame Merkmale von Steuerelementen: Alle Steuerelemente erben die Jcomponent-Klasse.
Gemeinsame Methoden:
1:setText();
2:getText();
3:setbounds(x,y,width,length);
package demo;
import java.awt.Color;
import javax.swing.*;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
LoginFrame login=new LoginFrame();
}
}
class LoginFrame extends JFrame{
private JTextField txtUser;//用户名
private JPasswordField txtPwd;
private JLabel lblUser,lblPwd;
private JButton btnOK,btnExit;
private JRadioButton rb1,rb2; //声明我的单选钮对象
public LoginFrame() {
init();
}
public void init() {
lblUser=new JLabel("用户名"); //标签
lblPwd =new JLabel("密码");
lblUser.setBounds(20, 20, 60, 20);
lblPwd.setBounds(20, 50, 60, 20);
setLayout(null);
txtUser=new JTextField(10);
txtPwd=new JPasswordField(10);
txtUser.setBounds(80,20,100,20);
txtPwd.setBounds(80,50,100,20);
rb1=new JRadioButton("管理员",false); //创建单选按钮对象
rb1.setBounds(20, 70, 80, 20);
rb2=new JRadioButton("普通会员",false);
rb2.setBounds(80, 70, 80, 20);
btnOK =new JButton("确定");
btnExit=new JButton("取消");
btnOK.setBounds(60, 100, 60, 20);
btnExit.setBounds(125, 100, 60, 20);
add(lblUser);
add(lblPwd);
add(txtUser);
add(txtPwd);
add(rb1);
add(rb2);
add(btnExit);
add(btnOK);
setBounds(1,1,250,200);
setTitle("登录窗体");
setVisible(true);
}
}
4:Ereignishandler
wer Ereignisse generiert
– Quellobjekt
Bestimmen Sie, wer den Vorfall bearbeiten wird
– Listener
– Implementieren der Ereignisverarbeitungs-Abhörschnittstelle
– Vollständige Ereignisverarbeitungsmethode
Das Quellobjekt fügt ein Listener-Objekt für das Ereignis hinzu
package demo;
import java.awt.Color;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.*;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
LoginFrameWithAction login=new LoginFrameWithAction();
}
}
class LoginFrameWithAction extends JFrame implements ActionListener{
private JTextField txtUser;//用户名
private JPasswordField txtPwd;
private JLabel lblUser,lblPwd;
private JButton btnOK,btnExit;
private JRadioButton rb1,rb2; //声明我的单选钮对象
public LoginFrameWithAction() {
init();
}
public void init() {
lblUser=new JLabel("用户名"); //标签
lblPwd =new JLabel("密码");
lblUser.setBounds(20, 20, 60, 20);
lblPwd.setBounds(20, 50, 60, 20);
setLayout(null);
txtUser=new JTextField(10);
txtPwd=new JPasswordField(10);
txtUser.setBounds(80,20,100,20);
txtPwd.setBounds(80,50,100,20);
rb1=new JRadioButton("管理员",false); //创建单选按钮对象
rb1.setBounds(20, 70, 80, 20);
rb2=new JRadioButton("普通会员",false);
rb2.setBounds(80, 70, 80, 20);
btnOK =new JButton("确定");
//给按钮添加事件监听器对象
btnOK.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
String re="";
if(txtUser.getText().equals("abc")&&txtPwd.getText().equals("123456"))
re="登录成功";
else
re="用户名密码错误";
JOptionPane.showMessageDialog(LoginFrameWithAction.this,re);
}
}); //匿名类实现ActionListener接口
btnExit=new JButton("取消");
btnOK.setBounds(60, 100, 60, 20);
btnExit.setBounds(125, 100, 60, 20);
btnExit.addActionListener(this);
add(lblUser);
add(lblPwd);
add(txtUser);
add(txtPwd);
add(rb1);
add(rb2);
add(btnExit);
add(btnOK);
setBounds(1,1,250,200);
setTitle("登录窗体");
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
String re= "美羊羊,大傻逼";
JOptionPane.showMessageDialog(LoginFrameWithAction.this,re);
System.exit(0);
}
}
4: Containerdefinition
Steuerelemente, die andere Steuerelemente speichern
– Formularfeld
Steuerelemente können zu Containern hinzugefügt werden
– Methode hinzufügen
Container können auch zu Containern hinzugefügt werden
– Methode hinzufügen
Wirkung
– Gruppenmanagementkontrollen
javax.swing-Paket
Gemeinsame Container
JFrame
1. Erweitert die java.awt.Frame-Klasse
2: Wird zum Erstellen von Fenstern in Swing-Programmen verwendet.
3. Enthält Rahmen, Titel und Schaltflächen zum Schließen und Ikonifizieren
JPanel
1. Zwischencontainer
2: Gruppieren Sie kleinere, leichte Container.
3. Ähnlich wie Inhaltsbereiche sind Panels standardmäßig undurchsichtig
JScrollPane
1. Es gibt Bildlaufleisten für die Bildlaufverwaltung