Java 从另一个类获取RadioButton上的文本值

Java 从另一个类获取RadioButton上的文本值,java,swing,graphics,jframe,jpanel,Java,Swing,Graphics,Jframe,Jpanel,我想从另一个绘画类获得buttongrup的单选按钮文本。 我创建了一个名为字符串收音机的对象,但给出了一个错误。怎么了 import javax.swing.*; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.Dimension; import java.awt.Graphics; import java.awt.GridLayout; impor

我想从另一个绘画类获得buttongrup的单选按钮文本。 我创建了一个名为字符串收音机的对象,但给出了一个错误。怎么了

import javax.swing.*;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;



public class Demo extends JFrame{

 /**
 * 
 */
private static final long serialVersionUID = 1L;

public Demo(){

     getContentPane().add(new Panelalt(),BorderLayout.SOUTH);
     getContentPane().add(new Panelust(),BorderLayout.NORTH);

 }

 public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            createAndShowGUI(); 
        }
    });
}

  static void createAndShowGUI() {

    Demo f = new Demo();
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.add(new Panelust());
    f.setPreferredSize(new Dimension(300,300));
    f.setBounds(100, 100, 300, 300);
    f.pack();
    f.setVisible(true);
}
}

class Panelalt extends JPanel  {
JComboBox numbers ;
private JRadioButton rectangle;
 private JRadioButton line;
 private JRadioButton circle;
 private JRadioButton square;
  ButtonGroup grup;
  JLabel number;
JButton draw ;
int gotnumber;
int gotheight;
int gotwidth;

String radio="";


public Panelalt(){
    grup = new ButtonGroup();

     rectangle = new JRadioButton("Rectangle");
       rectangle.setActionCommand("Rectangle");
      square = new JRadioButton("Square");
      square.setActionCommand("Square");
       line = new JRadioButton("Line");
       line.setActionCommand("Line");
       circle = new JRadioButton("Circle");
      circle.setActionCommand("Circle");
      rectangle.setSelected(true);
      JButton draw = new JButton("Draw");

      grup.add(circle);
       grup.add(line);
       grup.add(rectangle);
       grup.add(square);


       draw.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {


                radio=grup.getSelection().getActionCommand();
            }
        });

}

   }
 class Panelust extends JPanel{
Panelalt user = new Panelalt();

public Panelust(){

}
称为其他类obj。这里

public void paint(Graphics g){
        super.paintComponent(g);
        if(user.radio.equals("Rectangle")){
        g.drawRect(10, 10, 100, 100);
        }
    }
}

从通读开始

因此,你可以获得一个欣赏绘画是如何在秋千

接下来,让您的
Drawing
类从
JPanel
扩展,并覆盖它的
paintComponent
方法(而不是
paintComponents
方法,它的功能完全不同)

使用此类仅执行自定义绘制,不要向其添加任何控件。提供适当的设置器和吸气器,以便控制涂漆内容

为自己创建一个新的
JPanel
,并将控件添加到其中

将这两个面板添加到
JFrame
的实例中

有很多理由让你这么做

  • JFrame
    这样的顶级容器不是双缓冲的,这意味着重绘将闪烁,因此您希望避免重写
    paint
    方法
  • 绘画是一系列复杂的链式方法调用,毫无理由地打断绘画链的任何部分都会让你陷入痛苦的世界(当你试图找出哪里出了问题时)
  • 在已启用组件的组件上进行绘制最终将在组件下方进行绘制。即使您尝试重写
    绘制
    ,因为单个组件可以在不通知父容器的情况下重新绘制,它们将显示为“弹出”到您所绘制的内容上

停止破坏我的编辑-1
public void asd(图形g)
?认为public void油漆(…)