Java swing 入门

几种对话框

  • 显示一个错误对话框
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();
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值