_BenNNN 2019-10-04 16:06 采纳率: 0%
浏览 1426

Java如何设计画圆程序,要求在画圆区域画圆,并能设置圆的颜色及是否填充圆的内部。

求助大神!Java设计画圆程序,要求在画圆区域画圆,并能设置圆的颜色及是否填充圆的内部。我已经写了一部分了,现在可以画实心圆,但是设置颜色和是否填充一直想不出来要怎么弄,请问有人可以指点一下吗?

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

public class C extends JFrame implements ActionListener{

    PrintPanel PP;                                                      //创建画圆面板
    JLabel lb1; 
    JTextField TF;  
    JButton button;
    public JRadioButton []rb1;

public C() {

    JFrame test = new JFrame("画圆程序");                               //创建框架
    JPanel MyPanel1 = new JPanel();                                 //创建第一个面板,装有关颜色选择的组件
    JPanel MyPanel2 = new JPanel();                                 //创建第二个面板,装是否填充有关的组件
    JPanel MyPanel3 = new JPanel();                                 //创建第三个面板,装半径有关的组件
    JPanel MyPanel4 = new JPanel();                                 //创建第四个面板,装画圆按钮等组件
    PP = new PrintPanel(0);
    JPanel Right = new JPanel(new GridLayout(4, 1));                //创建右面板
    JSplitPane test1 = new JSplitPane();                            //创建分裂面板

    test.setDefaultCloseOperation(EXIT_ON_CLOSE);                   
    test.setSize(700, 460);                                         //设置框架大小
    test.setResizable(false);
    Container c = test.getContentPane();                
    c.add(test1);
    c.setLayout(new GridLayout(1, 2, 0, 0));                        

    JRadioButton []rb1 = {new JRadioButton("黑色"),new JRadioButton("红色"),new JRadioButton("绿色")};
    rb1[0].setSelected(true);                                       //“黑色”选项默认为选中
    ButtonGroup buttongroup = new ButtonGroup();
    for(int i=0;i<rb1.length;i++) {                                 //for循环,将两个单选按钮加入按钮组和面板中
        buttongroup.add(rb1[i]);
        MyPanel1.add(rb1[i]);
    }

    lb1 = new JLabel("是否填充:",JLabel.LEFT);
    MyPanel2.add(lb1);
    JRadioButton []rb = {new JRadioButton("是"),new JRadioButton("否")};
    rb[0].setSelected(true);                                        //“是”选项默认为选中
    ButtonGroup buttongroup1 = new ButtonGroup();
    for(int i=0;i<rb.length;i++) {                                  //for循环,将两个单选按钮加入按钮组和面板中
        buttongroup1.add(rb[i]);
        MyPanel2.add(rb[i]);
    }

    TF = new JTextField(8);                                         //创建文本框,用于半径调节
    JLabel lb2 = new JLabel("半径:");
    MyPanel3.add(lb2);
    MyPanel3.add(TF);
    TF.getText();

    button = new JButton("画圆");                                     //创建画圆按钮,当数据调整完毕后进行画圆
    MyPanel4.add(button);
    button.addActionListener(this);

    Right.add(MyPanel1);
    Right.add(MyPanel2);
    Right.add(MyPanel3);
    Right.add(MyPanel4);

    test1.setEnabled(false);
    test1.setOrientation(JSplitPane.HORIZONTAL_SPLIT);                  //设置分割方向是水平分割
    test1.setLeftComponent(PP);                                         //插入左边面板
    test1.setRightComponent(Right);                                     //插入右边面板

    test.setVisible(true);
    test1.setDividerLocation(0.55);
}

public void actionPerformed(ActionEvent e) {
    //if(e.getSource() == rb1[0])

    try {
        PP.setR(Integer.valueOf(TF.getText()));
    }catch(NumberFormatException a) {
        System.out.println("please input a number!");
    }

    PP.repaint();
}

class printp extends Panel{                             //内部类,用于画圆的画板
        public int r;

        public printp(int r){
            this.r = r;
        }

        public void paint(Graphics g){
            super.paint(g);
            g.setColor(Color.red);
            int h = this.getHeight();
            int w = this.getWidth();
            g.fillOval(w/2 - r, h/2 - r, 2 * r, 2 * r);
        }

        public int getR() {
            return r;
        }

        public void setR(int r) {
            this.r = r;
        }

        public void actionPerformed(ActionEvent e) {

        }

    }

    public static void main(String[] args) {
        C test = new C();
    }
}

图片说明

  • 写回答

2条回答 默认 最新

  • threenewbee 2019-10-04 16:13
    关注

    g.setColor(Color.red);
    这个就是设置颜色

    g.fillOval(w/2 - r, h/2 - r, 2 * r, 2 * r);
    fill是实心
    draw是空心

    以下代码可以让用户从一个对话框里选择一种颜色

    ColorDialog dlg = new ColorDialog(shell);
    
       //设置默认的颜色
    
       dlg.setRGB(colorLabel.getBackground().getRGB());
    
       //设置标题字体
    
       dlg.setText("Choose a Color");
    
       //打开对话框
    
       RGB rgb = dlg.open();
    
       if (rgb != null) {
    
         color.dispose();
    
         color = new Color(shell.getDisplay(), rgb);
    
         //设置标签的颜色
    
         colorLabel.setBackground(color);
    
       }
    
    评论

报告相同问题?

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?