当前位置: 首页 > 知识库问答 >
问题:

JLabel和JButton文本和图标大小在导出后发生变化

仲孙凡
2023-03-14

我只是一个初学者,正在学习JFrameJLabelJButton。我写了一个简单的代码,按下按钮后你应该会看到某个标签。当我在IntelliJ或Eclipse中运行代码时,一切都很好,但是在将其导出为JAR并打开后,文本和图像大小会发生变化。

public class MyFrame extends JFrame implements ActionListener {
    File file;
    AudioInputStream audioStream;
    Clip clip;
    JButton button;
    JLabel label;

    MyFrame() throws LineUnavailableException, UnsupportedAudioFileException, IOException {
        file = new File("C:/Users/uchak/IdeaProjects/New folder/fail.wav");
        audioStream = AudioSystem.getAudioInputStream(file);
        clip = AudioSystem.getClip();
        clip.open(audioStream);

        ImageIcon icon = new ImageIcon("gilaki.png");
        ImageIcon icon2 = new ImageIcon("nini.png");

        label = new JLabel();
        label.setText("nini debili xar :)");
        label.setBackground(new Color(150, 10, 10));
        label.setForeground(new Color(245, 215, 66));
        label.setBounds(450, 75, 600, 600);
        label.setVisible(false);
        label.setIcon(icon2);
        label.setHorizontalTextPosition(JLabel.CENTER);
        label.setVerticalTextPosition(JLabel.TOP);
        label.setFont(new Font("", Font.PLAIN, 50));

        button = new JButton();

        button.setText("daachire da moxdeba saocreba");
        button.setBounds(500, 150, 400, 300);
        button.setVisible(true);
        button.addActionListener(this);
        button.setFocusable(false);
        button.setIcon(icon);
        button.setHorizontalTextPosition(JButton.CENTER);
        button.setVerticalTextPosition(JButton.TOP);
        button.setBackground(Color.BLACK);
        button.setForeground(Color.red);
        button.setFont(new Font("", Font.PLAIN, 20));

        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        this.setVisible(true);
        this.setSize(1920, 1080);
        this.setLayout(null);
        this.add(button);
        this.add(label);
        this.getContentPane().setBackground(new Color(100, 20, 200));
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == button) {
            label.setVisible(true);
            button.setVisible(false);
            this.getContentPane().setBackground(Color.BLACK);
            clip.start();
        }
    }
}

共有1个答案

艾正浩
2023-03-14

如果你想做的只是改变JLabel字体的大小和样式,那么替换这行代码

label.setFont(new Font("",Font.PLAIN,50));

用这个

label.setFont(label.getFont().deriveFont(Font.PLAIN, 50.0f));

类似地,JButton

button.setFont(button.getFont().deriveFont(Font.PLAIN, 20.0f));
 类似资料:
  • 基本上我有两个账户,SSPUserInput和SSPViewer。我想在SSPUserInput类中按下一个按钮,在SSPViewer中更改一个JLabel名称。这基本上是一个石头剪刀布游戏。这是我第一次在这里发帖,如果我做错了什么,我很抱歉。

  • 是否可以创建一个带有右对齐图标和文本的,图标在右边,像这样: 我见过这个问题,但这真的是最好的方法吗?

  • 我对Java真的很陌生,我想做一个简单的GUI,上面有一个按钮,当你点击它的时候就会有价值,我在YouTube上学习了这个教程。一切都很顺利。但有一点没有,即文本的结尾从一个数字()变为。手动调整窗口的大小会使数字返回,所以我尝试在它启动时在代码中调整字体、窗口、按钮和标签的大小,这确实起作用,但仍然会遇到同样的问题。 这是我的按钮代码: ...我相信它会称之为: 我在其他问题上试过一些其他的解决

  • 问题内容: 在Java中,由于空间不足而无法显示JLabel的文本时,文本将被截断并在末尾添加“ …”。 如何轻松找出当前JLabel是显示全文还是被截断? 编辑: 我看到有一种方法可以使用来找出文本的大小。但是,此解决方案无法完全回答问题。如果JLabel的文本包含HTML装饰,则还将计算HTML标签的宽度。因此,可能发生的结果是比JLabel的宽度更大,但仍然可以正确显示文本。 有没有办法知道

  • 我有png图标,并将它们用作/中的图标 问题是,运行时显示的图像比原始图标大,而且由于这种大小调整,它非常难看。 下面是一个例子: 原始图标(左)以及它如何在中呈现(右) 这个简单示例的源代码如下: 这是预期的吗?如果没有,我如何避免这种情况?我尝试了很多方法来强制显示图像的大小、按钮等,但无法显示正确的图像。 我测试过各种尺寸的图标:16x16、17x17、18x18、19x19、20x20,每

  • 对不起,我不能上传图片