Java 来自 Java 脚本逻辑的代码无法正常工作
Java code derived from Javascript logic is not working properly
我正在使用 NetBeans8 IDE .
这是来自此 Fiddle
的 java 脚本函数
function animate() {
xnow = parseInt(item.style.left);
item.style.left = (xnow+1)+'px';
ynow = parseInt(item.style.top);
item.style.top = (ynow+Math.sin(2*Math.PI*(xnow/50))*10) + "px";
setTimeout(animate,20);
}
此处程序员使用 java 脚本创建移动正弦波。
同样的想法,通过做一些细微的改动,我使用timer t
创建了一个java程序。方程式与above.But完全相同,我的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 个不同的问题会影响您的逻辑,
Layout:您需要将 Swing 组件放入没有布局的容器组件中。或者我们可以将其称为没有布局的平面。
Division : 除法运算符接受 2 个操作数和 returns 一个 value.These 2 个操作数和 return 值有一个类型。除法操作数的 return 类型等于操作数的类型,它是最大的一组数字。示例:int / short returns int
或 int / int returns int
或 float / int returns float
所以让我们考虑 javascript 中的除法,javascript 只有一种类型和它的编号(实数集)。所以结果将永远是一个实数。
但是在 java 中你将 xnow 定义为 int 并且 50 是常量 int 那么结果必须是一个 int 这意味着:
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 / 50 F)) * 10);
AL1.setLocation(xnow, ynow);
}
});
在这种容器中
private void initGui() {
mainFrame = new JFrame("Test Frame");
mainFrame.setSize(800, 600);
mainFrame.setLayout(null);
AL1 = new JRadioButton("Radio");
AL1.setSize(100, 100);
AL1.setVisible(true);
AL1.setLocation(50, 50);
mainFrame.add(AL1);
mainFrame.setVisible(true);
}
您的逻辑将像在 java脚本中一样工作。
我正在使用 NetBeans8 IDE .
这是来自此 Fiddle
的 java 脚本函数 function animate() {
xnow = parseInt(item.style.left);
item.style.left = (xnow+1)+'px';
ynow = parseInt(item.style.top);
item.style.top = (ynow+Math.sin(2*Math.PI*(xnow/50))*10) + "px";
setTimeout(animate,20);
}
此处程序员使用 java 脚本创建移动正弦波。
同样的想法,通过做一些细微的改动,我使用timer t
创建了一个java程序。方程式与above.But完全相同,我的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 个不同的问题会影响您的逻辑,
Layout:您需要将 Swing 组件放入没有布局的容器组件中。或者我们可以将其称为没有布局的平面。
Division : 除法运算符接受 2 个操作数和 returns 一个 value.These 2 个操作数和 return 值有一个类型。除法操作数的 return 类型等于操作数的类型,它是最大的一组数字。示例:
int / short returns int
或int / int returns int
或float / int returns float
所以让我们考虑 javascript 中的除法,javascript 只有一种类型和它的编号(实数集)。所以结果将永远是一个实数。
但是在 java 中你将 xnow 定义为 int 并且 50 是常量 int 那么结果必须是一个 int 这意味着:
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 / 50 F)) * 10);
AL1.setLocation(xnow, ynow);
}
});
在这种容器中
private void initGui() {
mainFrame = new JFrame("Test Frame");
mainFrame.setSize(800, 600);
mainFrame.setLayout(null);
AL1 = new JRadioButton("Radio");
AL1.setSize(100, 100);
AL1.setVisible(true);
AL1.setLocation(50, 50);
mainFrame.add(AL1);
mainFrame.setVisible(true);
}
您的逻辑将像在 java脚本中一样工作。