界面
JFrame
创建对象
声明一个对象
JFrame fram=new JFrame();
直接继承JFrame类
public class View extends JFrame {
......
}
常用方法
add(new JButton()); //添加组件
setTitle("title"); //设置标题
setSize(1200,900); //设置大小
setDefaultCloseOperation(3); //关闭
setLocationRelativeTo(null); //一开始界面放在屏幕正中央
setLayout(new BorderLayout()); //设置布局
setJMenuBar(new MenuBar()); //添加菜单栏
setVisible(true); //可视
setBackground(new Color(0,0,0)); //设置背景
setForeground(Color.black); //设置前景
setOpacity(0); //设置透明度
setResizable(false); //设置是否可以重新调整大小
removeAll(); //删除组件
repaint(); //重新绘制
JPanel
与JFrame类似
布局
BorderLayout
东南西北中的布局方式,一块区域只能显示一个组件。
frame.add(component, BorderLayout.CENTER);
GridLayout
表格布局管理器,只能按顺序添加组件。
frame.setLayout(new GridLayout(8,8,0,0)); //8*8,可以设置每个格之间的间距
FlowLayout
流式布局管理器,按照组件大小自动布局。
frame.setLayout(new FlowLayout(0)); //无参数默认居中对齐,0代表左对齐
BoxLayout
箱子管理器,可以创建垂直/水平的箱子。
Box ver=Box.createVerticalBox();
事件及处理机制
可以在组件上添加监听器,当监听到某个事件时,相应地处理事件。如在按钮上添加鼠标点击事件的监听器,在监听到鼠标点击后,按钮变红。
Java提供的监听器中有默认的方法,直接实现接口需要实现接口中的所有方法。但如果只需要监听部分事件,可以继承该监听器的适配器,这样就可以只覆盖我们关心的方法。
ActionListener
ActionListener myListener=new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
......
}
};
MouseListenr
class MyListener extends MouseAdapter {
@Override
public void mousePressed(MouseEvent e) { //鼠标按下
......
}
@Override
public void mouseReleased(MouseEvent e) { //鼠标释放
......
}
@Override
public void mouseClicked(MouseEvent e) { //鼠标点击
......
}
}
KeyListener
class MyListener extends KeyAdapter {
@Override
public void keyPressed(KeyEvent e) {
......
}
@Override
public void keyReleased(KeyEvent e) {
......
}
@Override
public void keyTyped(KeyEvent e) {
......
}
}
添加监听器
component.addActionListener(myListener);
Swing组件
按钮
JButton
普通按钮。
JButton b=new JButton(); //初始化对象
b.setBorderPainted(false); //隐藏边框
b.setFocusPainted(true); //去掉按钮周围的焦点框
b.setContentAreaFilled(false); //按钮透明
b.setOpaque(true); //按钮设置为透明
b.setIcon(new ImageIcon("path")); //设置图片
JToggleButton
被选择后会显示的按钮。
JRadioButton
单选按钮。
JCheckBox
复选框。
JComboBox
选择框。
JComboBox sizeList=new JComboBox(); //新建对象
for(int i=2;i<32;i+=2) //添加选择的内容
sizeList.addItem(i);
SizeComboBoxRenderer rSize=new SizeComboBoxRenderer(); //自定义渲染组件
sizeList.setRenderer(rSize); //让渲染组件起作用
sizeList.setMaximumRowCount(7); //选择框最多显示多少行
public class SizeComboBoxRenderer extends JLabel implements ListCellRenderer{
public SizeComboBoxRenderer() {
setOpaque(true); //设置透明
setHorizontalAlignment(CENTER); //设置本标签水平居中对齐
setVerticalAlignment(CENTER); //设置本标签垂直居中对齐
}
@Override
public Component getListCellRendererComponent(JList list,Object value,int index,boolean isSelected,boolean cellHasFocus) {
int selectedIndex=((Integer)value).intValue();
if(isSelected) { //根据用户选择与否,给本标签设置背景色和前景色
setBackground(list.getSelectionBackground());
setForeground(list.getSelectionForeground());
}
else {
setBackground(list.getBackground());
setForeground(list.getForeground());
}
setText(String.valueOf(selectedIndex)); //把文字放到标签上
setFont(list.getFont());
return this;
}
}
边框
JLabel l=new JLabel();
l.setBorder(BorderFactory.createTitleBorder("title")); //标题边框
l.setBorder(BorderFactory.createLineBorder("title")); //线边框
l.setBorder(BorderFactory.createBevelBorder("title")); //斜面边框
l.setBorder(BorderFactory.createDashedBorder("title")); //虚线边框
标签
JLabel l=new JLabel("hello");
l.setText("world");
l.setFont(new Font("Times News Roman",Font.PLAIN,15));
String s=l.getText();
文字
JTextField tf=new JTextField();
tf.setText("hello");
String s1=tf.getText();
JTextArea ta=new JTextArea();
ta.setText("hello");
ta.append(" world");
String s2=ta.getText(); //s2="hello world"
信息框
普通对话框
JOptionPane.showMessageDialog(null,"content");
基本提示框
JOptionPane.showMessageDialog(null, "content", "title",JOptionPane.PLAIN_MESSAGE);
警告提示框
JOptionPane.showMessageDialog(null, "content", "title",JOptionPane.WARNING_MESSAGE);
错误提示框
JOptionPane.showMessageDialog(null, "content", "title",JOptionPane.ERROR_MESSAGE);
是否对话框
int n=JOptionPane.showConfirmDialog(null, "question", "title",JOptionPane.YES_NO_OPTION);
自定义提示框
Object[] options={"option1","option2"}; //自定义按钮上的文字
int n=JOptionPane.showOptionDialog(null, "question", "title",JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[0]);
//最后一个是默认选择
下拉选择框
Object[] options={"option1","option2"};
String s=(String)JOptionPane.showInputDialog(null,"question", "title", JOptionPane.PLAIN_MESSAGE, null, options, options[0]);
输入框
JOptionPane.showInputDialog(null,"content","title",JOptionPane.PLAIN_MESSAGE);
自定义框架
JFrame frame=new JFrame("title");
String time=JOptionPane.showInputDialog(frame,"content","choice");
//最后一个为输入框里默认的内容
菜单栏
public class MyMenuBar extends JMenuBar {
JMenu game=new JMenu("Game"); //一级菜单
JMenu setting=new JMenu("Setting");
JMenu moves=new JMenu("Moves");
add(game);
add(setting);
add(moves);
JMenuItem newGame=new JMenuItem("New"); //game的二级菜单
JMenuItem openGame=new JMenuItem("Open");
JMenuItem saveGame=new JMenuItem("Save");
game.add(newGame);
game.add(openGame);
game.add(saveGame);
}
画板
private Graphics g; //画笔
public void setGraphics() { //初始化画笔
g=getGraphics(); //必须等画板setVisible(true)之后获取画笔才有用!!
}
public void draw() {
g.setColor(Color.red); //设置颜色
g.drawOval(start,end,width,height); //画一个没有填充的椭圆
g.fillOval(start,end,width,height); //画一个有填充的椭圆
//还可以画方形、线等
g.drawString(str,x,y); //在指定位置画上字符
}