我想创建一个简单的函数作为统一的参数,像这样(在c#中):
Invoke((() => { alarm = true; }), 3 );
但这不是统一的,它说:你不能将lambda表达式转换成字符串,因为invoke需要一个字符串。任何解决方案?
答案 0 :(得分:1)
阅读它,drawLine()
需要import javax.swing.SwingUtilities;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.BorderFactory;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
public class SwingPaintDemo2 {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
private static void createAndShowGUI() {
JFrame f = new JFrame("Line Test");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(new MyPanel());
f.pack();
f.setVisible(true);
}
}
class MyPanel extends JPanel {
public int x = 50;
public MyPanel() {
setBorder(BorderFactory.createLineBorder(Color.black));
}
public Dimension getPreferredSize() {
return new Dimension(250,250);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
//while(x<250){
g.drawLine(0,x,250,x);
g.drawLine(x,0,x,250);
//x = x+50;}
}
}
和\r\n
。它可能使用下面的反射,因此它需要稍后调用方法的字符串名称。这意味着您无法传递委托或lambda,但必须使用命名方法:
Invoke
请参阅: