有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    您使用了错误的面板。这就是全部。 把f.add(jpp.panel, BorderLayout.CENTER);改成f.add(new TestProjectDialog(), BorderLayout.CENTER);,你应该表现得很好

    嗯,简