首先,我先说一下我这两天困扰我的问题:对于同一个window下的两个面板,该如何控制它的大小。一开始我使用的是GridLayout,但是发现,两个Panel的大小是一样的,平均分配。所以,最后我将布局清空,直接用坐标去实现面板应该出现的位置。
1.查询学生信息
package llxy.project.select;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import llxy.project.Tools.GuiTools;
public class SelectStuMessage extends JFrame{
public static void main(String[] args) {
new SelectStuMessage();
}
public SelectStuMessage(){
this.setSize(720,400);
this.setTitle("查询学生信息");
this.setLayout(null);
JPanel jp1 = new JPanel();
JButton jb1= new JButton("按学号查询");
JTextField jt1 = new JTextField("",5);
JButton jb2= new JButton("按姓名查询");
JTextField jt2 = new JTextField("",5);
JButton jb3= new JButton("按班级查询");
JTextField jt3 = new JTextField(5);
JButton jb4 =new JButton("按课程名称查询");
JComboBox<String> comboBox = new JComboBox<String>();
//为下拉列表添加选项
comboBox.addItem("语文");
comboBox.addItem("数学");
comboBox.addItem("英语");
文本域
final JTextArea jt = new JTextArea(60,60);
JScrollPane jp2=new JScrollPane(jt);
jt.setEditable(false);
this.add(jp2,BorderLayout.CENTER);
//添加组件
jp1.add(jb1);
jp1.add(jt1);
jp1.add(jb2);
jp1.add(jt2);
jp1.add(jb3);
jp1.add(jt3);
jp1.add(jb4);
jp1.add(comboBox);
//设置面板的大小
jp1.setBounds(0, 0,700,50);
jp2.setBounds(0, 50, 700, 350);
jp1.setBackground(Color.lightGray);
this.add(jp1);
this.add(jp2);
jb1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
BySno sno = new BySno();
}
});
jb2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
ByName bn = new ByName();
}
});
jb3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
ByClass bc = new ByClass();
}
});
GuiTools.center(this);
GuiTools.setTitleImage(this,"1.jpg");
this.setVisible(true);
}
}
2.学生信息管理(增删改)
package llxy.project.view;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import llxy.project.Tools.GuiTools;
import llxy.project.play.AddStuMessage;
import llxy.project.play.AlterStuMessage;
import llxy.project.play.DeleteStuMessage;
public class DealStuMessage extends JFrame{
public static void main(String[] args) {
new DealStuMessage();
}
public DealStuMessage(){
this.setSize(500,600);
//设置背景图片
JPanel bg = new JPanel();
ImageIcon img = new ImageIcon("qq.jpg");
JLabel j = new JLabel(img);//图片放在标签
j.setBounds(0, 0,img.getIconHeight(), img.getIconWidth());
bg.add(j);
this.add(bg);
JPanel panel = new JPanel(); //创建一个面板 存储组件
JButton btn1 = new JButton("1.添加数据");
JButton btn2 = new JButton("2.删除数据");
JButton btn3 = new JButton("3.修改数据");
JButton btn4 = new JButton(" 退出 ");
panel.add(btn1);
btn1.setBackground(Color.GREEN);
panel.add(btn2);
btn2.setBackground(Color.green);
panel.add(btn3);
btn3.setBackground(Color.green);
panel.add(btn4);
btn4.setBackground(Color.green);
panel.setBackground(Color.lightGray);
this.add(panel,BorderLayout.SOUTH);
GuiTools.center(this);//居中
GuiTools.setTitleImage(this,"1.jpg");//图标
this.setVisible(true);
btn1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
AddStuMessage add =new AddStuMessage();
}
});
btn2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
DeleteStuMessage add =new DeleteStuMessage();
}
});
btn3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
AlterStuMessage add =new AlterStuMessage();
}
});
btn4.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
dispose();
}
});
}
}
#3.实现对于窗口只关闭当前的窗口
遇到了一个问题,当我连续打开两个窗口的时候,例如:添加数据的窗口,当我点击右上角的关闭时候,会发现这个程序全部结束。当然,我只是想要关闭当前的窗口。因此,在这里提出我的解决方法:
1.关闭当前窗体不能使用(这里是通过右上角的关闭图标)setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE),要使用setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
2.如果通过按钮(JButton)关闭的时候,关闭当前窗体使用的是dispose();,关闭整个窗体时候使用exit(0).
感谢你看到这里,请点个赞吧!支持一下哦!