图形界面2
作者:互联网
图形界面
setBounds(300,300,300,300);设置位置和大小
ActionEvent e 事件是由哪个控件发出的,通通都记录在ActionEvent 这个对象中
e.getActionCommand();'返回事件源的名字
e.getSource();返回这个事件的事件源本身对象JButton
setHorizontalAlignment(JTextField.RIGHT); 输入框在右边显示
JScrollPane 右边的滚动条
ActionListener是一个通用的事件,每一个控件都有这么一个事件,但是一些控件有自己独立的触发事件
combol(下拉列表)使用ActionListener的缺陷是,如果当前选中的条目,再次被选中,还会触发事件
itemStateChanged 下拉列表条目改变时,是会触发两次这个方法,一次是原来的条目,新的条目被选泽时,所以一般需要进行判断只有被选择的时候进行操作
this.setTitle("下拉菜单事件");
//设置位置和大小
this.setBounds(300, 200, 300, 300);
combo = new JComboBox<>();
combo.addItem("本科");
combo.addItem("专科");
combo.addItem("高中");
combo.addItem("初中");
//ActionListener是一个通用事件,每一个控件都有这么一个事件
//但是一些特殊的控件,有自己独立的事件方法
//combo使用ActionListener的缺陷是,如果当前选中的条目,再次被选择,还是会触发事件
/*combo.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//System.out.println(((JComboBox)e.getSource()).getSelectedItem());
System.out.println(combo.getSelectedItem());
}
});*/
combo.addItemListener(new ItemListener() {
//itemStateChanged如果下拉菜单条目改变
//其实会触发两次这个方法,一次是原来的条目不选择,新的条目被选择
//所以,一般需要进行判断,只是在被选择的时候进行操作
public void itemStateChanged(ItemEvent e) {
//确定状态改变是被选择的状态
if(e.getStateChange() == ItemEvent.SELECTED) {
System.out.println(combo.getItemAt(combo.getSelectedIndex()));
}
}
});
this.add(combo,BorderLayout.NORTH);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
列表框
JList<E> jlist = new JList<E>();
jlist.setVisibleRowcount(3);设置默认可见长度
jlist.setFixedCellHeight(150);设置每一行的高度
jlist.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);设置单选还是多选
JPanel panel = new JPanel();
Student s1 = new Student(1,"张三1",19);
Student s2 = new Student(2,"张三2",18);
Student s3 = new Student(3,"张三3",17);
List<Student> list = new ArrayList<>();
list.add(s1);list.add(s2);list.add(s3);
JList<Student> jlist = new JList<>();
//设置默认的可见高度...也就是可见行数,注意,要联合滚动条一起使用
jlist.setVisibleRowCount(3);
//设置宽度
jlist.setFixedCellWidth(150);
//设置每一行的高度
jlist.setFixedCellHeight(50);
//设置单选还是多选
//jlist.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
DefaultListModel<Student> model = new DefaultListModel<>();
model.addElement(s1);
model.addElement(s2);
model.addElement(s3);
model.addElement(s4);
model.addElement(s5);
model.addElement(s6);
//JList没有直接往里面放入集合对象的方法或者构造器,只有一个setModel方法
//但是这个方法需要的是一个ListModel接口对象
//DefaultListModel是ListModel的实现类,其实就类似于ArrayList
jlist.setModel(model);
JScrollPane pane = new JScrollPane(jlist);
JButton btn = new JButton("确定");
btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
List<Student> stus = jlist.getSelectedValuesList();
for (Student student : stus) {
model.removeElement(student);
}
}
});
panel.add(pane);
panel.add(btn);
contentPane.add(panel);
表格
String [] colName = {"编号","姓名","年龄"};
Object [][] data = {
{1,"成龙",21},
{2,"陈龙",22},
{3,"岑龙",23},
{4,"程龙",24},
};
//默认要求,表格应该放在滚动条中
JTable table = new JTable(data,colName);
//滚动条
JScrollPane scroll = new JScrollPane(table);
contentPane.add(scroll);
int n = JOptionPane.showConfirmDialog(null, "你确定要删除吗?","删除确认",JOptionPane.OK_CANCEL_OPTION);
弹出确认消息对话框
1.对话框的位置,null默认在屏幕中间
2.对话框的消息内容
3.对话框的标题
4.对话框的提示按钮样式 0 确定 1取消 以此类推 -1点了关闭
txtId.setEditable(false);不可修改,表示输入框的内容不可修改
鼠标事件
public MouseFrame() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
lblTxt = new JLabel();
/*
contentPane.addMouseListener(new MouseListener() {
//鼠标松开的时候触发
public void mouseReleased(MouseEvent e) {
lblTxt.setText("鼠标在x:"+e.getX()+" y:"+e.getY()+" 的坐标位置>>松开<<");
}
//鼠标按下的时候触发
public void mousePressed(MouseEvent e) {
lblTxt.setText("鼠标在x:"+e.getX()+" y:"+e.getY()+" 的坐标位置>>按下<<");
}
//鼠标离开的时候触发
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
lblTxt.setText("鼠标在x:"+e.getX()+" y:"+e.getY()+" 的坐标位置>>离开<<");
}
//鼠标进入的时候触发
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
lblTxt.setText("鼠标在x:"+e.getX()+" y:"+e.getY()+" 的坐标位置>>进入<<");
}
//鼠标点击的时候触发
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
lblTxt.setText("鼠标在x:"+e.getX()+" y:"+e.getY()+" 的坐标位置>>点击<<");
}
});
contentPane.addMouseMotionListener(new MouseMotionListener() {
//鼠标移动的时候触发
public void mouseMoved(MouseEvent e) {
lblTxt.setText("鼠标在x:"+e.getX()+" y:"+e.getY()+" 的坐标位置>>移动<<");
}
//鼠标拖拽的时候触发
public void mouseDragged(MouseEvent e) {
lblTxt.setText("鼠标在x:"+e.getX()+" y:"+e.getY()+" 的坐标位置>>拖拽<<");
}
});
contentPane.addMouseWheelListener(new MouseWheelListener() {
//鼠标中间滚轮滚动的时候触发
public void mouseWheelMoved(MouseWheelEvent e) {
int n = e.getWheelRotation();
lblTxt.setText("鼠标在x:"+e.getX()+" y:"+e.getY()+" 的坐标位置>>滚轮滚动"+n+"<<");
}
});
*/
//MouseAdapter 其实就是一个实现了所有鼠标接口的抽象类,起到的作用就是让下面的实现类不至于多实现很多不必要的方法
contentPane.addMouseListener(new MouseAdapter() {
//鼠标点击的时候触发
public void mouseClicked(MouseEvent e) {
lblTxt.setText("鼠标在x:"+e.getX()+" y:"+e.getY()+" 的坐标位置>>点击<<");
}
});
contentPane.addMouseWheelListener(new MouseAdapter() {
//鼠标中间滚轮滚动的时候触发
public void mouseWheelMoved(MouseWheelEvent e) {
int n = e.getWheelRotation();
lblTxt.setText("鼠标在x:"+e.getX()+" y:"+e.getY()+" 的坐标位置>>滚轮滚动"+n+"<<");
}
});
contentPane.add(lblTxt,BorderLayout.SOUTH);
}
鼠标右键事件
JPopupMenu pop = new JPopupMenu();
右键内容:
JMenuItem itemDelete = new JMenuItem("删除");
pop.add(itemDelete);添加
pop.addSeparator(); 间隔
键盘事件
txtInput = new LovoTxt("文本",50,50,contentPane);
txtInput.addKeyListener(new KeyListener() {
//输入一个字是触发
public void keyTyped(KeyEvent e) {
//输入框只能输入数字
// int n = e.getKeyChar();
// if(!(n>= KeyEvent.VK_0 && n<= KeyEvent.VK_9)){
// //不让按的字添加到框里面
// e.consume();
// }
//输入框只能输入数字 (char)8 是为了可以删除
String key = "0123456789" + (char)8;
if(key.indexOf(e.getKeyChar()) < 0){
e.consume();
}
}
//键盘松开时触发
public void keyReleased(KeyEvent e) {
}
//键盘按下时触发
public void keyPressed(KeyEvent e) {
//输出ASC码
// int n = e.getKeyChar();
// System.out.println(n);
//输出对应的按键
int n = e.getKeyCode();
String str = KeyEvent.getKeyText(n);
System.out.println(str);
//所有键盘上的按键,都有具体的静态常量编码对象 KeyEvent.VK_ENTER
if(e.getKeyCode() == KeyEvent.VK_ENTER) {
System.exit(0);
}
}
});
//KeyAdapter与MouseAdapter一样
txtInput.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
}
});
e.consume();不让按的字添加到框里面
repaint();刷新窗口
标签:触发,鼠标,图形界面,public,contentPane,new,void 来源: https://www.cnblogs.com/hcjk12580/p/12077658.html