JButton正在显示图像

时间:2017-10-03 08:37:50

标签: java image jframe jbutton calculator

那么你好:),这是我在这里的第一篇文章。 让我们直接进入它: 我的问题: 我把计算器作为背景图像,而不是添加JButton。 我的问题:

当我启动程序时,计算器会快速显示,然后它会消失并显示按钮 当我调整窗口大小时,计算器显示,按钮消失

我该如何做到这一点?

继承我的代码:

import javax.swing.*;
import javax.*;
import java.awt.*;
import java.awt.event.*;

public class Calculator extends JFrame {
    private ImageIcon image;
    private JLabel label;


Calculator() {


    image = new ImageIcon(getClass().getResource("TStiny.png"));
    label = new JLabel(image);
    add(label);
}

public static void main (String args[]) {

    Calculator gui = new Calculator();
    gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    gui.setTitle("Texas Instruments TI-30XIIS");
    gui.pack();
    gui.setVisible(true);

    JPanel panel = new JPanel();
    gui.add(panel);

    JButton button7 = new JButton();
    button7.setIcon(new ImageIcon(Calculator.class.getResource("button_7.png")));
    button7.setVisible(true);
    button7.setBorderPainted(false);
    button7.setBounds(90, 445, 45, 35);
    panel.add(button7);

}

提前致谢! :)

1 个答案:

答案 0 :(得分:0)

您需要指定要添加组件的布局和最终位置。 JFrame默认使用BorderLayout

如果要使用默认行为,则应放置放置组件的位置:

public class Calculator extends JFrame {
    private ImageIcon image;
    private JLabel label;


    Calculator() {
        image = new ImageIcon(getClass().getResource("TStiny.png"));
        label = new JLabel(image);
        add(label, BorderLayout.LINE_START);
    }

    public static void main(String args[]) {

        Calculator gui = new Calculator();
        gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        gui.setTitle("Texas Instruments TI-30XIIS");
        gui.pack();
        gui.setVisible(true);

        JPanel panel = new JPanel();
        gui.add(panel, BorderLayout.LINE_END);

        JButton button7 = new JButton();
        button7.setIcon(new ImageIcon(Calculator.class.getResource("button_7.png")));
        button7.setVisible(true);
        button7.setBorderPainted(false);
        button7.setBounds(90, 445, 45, 35);
        panel.add(button7);

    }
}

另一种选择是指定一个不想指定位置的布局 - 例如FlowLayout

public class Calculator extends JFrame {
    private ImageIcon image;
    private JLabel label;


    Calculator() {
        setLayout(new FlowLayout());

        image = new ImageIcon(getClass().getResource("TStiny.png"));
        label = new JLabel(image);
        add(label);
    }

    public static void main(String args[]) {

        Calculator gui = new Calculator();
        gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        gui.setTitle("Texas Instruments TI-30XIIS");
        gui.pack();
        gui.setVisible(true);

        JPanel panel = new JPanel();
        gui.add(panel);

        JButton button7 = new JButton();
        button7.setIcon(new ImageIcon(Calculator.class.getResource("button_7.png")));
        button7.setVisible(true);
        button7.setBorderPainted(false);
        button7.setBounds(90, 445, 45, 35);
        panel.add(button7);

    }
}