从Javascript逻辑派生的Java代码工作不正常
我正在使用NetBeans8 IDE 下面是来自此函数的JavaScrippt函数 在这里,程序员使用java脚本创建移动的正弦波 基于同样的想法,通过做一些细微的更改,我使用从Javascript逻辑派生的Java代码工作不正常,javascript,java,netbeans-8,wave,trigonometry,Javascript,Java,Netbeans 8,Wave,Trigonometry,我正在使用NetBeans8 IDE 下面是来自此函数的JavaScrippt函数 在这里,程序员使用java脚本创建移动的正弦波 基于同样的想法,通过做一些细微的更改,我使用定时器t创建了一个java程序。等式与上面的等式完全相同。但是我的jRadioButton是无法控制的。 用这种方法可以产生一个移动的正弦波吗 请帮我解决这个问题。提前谢谢 下面是我的一些java代码 Timer t = new Timer(10, new ActionListener() {
定时器t
创建了一个java程序。等式与上面的等式完全相同。但是我的jRadioButton
是无法控制的。
用这种方法可以产生一个移动的正弦波吗
请帮我解决这个问题。提前谢谢
下面是我的一些java代码
Timer t = new Timer(10, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//AL1 is the name given to radiobutton
int xnow=AL1.getX()+1;
int ynow=AL1.getY();
ynow=(int) (ynow+Math.sin(2*Math.PI*(xnow/50))*10);
AL1.setLocation(xnow, ynow);
}
});
private void formWindowOpened(java.awt.event.WindowEvent evt) {
// TODO add your handling code here:
AL1.setLocation(0, 200);
t.start();
}
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap()
.addComponent(Lpne, javax.swing.GroupLayout.DEFAULT_SIZE, 1030, Short.MAX_VALUE)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(Lpne, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 551, Short.MAX_VALUE)
);
请尝试控制我的jRadioButton
谢谢大家。。。
这是最终的结果
2不同的问题会影响您的逻辑
- 布局:您需要将Swing组件放到没有布局的容器组件中。或者我们可以称之为没有布局的平面
- 除法:除法运算符接受两个操作数并返回一个值。这两个操作数和返回值具有类型。除数操作数的返回类型等于操作数的类型,该类型是最大的一组数字。示例:
或int/short返回int
或int/int返回int
float/int返回float
30 / 50 = 0;
所以你必须使你的一个操作数成为实数。
在Java中,您可以为此选择Float类型
30 / 50F = 0.6;
50F是一个恒定的浮点值
所以如果你像这样修改代码
Timer t=new Timer(10,new ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent e){
int xnow=AL1.getX()+1;
int ynow=AL1.getY();
ynow=(int)(ynow+Math.sin(2*Math.PI*(xnow/50f))*10);
AL1.设置位置(xnow,ynow);
}
});
用这种容器装的
private void initGui(){
大型机=新JFrame(“测试框架”);
大型机。设置大小(800600);
mainFrame.setLayout(空);
AL1=新的JRadioButton(“收音机”);
AL1.设置大小(100100);
AL1.setVisible(真);
AL1.设定位置(50,50);
mainFrame.add(AL1);
mainFrame.setVisible(true);
}
您的逻辑将像javascript一样工作 你把AL1放在哪里了?很可能Al1的父级布局不支持基于笛卡尔坐标(x,y)像素的定位功能。它只是我的
JRadiobutton
的一个名称。显然它有.getX()
和'getY()`方法。我还使用JRadiobutton
和JLabel
创建了一个模拟时钟,我没有问AL1是什么。我问哪个对象包含AL1,我们称这个对象为AL1的父对象,AL1的父对象的布局类型是什么?我现在将所有组件放在jLayeredpane
描述的有问题的布局部分上。我对我的问题做了一些编辑,请检查一下,你能检查一下吗?我现在不能测试它,但是让continer的布局为null应该可以工作。但是它应该是Al1的父级,我建议你只使用空的contentPane测试它,而不使用layeredpane,然后尝试在你的布局系统中实现。太好了,先生,非常好用。谢谢你的float
ing想法。这对我来说真是个新鲜的想法。非常感谢。先生,看看我的输出图像,我做了什么。这都是因为你的好主意,老板。谢谢。
30 / 50F = 0.6;