如何将Java图形与事件处理使用



我要做的是单击按钮时需要绘制矩形。

但是我有一些困惑。这是代码:

package painting;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;
public class Painting  { 
    JFrame jf ;
    public static void main(String[] args) {    
        Painting p = new Painting();
        p.runn();
    }
       public void runn(){
        jf = new JFrame("Try");
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jf.setLocationRelativeTo(null);
        jf.setSize(400,400);       
        jf.setVisible(true);
        JButton jb = new JButton("Click");
        jb.setBounds(200,200,100,60);
        jf.add(jb);
        //jf.add(jb,BorderLayout.SOUTH);
        //jf.setLayout(null);       
        Handler handle = new Handler();
        jb.addActionListener(handle);
       }
        private class Handler implements ActionListener{
            @Override
            public void actionPerformed(ActionEvent ae)
            {
            Mainting maint = new Mainting();    
            jf.add(maint);
        }           

}
}

和另一个类:

package painting;
import java.awt.*;
import javax.swing.*;

public class Mainting extends JPanel {
    @Override  
    public void paintComponent(Graphics g)
             {
      super.paintComponent(g);
      g.fillRect(0,0,30,30);
            }    
}

现在,问题是当我运行此代码时,出现了一个按钮覆盖整个屏幕,当我单击它时,什么也不会发生。我发现那是因为没有定义布局管理器,并且当我尝试将布局经理设置为null时,按钮看起来不错,但是当我单击矩形时,该按钮不会出现(这也是因为我们无法使用null布局管理器绘制图形)。

最后,当我尝试设置一个布局管理器时,例如边界布局 - 按钮会出现,但编译器说它需要绘制int参数而不是方向!

>

请帮助!

使用jpanel,然后在其中添加按钮。setBounds()与秋千无法正常工作。这样的东西 -

JButton button = new JButton(...);
JPanel wrapper = new JPanel();
wrapper.add(button);
 frame.add(wrapper, BorderLayout.PAGE_START); 

最新更新