java链接激活事件行为差异
大家晚上好, 我有来自batik框架的JSVGCanvas组件,我正在画布上显示一个带有链接的svg文档。当链接点击时,我想在swing上打开一个新的windowjframe。因此,我使用的是linkActivated事件。然而,我的问题是java链接激活事件行为差异,java,swing,event-handling,batik,Java,Swing,Event Handling,Batik,大家晚上好, 我有来自batik框架的JSVGCanvas组件,我正在画布上显示一个带有链接的svg文档。当链接点击时,我想在swing上打开一个新的windowjframe。因此,我使用的是linkActivated事件。然而,我的问题是 private JPanel contentPane; File f; JSVGCanvas svgCanvas; /** * Launch the application. */ public static void main(String[] ar
private JPanel contentPane;
File f;
JSVGCanvas svgCanvas;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
trialgui frame = new trialgui();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public trialgui() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 452, 418);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
f = new File("./links.svg");
svgCanvas = new JSVGCanvas();
if(f.exists()==true){System.out.println("file is ok");}
try {
svgCanvas.setURI(f.toURL().toString());
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
svgCanvas.setDocumentState(JSVGCanvas.ALWAYS_DYNAMIC);
contentPane.add(svgCanvas, BorderLayout.CENTER);
svgCanvas.setMySize(new Dimension(100,100));
JButton btnNewButton = new JButton("New button");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
try {
svgCanvas.setURI(f.toURL().toString());
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
contentPane.add(btnNewButton, BorderLayout.NORTH);
svgCanvas.addLinkActivationListener(new LinkActivationListener() {
@Override
public void linkActivated(LinkActivationEvent arg0) {
System.out.println("here is working");
try {
JFrame gh = new JFrame();
gh.setVisible(true);
f = new File("./links.svg");
svgCanvas.setURI(f.toURL().toString());
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("here");
}
});
}
当用户单击链接时,svgcanvas会在同一画布中显示链接;当链接激活时触发。但是,由于方法不起作用,引用的链接出现在同一画布中。如果我在单击按钮时将相同的方法放在按钮事件中,它会将初始svg带回我的svgcanvas
有人能告诉我为什么这个事件的行为不同于按钮事件,我怎么可能解决这个问题
问候