几种对话框
- 显示一个错误对话框
JOptionPane.showMessageDialog(null, "提示消息", "标题", JOptionPane.ERROR_MESSAGE);
- 显示一个内部信息对话框
JOptionPane.showInternalMessageDialog(frame,, "提示消息", "标题", JOptionPane.INFORMATION_MESSAGE);
- 显示一个信息面板,其 options 为 “yes/no”
JOptionPane.showConfirmDialog(null, "提示消息", "标题", JOptionPane.YES_NO_OPTION);
- 显示一个内部信息对话框,其 options 为 “yes/no/cancel”,message 为 ‘please choose one’,并具有 title 信息
JOptionPane.showInternalConfirmDialog(frame,
"please choose one", "information",
JOptionPane.YES_NO_CANCEL_OPTION,
JOptionPane.INFORMATION_MESSAGE);
- 显示一个警告对话框,其 options 为 OK、CANCEL,title 为 ‘Warning’,message 为 ‘Click OK to continue’
Object[] options = { "OK", "CANCEL" };
JOptionPane.showOptionDialog(null, "Click OK to continue", "Warning",
JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE,
null, options, options[0]);
- 显示一个要求用户键入 String 的对话框
String inputValue = JOptionPane.showInputDialog("Please input a value");
- 显示一个要求用户选择 String 的对话框
Object[] possibleValues = { "First", "Second", "Third" };
Object selectedValue = JOptionPane.showInputDialog(null, "Choose one", "Input",
JOptionPane.INFORMATION_MESSAGE, null,
possibleValues, possibleValues[0]);
添加背景图片,并设置可缩放
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JLayeredPane_1 extends JFrame {
public static void main(String[] args) {
new JLayeredPane_1();
}
public JLayeredPane_1() {
JLayeredPane layeredPane = new JLayeredPane();
Dimension dimension = new Dimension(300, 310);
layeredPane.setPreferredSize(dimension);
JPanel panelBg = new JPanel();
Image imageBg = Toolkit.getDefaultToolkit().getImage("bg.jpg");
ImageIcon imageIcon = new ImageIcon(imageBg.getScaledInstance
(dimension.width, dimension.height, Image.SCALE_FAST));
JLabel bg = new JLabel(imageIcon);
Point origin = new Point(0, 0);
Rectangle rectangle = new Rectangle(origin, dimension);
panelBg.setBounds(rectangle);
panelBg.add(bg);
JPanel panelContent = new JPanel();
JButton button = new JButton("button 1");
JButton button2 = new JButton("button 2");
JButton button3 = new JButton("button 3");
panelContent.setBounds(rectangle);
panelContent.setOpaque(false); // 设置为透明
panelContent.add(button);
panelContent.add(button2);
panelContent.add(button3);
layeredPane.add(panelBg, new Integer(0)); // the same to layeredPane.add(panelBg);
layeredPane.add(panelContent, new Integer(1));
getContentPane().add(layeredPane);
addComponentListener(new ComponentAdapter() {
public void componentResized(ComponentEvent e) {
Dimension dimensionNew = layeredPane.getSize();
Rectangle rectangleNew = new Rectangle(origin, dimensionNew);
panelBg.setBounds(rectangleNew);
panelContent.setBounds(rectangleNew);
bg.setIcon(new ImageIcon(imageBg.getScaledInstance
(dimensionNew.width, dimensionNew.height, Image.SCALE_FAST)));
}
});
pack();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
}
JTable
- 添加表格
JScrollPane jsp = new JScrollPane();
jsp.setViewportView(table);
- 设置表格不可编辑
table=new JTable(tableModel){
public boolean isCellEditable(int row, int column){
return false;}//表格不允许被编辑
}
};
- 设置表格的长宽
table.getColumnModel().getColumn(0).setPreferredWidth(168);
table.getColumnModel().getColumn(1).setPreferredWidth(100);
table.getColumnModel().getColumn(2).setPreferredWidth(100);
table.setRowHeight(25);
- 设置复选框
应该重新定义JTable,并覆盖这个方法,当某一元素的值为Boolean时,JTabel会自动画一个JCheckBox的。
public Class getColumnClass(int columnIndex) {
Object value = getValueAt(0, columnIndex);
if(value != null)
return value.getClass();
else
return super.getClass();
}
- 表头带复选框完成全选/反选功能
// 先写一个表头的renderer
class MyCheckBoxRenderer extends JCheckBox implements TableCellRenderer{
public MyCheckBoxRenderer () {
this.setBorderPainted(true);
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
return this;
}
}
// 然后把它设成表头某一列的renderer
final MyCheckBoxRenderer check = new MyCheckBoxRenderer();
table.getColumnModel().getColumn(7).setHeaderRenderer(check);
// 添加一个mouselistener才能响应事件
table.getTableHeader().addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e){
if(table.getColumnModel().getColumnIndexAtX(e.getX()) == 7){
boolean b = !check.isSelected();
check.setSelected(b);
table.getTableHeader().repaint();
for(int i = 0; i < table.getRowCount(); i++){
table.getModel().setValueAt(b, i, 7);//把这一列都设成和表头一样
}
}
}
});
JFormattedTextField(格式化文本输入框)
- 只允许输入数字(可定长度)
MaskFormatter maskformatter = null;
try {
maskformatter = new MaskFormatter("######");
} catch (ParseException e) {
e.printStackTrace();
}
cardNumberText = new JFormattedTextField(maskformatter);
- 只允许输入一位小数
changeText = new JFormattedTextField();
changeText.setDocument(new PlainDocument(){
private String reg = "^[0-9]{0,7}+([.]{1}[0-9]{1}+){0,1}$";
public void insertString(int offset, String s, AttributeSet attributeSet)
throws BadLocationException {
String str = this.getText(0, this.getLength()) + s;
int i = this.getText(0, this.getLength()).indexOf(".");
if (offset == 0 && s.equals(".")) {
Toolkit.getDefaultToolkit().beep();
return;
}
if (i == -1 && str.endsWith(".")) {
super.insertString(offset, s, attributeSet);
return;
}
if (str.matches(reg)) {
super.insertString(offset, s, attributeSet);
} else {
Toolkit.getDefaultToolkit().beep();
}
}
});
JTextArea设置滚轮
JTextArea srcTextArea = new JTextArea();
JScrollPane srcScroll = new JScrollPane(srcTextArea);
//总是带滚轮
srcScroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
//自动加上滚轮
srcScroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
JLabel背景图片的刷新(同一url)
====================
String path = "D://ClientData//result.jpg";
Icon icon;
try {
icon = new ImageIcon(ImageIO.read(new File(path)));
resultLabel.setIcon(icon);
} catch (IOException e) {
e.printStackTrace();
}