标签: jtoolbar

如何让JToolBars包装到下一行(FlowLayout)而不将它们隐藏在它们下方的JPanel中?

我正在制作一个GUI,它在一个大型JPanel上方显示三个JToolBars.这些工具栏总体上非常大,所以我使用FlowLayout使它们在到达JFrame边界时换行到下一行.问题是,当它们换行到下一行时,它们会被下面的JPanel隐藏起来.我希望我可以强制包含工具栏的JPanel增长到足以显示所有工具栏.

有没有办法做到这一点?或者是否有其他方法可以使这些工具栏可见?

java swing flowlayout jtoolbar

18
推荐指数
1
解决办法
8295
查看次数

JAVA:填充框架的方法.add(),setContentPane(),getContentPane()

我找到了三种方法来填充我的JFrame框架= new JFrame("...")createContentPanel返回一个JPanel,createToolBar返回一个ToolBar.

frame.add(this.createToolBar(), BorderLayout.PAGE_START); //this works and puts the ToolBar above and the ContentPanel under it<br>
frame.add(this.createContentPanel(), BorderLayout.CENTER);

frame.setContentPane(this.createContentPanel()); //this lets the JToolBar hover over the ContentPanel
frame.getContentPane().add(this.createToolBar()); 

frame.getContentPane().add(this.createContentPanel()); //this only puts the last one into the JFrame
frame.getContentPane().add(this.createToolBar());
Run Code Online (Sandbox Code Playgroud)

现在我想知道为什么我应该使用getContentPane()/ setContentPane()方法,如果我可以使用一个简单的frame.add(...)来填充我的框架.

java jframe jtoolbar

13
推荐指数
1
解决办法
3万
查看次数

如何在Java Swing工具栏中创建"下拉"菜单?

我在Swing JToolBar上创建了一个下拉菜单.但它并没有按照我想要的方式创造行为.我的目标是像Firefox的"智能书签"按钮一样工作.

当用户选择菜单项时,它会消失:正确!

当用户按下ESC时,它会消失:CORRECT!

当用户点击菜单外的主框架中的某处时,它会消失:正确!

