java - 如何使用文本字段设置椭圆的尺寸?

标签 java swing user-interface sprite ellipse

我正在进行的项目需要一个文本字段,供用户输入椭圆的宽度。当用户单击面板上的某个位置时,它会绘制一个具有指定宽度的椭圆。当我运行它时,宽度从未改变。

这是在initialize()中:

tTextWidth = new JTextField();
tTextWidth.setBounds(42, 457, 86, 20);
frame.getContentPane().add(tTextWidth);
tTextWidth.setColumns(10);JButton tSetWidth = new JButton("Set Width");


tSetWidth.addActionListener(new ActionListener() 
{
    public void actionPerformed(ActionEvent e) 
    {
        SetTextToWidth(tTextWidth.getText());
    }
});

这是在初始化()之后:

public void SetTextToWidth(String tWidth)
{
    if(tWidth == null)
    {
        tWidth = "50";
    }
    int tIntWidth = Integer.parseInt(tWidth);
    if(tIntWidth == 0)
    {
        tIntWidth = 50;
    }
    RoundSprite tSpriteWidth = new RoundSprite();
    tSpriteWidth.SetSpriteWidth(tIntWidth);
}

这是在 RoundSprite 类中:

private float mX;
private float mY;
int mWidth;
int mHeight;
Color mColor;
void DrawSprite(Graphics2D g2)
{
    AffineTransform tOldTransform = g2.getTransform();

    g2.setColor(mColor);

    g2.translate(mX, mY);

    g2.draw(new Ellipse2D.Double(0, 0, mWidth, mHeight));

    g2.setTransform(tOldTransform);

    g2.translate(mX - (mWidth / 2), mY - (mHeight / 2));
}
public void SetSpriteWidth(int tWidth)
{
    mWidth = tWidth;
}

最佳答案

所以有两件事......

一个...

ActionListener 仅当用户按下平台的操作键时才会触发,在大多数情况下是 Enter 键,只是为了让您知道;)

两个...

在您的SetTextToWidth中正在创建一个RoundSprite的新实例,它与屏幕上显示的内容没有上下文...

我认为,这意味着所有实例 RoundSprite 都应该更改,这不是您想要的。

discussed in this simular question ,您首先需要定义您实际尝试更改的 Sprite ,然后将您想要的更改应用到该特定实例(并重新绘制输出)...

附注

您可能想通读Code Conventions for the Java TM Programming Language ,这将使人们更容易阅读您的代码,也让您更轻松地阅读其他人

关于java - 如何使用文本字段设置椭圆的尺寸?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25110588/

相关文章:

java - JTable 模型数据未显示更新数据

java - 使用 JTable 显示 Arraylist 的值

javascript - JQuery 更改数据表的属性

Java .get(Calendar.YEAR) 返回当前年份而不是自分配值

java - 使用 swing 布局具有多个自定义组件的 jpanel

java - HashSet 并在 JList 上显示

user-interface - 使用 HTML5 的新输入类型显示表单错误

java - 选择组合框中的项目时执行操作

java - Sensor_Service 无法解析为变量

java - Spring Autowire Quartz 调度程序