java - 如何在单击框架中的按钮时绘制图像?

标签 java button paint

我在框架中制作了两个按钮。我想知道如何在单击不同的按钮时显示不同的图像? 还有其他出路还是我必须制作面板?我处于初学者阶段

package prac;
import java.awt.*;
import java.awt.event.*;

public class b extends Frame implements ActionListener{
String msg;
Button one,two;

b()
{   setSize(1000,500);
    setVisible(true);
    setLayout(new FlowLayout(FlowLayout.LEFT));
    one=new Button("1");
    two=new Button("2");

    add(one);
    add(two);

    one.addActionListener(this);
    two.addActionListener(this);

}
public void actionPerformed(ActionEvent e)
{
    msg=e.getActionCommand();
    if(msg.equals("1"))
    {
        msg="Pressed 1";
    }
    else
        msg="pressed 2";
repaint();      
}

public void paint(Graphics g)
{
    g.drawString(msg,100,300);
}
public static void main(String s[])
{
    new b();
}
}

最佳答案

使用JLabel并在单击按钮时更改图标。

几点:

  • 调用 setVisible(true)最后添加所有组件后。
  • 使用JFrame#pack()自动适应JFrame中的组件的方法基于组件的首选尺寸而不是调用 JFrame#setSize()方法。

示例代码:

final JLabel jlabel = new JLabel();
add(jlabel);

final Image image1 = ImageIO.read(new File("resources/1.png"));
final Image image2 = ImageIO.read(new File("resources/2.png"));

JPanel panel = new JPanel();
JButton jbutton1 = new JButton("Show first image");
jbutton1.addActionListener(new ActionListener() {

    @Override
    public void actionPerformed(ActionEvent arg0) {
        jlabel.setIcon(new ImageIcon(image1));
    }
});

JButton jbutton2 = new JButton("Show second image");
jbutton2.addActionListener(new ActionListener() {

    @Override
    public void actionPerformed(ActionEvent arg0) {
        jlabel.setIcon(new ImageIcon(image2));
    }
});

panel.add(jbutton1);
panel.add(jbutton2);
add(panel, BorderLayout.NORTH);

关于java - 如何在单击框架中的按钮时绘制图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24716597/

相关文章:

java - 将操纵杆绑定(bind)到一个圆圈

android - float 按钮 Android Lollipop

c# - 如何以数学方式绘制 WPF 形状?

java - JPanel repaint()方法及调试

java - JSF 2.1 validateBean 总是在 preRenderView 事件之前调用

java - JDBC 请求是否与插入查询类型一起使用?

java - "generic method""absolute value"java

css - 如何更改按钮上的光标图标单击 React

android - android开发的继承方法崩溃

java - 在java中使用线程绘制面板