【发布时间】:2017-12-02 23:54:32
【问题描述】:
我想要做的是当我单击需要绘制矩形的按钮时。
但我有些困惑。 这是代码:
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 时,按钮看起来很好但是当我点击矩形时没有出现(也是因为我们不能使用空布局管理器来绘制图形)。
最后,当我尝试设置布局管理器时,比如说 - 边框布局 - 按钮按原样显示,但编译器如何说它需要绘制 int 参数而不是方向!
请帮忙!
【问题讨论】:
-
1) 使用逻辑一致的缩进代码行和块的形式。缩进是为了让代码流更容易理解!有人在上一个问题中为您做了这件事,但不要指望其他人会不断地为您做,您应该为任何阅读代码的人做些什么。 2) 为了尽快获得更好的帮助,请发布 minimal reproducible example 或 Short, Self Contained, Correct Example,就像我在回复您的 last question 时发布的一样。
标签: java swing user-interface layout-manager