翻譯|使用教程|編輯:吳園園|2019-08-21 14:35:27.783|閱讀 280 次
概述:本文整理了用戶在使用MindFusion.Diagramming for Java常見的問題,希望對您有所幫助。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
MindFusion.Diagramming for Java(之前版本為JDiagram)為您圖表的自定義以及個性化提供了多種不同選項。您能在多種外形、箭頭以及色彩風格中選擇。
簡易的界面、豐富的事件與程序設置使編程變得快速簡單。在不需要花費寶貴的時間進行調整與調試的情況下,您能快速方便地找到正確的屬性以及建立正確的圖表。該控制組件使您能將更多精力集中在您應用程序的架構上,而不是將精力消耗在編碼以及優化上。
點擊下載MindFusion.Diagramming for Java最新試用版
本文整理了用戶在使用MindFusion.Diagramming for Java常見的問題,希望對您有所幫助。
問:如何使圖表只讀,以便用戶無法修改任何內容?
答:調用DiagramView.setBehavior(Behavior.DoNothing); Behavior屬性指定控件如何響應鼠標輸入,DoNothing模式忽略所有鼠標輸入。可以設置其他模式以允許繪制鏈接但不允許節點,以允許選擇和移動現有項目但不創建新項目等。
答:調用node.setEnabledHandles(AdjustmentHandles.Move); 也可以設置句柄組合,例如AdjustmentHandles.Move | AdjustmentHandles.Rotate僅允許移動和調整節點大小。
問:我可以阻止用戶刪除流程圖中的特定節點,例如開始和結束節點嗎?
答:實現DiagramListener.nodeDeleting方法并為不應刪除的節點調用NodeValidationEvent.setCancel(true)。
問:如何使用鼠標右鍵單擊圖元素時顯示上下文菜單?
答:實現DiagramListener.nodeClicked(或鏈接的linkClicked)并顯示JMenuPopup,例如:
public void nodeClicked(NodeEvent e)
{
final DiagramNode node = e.getNode();
if (e.getMouseButton() == MouseEvent.BUTTON3)
{
JPopupMenu menu = new JPopupMenu();
menu.add("Delete").addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent actionEvent)
{
diagram.getNodes().remove(node);
}
});
Point p = diagramView.docToDevice(e.getMousePosition());
menu.show(diagramView, p.x, p.y);
}
};
問:我可以在SWT(標準窗口小部件工具包)應用程序中使用Java圖表控件嗎?
答: JDiagram是一個Swing組件,它可以使用SWT / AWT Bridge庫嵌入到SWT應用程序中。創建并顯示可滾動的DiagramView的最小SWT程序如下所示。
import java.awt.Frame;
import java.awt.Panel;
import javax.swing.JScrollPane;
import org.eclipse.swt.SWT;
import org.eclipse.swt.awt.SWT_AWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import com.mindfusion.diagramming.DiagramView;
public class SwtApp
{
public static void main(String[] args)
{
// create SWT main window
Display display = new Display ();
Shell shell = new Shell(display);
shell.setLayout(new FillLayout());
Composite composite = new Composite(shell, SWT.EMBEDDED | SWT.NO_BACKGROUND);
// add a Swing frame to the SWT composite control
Frame frame = SWT_AWT.new_Frame(composite);
Panel panel = new Panel(new java.awt.BorderLayout());
frame.add(panel);
// add a DiagramView to the Swing frame
DiagramView flowchart = new DiagramView();
JScrollPane scrollPane = new JScrollPane(flowchart);
panel.add(scrollPane);
// run the SWT event loop
shell.open();
while (!shell.isDisposed())
{
if (!display.readAndDispatch())
display.sleep();
}
display.dispose ();
}
}
請注意,Swing和SWT處理不同線程中的事件。因此,如果需要更新SWT用戶界面以響應圖事件,則必須使用Display.asyncExec或Display.syncExec方法運行SWT處理代碼。如果需要更新圖表以響應SWT事件,請使用SwingUtilities.invokeLater或SwingUtilities.invokeAndWait方法運行圖表處理代碼。
教程持續更新中,感興趣的朋友記得持續關注后續教程~
想要購買MindFusion.Diagramming for Java正版授權的朋友可以。
更多精彩內容,敬請關注下方的微信公眾號,及時獲取產品最新資訊▼▼▼
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: