2014-05-14 27 views
0

我是一種新的ImageJ,我無法在我自己的GUI中顯示imageJ工具欄。有人知道如何顯示工具欄。我試過tool.show(),但不贊成使用。我不知道在調用Toolbar類的ImageJ代碼中的什麼地方。提前致謝。調用ImageJ工具條

更新: 這裏是你想要的代碼

JMenuItem toolbar = new JMenuItem("Toolbar"); 
    toolbar.addActionListener(new ActionListener(){ 

     @Override 
     public void actionPerformed(ActionEvent arg0) { 
      // TODO Auto-generated method stub 
      JFrame f = new JFrame(); 
      Canvas c = new Canvas(); 
      Toolbar tool = new Toolbar(); 
      tool.setVisible(true); 

      System.out.println(tool.isShowing()); 
      //tool.show(); 
      //tool.getAccessibleContext(); 
      tool.getGraphics(); 
      tool.installStartupTools(); 

     } 

    }); 

回答

1

相信的一部分,您使用的.setVisible(true)代替.show()

工具欄擴展畫布可以看出here。我剛纔提到的這兩種方法是不恰當的工具欄,而他們的方法java.awt.Canvas

UPDATE

好吧,我看到你在做什麼。真的,revalidate()可能是你缺少刷新屏幕的一塊。下面是一些代碼和一些更好的解釋:

import ij.gui.Toolbar; 

import java.awt.Canvas; 
import java.awt.Graphics; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.JFrame; 
import javax.swing.JMenu; 
import javax.swing.JMenuBar; 
import javax.swing.JMenuItem; 

public class Test1 { 

    public static Toolbar tool; 
    public static JFrame f; 
    public static boolean state = false; 

    public static void main(String[] args) {     
     f = new JFrame(); 
     f.setSize(600,600); 
     Canvas c = new Canvas(); 
     f.add(c); 

     tool = new Toolbar(); 
     Graphics g = tool.getGraphics(); 
     tool.installStartupTools(); 

     JMenuBar menubar = new JMenuBar(); 
     JMenu menu = new JMenu("Menu"); 
     JMenuItem toolbar = new JMenuItem("Toolbar"); 
     menu.add(toolbar); 
     menubar.add(menu); 

     f.setJMenuBar(menubar); 

     toolbar.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent e) { 
       state = !state; 
       tool.setVisible(state); 
       tool.revalidate(); 
      } 



     }); 

     tool.setVisible(false); 
     f.add(tool); 

     f.setVisible(true); 
    } 

} 

請確保您的初始化代碼在偵聽器外面。這隻會在一開始就發生一次。動作偵聽器應該保留用於每個事件發生一次的事情。就像我每次選擇菜單項時都會打開和關閉工具欄。並且將工具欄添加到框架似乎沒有問題。它將顯示在最上面(使用默認佈局方案),您可以在需要時使用它。你當然也有其他選項在哪裏顯示工具欄。

+0

我也試過.setVisible(true),但它仍然不顯示。我不知道我哪裏錯了。 – selena

+0

沒有看到代碼示例,我會問的是你還要添加工具欄?所以像yourComponent.add(工具欄)。 – demongolem

+0

不,我只是希望工具欄顯示如此基本,當一個菜單欄按鈕被調用時,它應該打開工具欄。所以我基本上只是工具欄t =新的ToolBar()。我應該將它添加到框架還是面板?我添加了代碼,所以我希望它能讓您更好地瞭解我想實現的目標。 – selena