关于java中JToolBar或者其他工具栏的用法
我在用java设计用户界面时。一个flame里用了container,container中用了borderlayout,其中北方给了一个JToolBar。这个JToolB...
我在用java设计用户界面时。一个flame里用了container,container中用了borderlayout,其中北方给了一个JToolBar。这个JToolBar的setFloatable(true),可以拖动,拖动出来之后右上角有个叉,点叉之后它又回去了。现在我点叉之后不想让它回去,想让它关闭,还有想在这个JToolBar和上面的JMenuBar之间有一条分割线,应该怎么做,请高手指教!
展开
4个回答
展开全部
JToolBar加边框后,原有的拖动手柄就没了,只好改为给菜单栏加个边框了。
下面的程序实现了你的要求,菜单栏有一个复选菜单控制工具栏的显示的。
import javax.swing.*;
import javax.swing.event.*;
import java.awt.event.*;
import java.awt.*;
import javax.swing.border.*;
public class JToolBarTest extends JFrame{
JToolBar tbrTest;
JButton btnTest;
JMenuBar mbrTest;
JMenu mnuView;
JCheckBoxMenuItem mnuViewToolBar;
JTextArea txtEditor;
public JToolBarTest(){
btnTest=new JButton(new ImageIcon("Bold.gif"));
tbrTest=new JToolBar();
tbrTest.add(btnTest);
tbrTest.addAncestorListener(new AncestorListener(){
private WindowListener[] oldListeners;
private Window ancestorWindow;
public void ancestorAdded(AncestorEvent e){
ancestorWindow=SwingUtilities.getWindowAncestor((Component)(e.getSource()));
if(ancestorWindow!=JToolBarTest.this){
oldListeners=ancestorWindow.getWindowListeners();
for(WindowListener listener:oldListeners){
ancestorWindow.removeWindowListener(listener);
}
ancestorWindow.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
mnuViewToolBar.setSelected(false);
ancestorWindow.setVisible(false);
}
});
}
};
public void ancestorMoved(AncestorEvent e){}
public void ancestorRemoved(AncestorEvent e){}
});
add(tbrTest,BorderLayout.NORTH);
mnuViewToolBar=new JCheckBoxMenuItem("工具栏(T)",true);
mnuViewToolBar.setMnemonic('T');
mnuViewToolBar.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent e){
Window ancestorWindow=SwingUtilities.getWindowAncestor(tbrTest);
if(ancestorWindow!=JToolBarTest.this){
ancestorWindow.setVisible(e.getStateChange()==ItemEvent.SELECTED);
}
else{
tbrTest.setVisible(e.getStateChange()==ItemEvent.SELECTED);
}
}
});
mnuView=new JMenu("视图(V)");
mnuView.setMnemonic('V');
mnuView.add(mnuViewToolBar);
mbrTest=new JMenuBar();
mbrTest.setBorder(new EtchedBorder());
mbrTest.add(mnuView);
setJMenuBar(mbrTest);
txtEditor=new JTextArea();
add(txtEditor);
setSize(640,480);
}
public static void main(String[] args){
new JToolBarTest().setVisible(true);
}
}
下面的程序实现了你的要求,菜单栏有一个复选菜单控制工具栏的显示的。
import javax.swing.*;
import javax.swing.event.*;
import java.awt.event.*;
import java.awt.*;
import javax.swing.border.*;
public class JToolBarTest extends JFrame{
JToolBar tbrTest;
JButton btnTest;
JMenuBar mbrTest;
JMenu mnuView;
JCheckBoxMenuItem mnuViewToolBar;
JTextArea txtEditor;
public JToolBarTest(){
btnTest=new JButton(new ImageIcon("Bold.gif"));
tbrTest=new JToolBar();
tbrTest.add(btnTest);
tbrTest.addAncestorListener(new AncestorListener(){
private WindowListener[] oldListeners;
private Window ancestorWindow;
public void ancestorAdded(AncestorEvent e){
ancestorWindow=SwingUtilities.getWindowAncestor((Component)(e.getSource()));
if(ancestorWindow!=JToolBarTest.this){
oldListeners=ancestorWindow.getWindowListeners();
for(WindowListener listener:oldListeners){
ancestorWindow.removeWindowListener(listener);
}
ancestorWindow.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
mnuViewToolBar.setSelected(false);
ancestorWindow.setVisible(false);
}
});
}
};
public void ancestorMoved(AncestorEvent e){}
public void ancestorRemoved(AncestorEvent e){}
});
add(tbrTest,BorderLayout.NORTH);
mnuViewToolBar=new JCheckBoxMenuItem("工具栏(T)",true);
mnuViewToolBar.setMnemonic('T');
mnuViewToolBar.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent e){
Window ancestorWindow=SwingUtilities.getWindowAncestor(tbrTest);
if(ancestorWindow!=JToolBarTest.this){
ancestorWindow.setVisible(e.getStateChange()==ItemEvent.SELECTED);
}
else{
tbrTest.setVisible(e.getStateChange()==ItemEvent.SELECTED);
}
}
});
mnuView=new JMenu("视图(V)");
mnuView.setMnemonic('V');
mnuView.add(mnuViewToolBar);
mbrTest=new JMenuBar();
mbrTest.setBorder(new EtchedBorder());
mbrTest.add(mnuView);
setJMenuBar(mbrTest);
txtEditor=new JTextArea();
add(txtEditor);
setSize(640,480);
}
public static void main(String[] args){
new JToolBarTest().setVisible(true);
}
}
展开全部
JToolBar 提供了一个用来显示常用的 Action 或控件的组件。
对于大多数的外观,用户可以将工具栏拖到单独的窗口中(除非 floatable 属性被设置为 false)。为了正确执行拖动,建议将 JToolBar 实例添加到容器的四“边”中的一边(其中容器的布局管理器为BorderLayout),并且不在其他四“边”中添加任何子级。
JToolBar()
创建新的工具栏;默认的方向为 HORIZONTAL。
JToolBar(int orientation)
创建具有指定 orientation 的新工具栏。
JToolBar(String name)
创建一个具有指定 name 的新工具栏。
JToolBar(String name, int orientation)
创建一个具有指定 name 和 orientation 的新工具栏。
对于大多数的外观,用户可以将工具栏拖到单独的窗口中(除非 floatable 属性被设置为 false)。为了正确执行拖动,建议将 JToolBar 实例添加到容器的四“边”中的一边(其中容器的布局管理器为BorderLayout),并且不在其他四“边”中添加任何子级。
JToolBar()
创建新的工具栏;默认的方向为 HORIZONTAL。
JToolBar(int orientation)
创建具有指定 orientation 的新工具栏。
JToolBar(String name)
创建一个具有指定 name 的新工具栏。
JToolBar(String name, int orientation)
创建一个具有指定 name 和 orientation 的新工具栏。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |