界面

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); //在指定位置画上字符
}