java - 如何使用继承自 JFrame 图标的图标创建自己的文件,我在 Java 中设置了它,而我自己的文件使用 FileOutputStream 和 ObjectOutputStream

标签 java swing icons jframe

我想用继承自 JFrame 图标的图标创建我自己的文件,我在 java 中设置了它,我自己的文件使用 FileOutputStream 和 ObjectOutputStream

try {
    ObjectOutputStream oos;
    //I create own file with own extension in drive D:
    FileOutputStream fos = new FileOutputStream("D:/myFile.ckl");
    oos = new ObjectOutputStream(fos);
    //Write Document in JTextPane to File
    oos.writeObject(jTextPane.getStyledDocument());
    oos.close();
    fos.close();
} catch (Exception exp) {
    JOptionPane.showMessageDialog(null, "" + exp.getStackTrace());
}

提前致谢

最佳答案

@David 是正确的,主机平台拥有 JFrame 装饰,但您可以利用 JInternalFrame 图标,这些图标通常概括了平台的图标。例如,

private static final Icon ICON = (Icon) UIManager.get("InternalFrame.closeIcon");

其他装饰默认值列举here .

SSCCE :

enter image description here

import java.awt.EventQueue;
import java.awt.GridLayout;
import javax.swing.BorderFactory;
import javax.swing.Icon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.UIManager;

/** @see http://stackoverflow.com/a/10360374/230513 */
public class InternalFrameIcons extends JPanel {

    public InternalFrameIcons() {
        this.setLayout(new GridLayout(0, 1, 5, 5));
        this.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
        this.add(createLabel("InternalFrame.closeIcon"));
        this.add(createLabel("InternalFrame.maximizeIcon"));
        this.add(createLabel("InternalFrame.minimizeIcon"));
    }

    private JLabel createLabel(String name) {
        Icon icon = (Icon) UIManager.get(name);
        JLabel label = new JLabel(name, icon, JLabel.CENTER);
        label.setHorizontalTextPosition(JLabel.CENTER);
        label.setVerticalTextPosition(JLabel.BOTTOM);
        return label;
    }

    private void display() {
        JFrame f = new JFrame("InternalFrameIcons");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.add(this);
        f.pack();
        f.setLocationRelativeTo(null);
        f.setVisible(true);
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                new InternalFrameIcons().display();
            }
        });
    }
}

关于java - 如何使用继承自 JFrame 图标的图标创建自己的文件,我在 Java 中设置了它,而我自己的文件使用 FileOutputStream 和 ObjectOutputStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10359883/

相关文章:

javascript - Feather css 图标不工作

java - MyBatis 生成器单个 resultMap

java - 从 JSON Schema 动态创建 Swing GUI(使用 Metawidget)

java - 最大堆大小无效 : -Xmx512m

java - Java 中的硬编码值

java - 如何防止绘制的形状在 Java 中消失?

java - GridBagLayout 无法正确布局

java - 秒表在 Java 中不起作用

java - 更改 Windows 中特定文件的图标(例如 Dropbox)

c# - 如何在 Windows 8.1 中获取 MessageBox 图标