java向JPanel添加矩形
所以我做了一个Rectangle
,但我想在面板上展示它,但我不知道怎么做,我尝试了很多东西,但显然还不够。如果能在这件事上得到帮助,我将不胜感激。我是新来的,所以请给我一个循序渐进的答案或类似的答案
下面是包含Rectangle
的代码
import javax.swing.*;
import java.util.*;
import java.awt.*;
public class TestProjectDialog extends JPanel{
static String name;
public Rectangle r;
public String getName(){
return name;
}
public void paintComponent(Graphics g){
super.paintComponent(g);
r = new Rectangle(430,50,250,400);
g.setColor(jpp.bodyColour);
g.fillRect((int)r.getX(),(int)r.getY(),(int)r.getHeight(),(int)r.getWidth());
}
TestProjectJPanel jpp = new TestProjectJPanel();
public static void main(String[] args){
JOptionPane.showMessageDialog(null, "Just about to draw a REALLY GOOD 2D car \n just need input please.");
name= JOptionPane.showInputDialog("Imagine a car, what is it's name?");
if(name == null || (name != null && ("".equals(name))))
{
JOptionPane.showMessageDialog(null, "Invalid input/pressed cancel, closing program.");
System.exit(0);
}
JOptionPane.showMessageDialog(null, "Ah okay, so it's name is " + name);
JFrame f = new JFrame(name);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
TestProjectJPanel jpp = new TestProjectJPanel();
jpp.setBackground(Color.WHITE);
f.setSize(1440,900);
f.add(jpp.panel, BorderLayout.CENTER);
f.add(jpp.b, BorderLayout.SOUTH);
f.setVisible(true);
}
}
以及具有panel
本身的代码
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class TestProjectJPanel extends JFrame {
public JButton b;
public Color color = (Color.WHITE);
public JPanel panel;
public Color bodyColour;
public Color doorColour;
public Color wheelColour;
public TestProjectJPanel(){
panel = new JPanel();
panel.setBackground(color);
// bodyColour button
b = new JButton("Choose a colour for the body of the car");
b.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent event){
bodyColour = JColorChooser.showDialog(null, "Pick the colour", bodyColour);
if(bodyColour==null)
bodyColour = (Color.BLACK);
}
}
);
}
}
所以基本上,我想把Rectangle
加到panel
上,但是我不知道怎么做我是编程新手,所以请让初学者轻松阅读答案
编辑:我也希望这个程序做的是,从一个提示开始,询问一个名称,我将其存储在字符串名称中并将其设置为标题,然后我希望一个Panel
出现,您可以使用JColorChooser
选择Rectangle
的颜色
# 1 楼答案
您使用了错误的面板。这就是全部。 把
f.add(jpp.panel, BorderLayout.CENTER);
改成f.add(new TestProjectDialog(), BorderLayout.CENTER);
,你应该表现得很好嗯,简