Java 从另一个类获取RadioButton上的文本值
我想从另一个绘画类获得buttongrup的单选按钮文本。 我创建了一个名为字符串收音机的对象,但给出了一个错误。怎么了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
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
- 绘画是一系列复杂的链式方法调用,毫无理由地打断绘画链的任何部分都会让你陷入痛苦的世界(当你试图找出哪里出了问题时)
- 在已启用组件的组件上进行绘制最终将在组件下方进行绘制。即使您尝试重写
,因为单个组件可以在不通知父容器的情况下重新绘制,它们将显示为“弹出”到您所绘制的内容上绘制
public void asd(图形g)
?认为public void油漆(…)