我要做的是单击按钮时需要绘制矩形。
但是我有一些困惑。这是代码:
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);