代码不适用于摆动图像按钮

时间:2013-11-21 15:03:58

标签: java swing jbutton

我已经编写了这段代码来显示图像而不是按钮跟随 This answer

我的代码是:

JButton btnCalender;
    try {

        BufferedImage calendarIcon = ImageIO.read(new File("Calendar_0.jpg"));
        btnCalender = new JButton("Calendar", new ImageIcon(calendarIcon));
        btnCalender.setBorder(BorderFactory.createEmptyBorder());
        btnCalender.setContentAreaFilled(false);
        btnCalender.setBounds(244, 177, 129, 36);
        frmOptions.getContentPane().add(btnCalender);
        btnCalender.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
            }
        });
    } catch (IOException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }

但图像没有显示。按钮区域为空白。所有图像都在Project文件夹中。 为什么会这样?请给我解决方案。感谢。

修改: 找到解决方案 我的图像重建太大了。我把它压缩成144 * 144。 现在它正在运作。

6 个答案:

答案 0 :(得分:1)

您发布的代码看起来不错。如果没有剩下的代码,很难确定,但看起来您遇到的问题与实际将按钮放在GUI上有关。

仔细检查没有任何IOExceptions查找/加载图像。

答案 1 :(得分:0)

您是否尝试过添加:

btnCalender.setContentAreaFilled(false);

答案 2 :(得分:0)

尝试删除边框和内容区域,如下所示:

BufferedImage calendarIcon = ImageIO.read(new File("Calendar_0.jpg"));
btnCalender = new JButton("Back", new ImageIcon(calendarIcon));
btnCalender.setBorder(BorderFactory.createEmptyBorder());
btnCalender.setContentAreaFilled(false);

答案 3 :(得分:0)

您可以尝试两件事,首先确保您已为contentPane指定了布局“精确定位”
frmOptions.getContentPane().setLayout(null);
并确保在您之后重新绘制了您的contentPane我添加了像这样的jbutton组件frmOptions.getContentPane().repaint();
在将内容添加到contentPane后,请记得将它放入!

答案 4 :(得分:0)

JFrame f = new JFrame("This is a test");
    f.setSize(400, 150);
    Container content = f.getContentPane();
    BufferedImage calendarIcon = ImageIO.read(new File("C:\\Documents and Settings\\sugandhan\\Desktop\\suganthan.jpg"));
    content.add(new JButton("Calendar", new ImageIcon(calendarIcon)));
    f.setVisible(true);

请检查图像路径

答案 5 :(得分:0)

首先,你不需要bufferedImage来做到这一点,其次你必须纠正图像的链接,如下所示:

JFrame frmOptions = new JFrame();

JButton btnCalender = new JButton("Calendar", new ImageIcon(
        "./src/Calendar_0.jpg"));
btnCalender.setBorder(BorderFactory.createEmptyBorder());
btnCalender.setContentAreaFilled(false);
btnCalender.setBounds(244, 177, 129, 36);

btnCalender.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    }
});
frmOptions.getContentPane().add(btnCalender);
frmOptions.setDefaultCloseOperation(3);
frmOptions.pack();
frmOptions.setLocationRelativeTo(null);
frmOptions.setVisible(true);

我希望有所帮助,如果有的话请补上;)萨拉姆