有没有办法在VM上运行的Dart应用程序退出之前执行某些操作?
我正在编写一个服务器应用程序,因此没有特定的时间点我的应用程序将退出.我正在尝试与另一个进程交谈,但如果用户关闭我的应用程序(使用ctr + c),或者由于某些未知原因而崩溃,我希望能够告诉该进程也关闭.
如果存在与此类似的东西,那将是很好的:
void main() {
onExit().then(() {
process.kill();
});
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
编辑:
我想出了如何检测Ctr+C
:
void main() {
ProcessSignal.SIGINT.watch().listen((ProcessSignal signal) {
print("exiting");
exit(0);
});
}
Run Code Online (Sandbox Code Playgroud)
现在,如果应用程序是从Dart编辑器运行的,有没有办法检测到关闭?
我试图让一个JPanel透明,但我不能让它工作.是否有可能做到这一点?
import java.awt.*;
import javax.swing.*;
public class ClearPanel extends JPanel{
public static void main(String[] args) {
ClearPanel c = new ClearPanel();
c.setPreferredSize(new Dimension(200, 200));
c.setOpaque(false);
JPanel backPanel = new JPanel();
backPanel.setBackground(Color.CYAN);
backPanel.add(c);
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setContentPane(backPanel);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.fillOval(0, 0, 200, 200);
g.clearRect(45, 45, 50, 50);
Graphics2D g2 = (Graphics2D) g;
g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.0f));
g2.fillRect(75, 75, 50, 50);
}
}
Run Code Online (Sandbox Code Playgroud)
椭圆形应该是不透明的,但矩形我想要透明.透明,我的意思是我应该能够看到ClearPanel背后的面板.
关于MadProgrammer的回答,有没有办法让灰色的盒子在区域之外的地方绘制,但是在该区域内保持透明?
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g); …
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建类似程序的绘画,我正在实现一个桶填充工具.我正在存储已绘制的所有点并使用Graphics2D drawLine
绘制实际线,因此我不想存储桶填充的所有点(因此我不想进行填充).
对于桶填充,到目前为止,我已经使用a BufferedImage
来填充不在我的列表中但仍在绘制的点.
我想做的一件事就是只存储最外面的点,而不是fillPolygon
使用这些点来使用Graphics2D .唯一的问题是我不确定如何找到这些点.
我被困在这里,所以有人有任何想法吗?