但是当用户第二次点击显示下拉菜单的按钮时,它不会消失:INCORRECT ... :-(

我的问题是如何添加这种行为,当点击第二次显示菜单的按钮时,它确实消失了.

这是我目前的代码,来自Mac上的Java 6:

import javax.swing.*;
import javax.swing.event.PopupMenuEvent;
import javax.swing.event.PopupMenuListener;
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

public class ScratchSpace {

    public static void main(String[] arguments) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JFrame frame = new JFrame("Toolbar with Popup Menu demo");

                final JToolBar toolBar = new JToolBar();
                toolBar.add(createMoreButton());

                final JPanel panel = new JPanel(new BorderLayout());
                panel.add(toolBar, BorderLayout.NORTH);
                panel.setPreferredSize(new Dimension(600, 400));
                frame.getContentPane().add(panel);
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

    private static AbstractButton createMoreButton() { …
Run Code Online (Sandbox Code Playgroud)

java swing menu jtoolbar drop-down-menu

9
推荐指数
1
解决办法
2万
查看次数

某些FontAwesome字形不会在Java Swing JToolBar按钮中呈现

我在Swing JToolBar中的按钮中显示来自FontAwesome集合的某些字形时遇到问题.这是一个截图(注意右侧工具栏中的顶部按钮不是一个漂亮的图标,而是显示三个空矩形):

屏幕截图来说明问题

重现这个的代码(至少在我的Mac上)是:

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.Font;![enter image description here][2]
import java.awt.FontFormatException;
import java.io.IOException;
import java.io.InputStream;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JToolBar;

public class TestFontAwesome {

    public static void main(String[] args) {
        new TestFontAwesome();
    }

    public TestFontAwesome() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try (InputStream is = TestFontAwesome.class.getResourceAsStream("/fontawesome-webfont_old.ttf")) {
                    Font font = Font.createFont(Font.TRUETYPE_FONT, is);
                    font = font.deriveFont(Font.PLAIN, 24f);

                    JToolBar toolBar = new JToolBar(JToolBar.VERTICAL);
                    JButton button1 = new JButton("\uf00e");
                    button1.setFont(font);
                    toolBar.add(button1);
                    JButton button2 = new JButton("\uf01e"); …
Run Code Online (Sandbox Code Playgroud)

java macos fonts swing jtoolbar

9
推荐指数
1
解决办法
830
查看次数

在另一个类中添加Component时,JPanel不会更新

我是Java Swing的新手,我遇到了一些问题.

  1. 作为一个附带问题,在制作相当大的Java Swing应用程序时,分割代码的最佳方法是什么?在我的情况下,我希望有一个应用程序,其布局与Microsoft Word一样,其中有一个JToolBar,其中包含按钮和一个主JPanel,其中根据工具栏中按下的按钮进行更改.
  2. 因此,如下面的代码所示,我有一个JFrame,我调用MainPanel类来创建一个面板并添加一个带按钮的ToolBar.按下按钮时,它会向面板添加一个按钮.在您调整窗口大小之前单击按钮时没有显示问题(在我的情况下,我只需手动拖动屏幕使其变大).

    public class Main {
    
    private static void createAndShowGUI() {
        //Create and set up the window.
        JFrame frame = new JFrame("MathMaker");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
        //Create the menu bar.  Make it have a green background.
        //MainToolBar mainTB = new MainToolBar();
        MainPanel mainPanel = new MainPanel();
    
        frame.getContentPane().add(mainPanel.getGUI(), BorderLayout.CENTER);
        frame.pack();
        frame.setVisible(true);
    }
    
    public static void main(String[] args) {
        //Schedule a job for the event-dispatching thread:
        //creating and showing this application's GUI.
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            } …
    Run Code Online (Sandbox Code Playgroud)

java swing jpanel jbutton jtoolbar

4
推荐指数
1
解决办法
3115
查看次数

如何禁用拖动JToolbar?

如何禁用拖动JToolbar?我把它放在BorderLayout中.我试着找一个方法.有这样的方法吗?谢谢

java user-interface swing jtoolbar border-layout

4
推荐指数
1
解决办法
2185
查看次数

有没有人知道如何布局不移动或重新放大其中任何组件的JToolBar?

任何人都可以帮助解决这个问题我正在尝试创建一个JToolBar,我想要修复其所有组件的大小和位置.我已经尝试了一些不同的布局管理器,但是当它们重新调整大小时,它们都会对组件进行居中和/或重新调整大小.

这是一个使用GridbagLayout的例子,我也使用了默认的布局管理器,toolbar.add(component)但结果是一样的:'

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.*;

public class ToolBarTest extends JFrame
{
    private JToolBar toolbar;
    private JPanel mainPanel;
    private JPanel toolBarPanel;
    private JButton aButton;
    private JCheckBox aCheckBox;
    private JList aList;
    private Box toolbarBox;
    private GridBagConstraints toolbarConstraints;
    private GridBagLayout toolbarLayout;
    private JLabel shapeLabel;
    private JComboBox<ImageIcon> shapeChooser;
    private JLabel colorLabel;
    private JComboBox colorChooser;

    private String colorNames[] = { "Black" , "Blue", "Cyan", "Dark Gray",
            "Gray", "Green", "Light Gray", "Magenta", "Orange",
            "Pink", "Red", …
Run Code Online (Sandbox Code Playgroud)

java layout swing jtoolbar preferredsize

3
推荐指数
1
解决办法
5872
查看次数

如何在 JToolBar 中的两个按钮之间添加间隙?

我需要添加一个简单的间隙/空间/边距,以便在这两个按钮之间留出空间。不幸的是我不能让它工作。谁能给我一些建议?

它基于BorderLayout,按钮位于JToolBar

在此处输入图片说明

java layout swing jtoolbar border-layout

3
推荐指数
1
解决办法
4616
查看次数

使jtoolbar透明

我有一个带背景的jPanel,我想在其上添加一个JToolbar.
我的问题是当我添加JToolbar时,它的默认背景很烦,我将它设置为不透明,但没有效果.
我想删除它的默认背景并使其透明.
我阅读了以下文章,但没有帮助:
JToolbar背景图像
这是我的代码:

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;

import javax.swing.Action;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JToolBar;

public class Toolbar extends JToolBar {

    private JButton manage;
    private JButton add;
    private JButton search;
    private JButton exit;

    public Toolbar() {
        super();

        manage = new JButton();
        add = new JButton();
        search = new JButton();
        exit = new JButton();

        ImageIcon icon = new ImageIcon("pics/Add-01.png");
        Image img = icon.getImage();
        Image newImage = img.getScaledInstance(80, 80, Image.SCALE_SMOOTH);
        add.setIcon(new ImageIcon(newImage));

        setOpaque(false);

        setBackground(Color.RED);

        add(add); …
Run Code Online (Sandbox Code Playgroud)

java swing transparent jtoolbar

3
推荐指数
1
解决办法
772
查看次数

JBoolton中的抽象动作在没有文本的JToolbar中

我的java swing应用程序有一些在JMenuItems和JButtons中使用的AbstractActions.我想把它们中的一些放在JButton里面的JToolbar中,但我只想要显示图标,而不是文本.有最佳实践方法吗?

java icons swing jbutton jtoolbar

2
推荐指数
1
解决办法
3964
查看次数