栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

《Java 核心技术 卷1》 笔记 第九章 Swing 用户界面组件(15) 对话框数据交换

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

《Java 核心技术 卷1》 笔记 第九章 Swing 用户界面组件(15) 对话框数据交换

9.7 3 数据的获取与显示

对话框进行点击后,需要对对话框操作得结果进行处理。

默认按钮,焦点选择的按钮,按回车键可以自动选择。

dialog.getRootPane().setDefaultButton(okButton);

效果:

    页面显示菜单栏,点击 Connect, 弹框,点击 Exit 退出Connect 时触发 JPanelJPanel 内放置JDialog,JDialog显示时,直接把JPanel放在Jdialog 里面显示按钮效果处理,点击ok时触发页面追加信息
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Main {
    public static  void main(String[] args) {
        Main solution = new Main();
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                DataExchangeframe frame = new DataExchangeframe();
                frame.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);
                frame.setVisible(true);
            }
        });
    }
}

class DataExchangeframe extends Jframe{
    public static final int W = 300;
    public static final int H = 200;
    private PasswordChooser dialog = null;
    private Jtextarea textarea;

    public DataExchangeframe(){
        setTitle("DataExchangeTest");
        setSize(W,H);
        JMenuBar mbar = new JMenuBar();
        setJMenuBar(mbar);
        JMenu fileMenu = new JMenu("File");
        mbar.add(fileMenu);

        JMenuItem connectItem = new JMenuItem("Connect");
        connectItem.addActionListener(new ConnnectAction());
        fileMenu.add(connectItem);

        JMenuItem exitItem = new JMenuItem("Exit");
        exitItem.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.exit(0);
            }
        });
        fileMenu.add(exitItem);
        textarea = new Jtextarea();
        add(new JScrollPane(textarea),BorderLayout.CENTER);
    }

    private class ConnnectAction implements  ActionListener{

        @Override
        public void actionPerformed(ActionEvent e) {
            if(dialog == null)
                dialog = new PasswordChooser();

            dialog.setUser(new User("yourname",null));

            if(dialog.showDialog(DataExchangeframe.this,"Contect")){
                User u = dialog.getUser();
                textarea.append("user name = "+u.getName()+",password = "
                +new String(u.getPassword())+"n");
            }
        }
    }
}

class PasswordChooser extends JPanel{
    private JTextField username;
    private JPasswordField password;
    private JButton okButton;
    private boolean ok;
    private JDialog dialog;

    public PasswordChooser(){
        setLayout(new BorderLayout());
        JPanel panel = new JPanel();
        panel.setLayout(new GridLayout(2,2));
        panel.add(new JLabel("User name:"));
        panel.add(username = new JTextField(""));
        panel.add(new JLabel("Password:"));
        panel.add(password = new JPasswordField(""));
        add(panel,BorderLayout.CENTER);

        okButton = new JButton("Ok");
        okButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                ok = true;
                dialog.setVisible(false);
            }
        });

        JButton cancelButton = new JButton("Cancel");
        cancelButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                dialog.setVisible(false);
            }
        });

        JPanel buttonPanel = new JPanel();
        buttonPanel.add(okButton);
        buttonPanel.add(cancelButton);
        add(buttonPanel,BorderLayout.SOUTH);
    }

    public void setUser(User u){
        username.setText(u.getName());
    }

    public User getUser(){
        return new User(username.getText(), password.getPassword());
    }

    public boolean showDialog(Component parent, String title){
        ok = false;
        frame owner = null;
        if(parent instanceof  frame)
            owner = (frame) parent;
        else
            owner = (frame) SwingUtilities.getAncestorOfClass(frame.class,parent);

        if(dialog == null || dialog.getOwner()!=owner){
            dialog = new JDialog(owner,true);
            dialog.add(this);
            dialog.getRootPane().setDefaultButton(okButton);
            dialog.pack();
        }
        dialog.setTitle(title);
        dialog.setVisible(true);
        return ok;
    }
}

class User{
    private String name;
    private char[] password;

    public User(String name, char[] password) {
        this.name = name;
        this.password = password;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public char[] getPassword() {
        return password;
    }

    public void setPassword(char[] password) {
        this.password = password;
    }
}

9.7.4 文件对话框

文件对话框适用于选择、保存文件的,幸运的时Java自带

创建:

JFileChooser chooser = new JFileChooser();

设置当前目录:

chooser.setCurrentDirectory(new File("."));

默认文件名:

chooser.setSelectedFile(new File(fileName));

多文件选择:

chooser.setMultiSelectionEnabled(true);

显示:

int result = chooser.showSaveDialog(parent);

更改按钮:

int result = chooser.showDialog(parent, "Select");

获取选择路径:

String fileName = chooser.getSelectedFile().getPath();

例子,选择图:

import javax.swing.*;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.swing.filechooser.FileView;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.File;

public class Main {
    public static  void main(String[] args) {
        Main solution = new Main();
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                ImageViewframe frame = new ImageViewframe();
                frame.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);
                frame.setVisible(true);
            }
        });
    }
}

class ImageViewframe extends Jframe{
    public static final int W = 300;
    public static final int H = 400;
    private JLabel label;
    private JFileChooser chooser;
    public ImageViewframe(){
        setTitle("FileChooserTest");
        setSize(W,H);

        JMenuBar menuBar = new JMenuBar();
        setJMenuBar(menuBar);

        JMenu menu = new JMenu("File");
        menuBar.add(menu);

        JMenuItem openItem = new JMenuItem("Open");
        menu.add(openItem);
        openItem.addActionListener(new FileOpenListener());
        label = new JLabel();
        add(label);

        chooser = new JFileChooser();
        final FileNameExtensionFilter filter = new FileNameExtensionFilter(
                "Image files","png","jpg","jpeg","gif"
        );
        chooser.setFileFilter(filter);
        chooser.setAccessory(new ImagePreviewer(chooser));
        chooser.setFileView(new FileIconView(filter,new ImageIcon("./src/resource/doc.png")));

    }

   private class FileOpenListener implements ActionListener{
       @Override
       public void actionPerformed(ActionEvent e) {
           chooser.setCurrentDirectory(new File("."));
           int result = chooser.showOpenDialog(ImageViewframe.this);

           if(result == JFileChooser.APPROVE_OPTION){
               String name = chooser.getSelectedFile().getPath();
               label.setIcon(new ImageIcon(name));
           }
       }
   }
}

class FileIconView extends FileView {
    private FileFilter filter;
    private Icon icon;
    public FileIconView(FileFilter aFilter, Icon anIcon){
        filter = aFilter;
        icon = anIcon;
    }

    public Icon getIcon(File f){
        if(!f.isDirectory() && filter.accept(f))
            return icon;
        else
            return null;
    }
}

class ImagePreviewer extends JLabel{
    public ImagePreviewer(JFileChooser chooser){
        chooser.addPropertyChangeListener(new PropertyChangeListener() {
            @Override
            public void propertyChange(PropertyChangeEvent evt) {
                if(evt.getPropagationId() == JFileChooser.SELECTED_FILE_CHANGED_PROPERTY){
                    File f = (File) evt.getNewValue();
                    if(f == null){
                        setIcon(null);
                        return;
                    }

                    ImageIcon icon = new ImageIcon(f.getPath());

                    if(icon.getIconWidth() > getWidth())
                        icon = new ImageIcon(icon.getImage().getScaledInstance(
                                getWidth(),-1,Image.SCALE_DEFAULT
                        ));
                    setIcon(icon);
                }
            }
        });
    }
}

相关内容:选择 《Java核心技术 卷1》查找相关笔记

喜欢的话,点个赞吧~!平时做题,以及笔记内容将更新到公众号。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/753848.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号