Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 要使用哪个Swing组件?_Java_Swing_Jlabel_Jtextfield - Fatal编程技术网

Java 要使用哪个Swing组件?

Java 要使用哪个Swing组件?,java,swing,jlabel,jtextfield,Java,Swing,Jlabel,Jtextfield,我是Java和GUI编程的新手。我有以下问题 在我的GUI中,我有一个JTextField和一个JLabel,它读取“Radius”。现在我想在JTextField旁边放置一个带有问号的图标,单击该图标可以详细解释JLabel的含义。例如,在这种情况下,它应该弹出一条消息,解释“要在图像上绘制的圆的半径”。当鼠标移动时,信息应该消失。下面是我试图实现的图形描述 我的问题很基本。我想知道我可以使用哪个Swing组件来实现这一点?我试图在网上查找它,但我不知道要查找哪个组件。如有任何帮助和建议,将不

我是Java和GUI编程的新手。我有以下问题

在我的GUI中,我有一个JTextField和一个JLabel,它读取“Radius”。现在我想在JTextField旁边放置一个带有问号的图标,单击该图标可以详细解释JLabel的含义。例如,在这种情况下,它应该弹出一条消息,解释“要在图像上绘制的圆的半径”。当鼠标移动时,信息应该消失。下面是我试图实现的图形描述

我的问题很基本。我想知道我可以使用哪个Swing组件来实现这一点?我试图在网上查找它,但我不知道要查找哪个组件。如有任何帮助和建议,将不胜感激。
你可以很容易地做到。您只需使用JLabel并在其上不放置任何文本即可。而是在上面放一个图像

此代码允许您将图像设置为JLabel

import java.awt.FlowLayout;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class AddingIconJLabel {
  public static void main(String[] args) {
    JFrame.setDefaultLookAndFeelDecorated(true);
    JFrame frame = new JFrame();
    frame.setTitle("JLabel Test");
    frame.setLayout(new FlowLayout());
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    ImageIcon imageIcon = new ImageIcon("yourFile.gif");
    JLabel label = new JLabel(imageIcon);

    frame.add(label);
    frame.pack();
    frame.setVisible(true);
  }
}
其次,在JLabel上放置工具提示,以便在图像上显示文本

这里有一些有用的代码提示

JLabel label = new JLabel("Username");
label.setToolTipText("Enter your username");

你可以很容易地做到。您只需使用JLabel并在其上不放置任何文本即可。而是在上面放一个图像

此代码允许您将图像设置为JLabel

import java.awt.FlowLayout;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class AddingIconJLabel {
  public static void main(String[] args) {
    JFrame.setDefaultLookAndFeelDecorated(true);
    JFrame frame = new JFrame();
    frame.setTitle("JLabel Test");
    frame.setLayout(new FlowLayout());
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    ImageIcon imageIcon = new ImageIcon("yourFile.gif");
    JLabel label = new JLabel(imageIcon);

    frame.add(label);
    frame.pack();
    frame.setVisible(true);
  }
}
其次,在JLabel上放置工具提示,以便在图像上显示文本

这里有一些有用的代码提示

JLabel label = new JLabel("Username");
label.setToolTipText("Enter your username");

我想知道为什么没有人建议用a来做这个

这基本上就是工具提示(和弹出菜单)“引擎盖下”使用的内容。这里的主要优点是,您不必关心布局,并且(与标准工具提示不同)可以完全控制布局的显示时间和消失时间。因此,您可以在单击图标时显式创建弹出窗口,并在鼠标退出图标时显式隐藏它:

以下是代码,如下所示:

导入java.awt.BorderLayout;
导入java.awt.Color;
导入java.awt.Component;
导入java.awt.Dimension;
导入java.awt.FlowLayout;
导入java.awt.Point;
导入java.awt.event.MouseAdapter;
导入java.awt.event.MouseEvent;
导入javax.swing.BorderFactory;
导入javax.swing.Icon;
导入javax.swing.JFrame;
导入javax.swing.JLabel;
导入javax.swing.JPanel;
导入javax.swing.JTextField;
导入javax.swing.Popup;
导入javax.swing.PopupFactory;
导入javax.swing.SwingUtilities;
导入javax.swing.UIManager;
公共类弹出窗口示例
{
公共静态void main(字符串[]args)
{
调用器(()->createAndShowGui());
}
私有静态void createAndShowGui()
{
JFrame f=新的JFrame();
f、 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel p=newjpanel(newborderlayout());
p、 添加(新JLabel(“半径”)、BorderLayout.WEST;
p、 添加(新JTextField(10),BorderLayout.CENTER);
Icon-Icon=UIManager.getIcon(“OptionPane.questionIcon”);
JLabel标签=新的JLabel(图标);
addHelpPopup(标签“”)
+“帮助文本。您可以(但不必)
” +“不必)在此处为
使用HTML” +“格式化” + ""); p、 添加(标签,边框布局。东); f、 getContentPane().setLayout(新的FlowLayout()); f、 getContentPane().add(p); f、 添加(标签); f、 设置大小(400300); f、 setLocationRelativeTo(空); f、 setVisible(真); } 私有静态void addHelpPopup(组件、字符串文本) { addMouseListener(新的MouseAdapter() { 私人弹出窗口; @凌驾 公共无效mouseClicked(MouseEvent e) { 如果(弹出!=null) { popup.hide(); 弹出=空; } PopupFactory-PopupFactory=PopupFactory.getSharedInstance(); JLabel标签=新的JLabel(文本); label.set不透明(true); label.setboorder(BorderFactory.createCompoundBorder( BorderFactory.createLineBorder(颜色为黑色), createEmptyByOrder(5,5,5,5)); 维度尺寸=label.getPreferredSize(); 点p=e.getLocationOnScreen(); popup=popupFactory.getPopup( 部件、标签、p.x、p.y-尺寸高度); popup.show(); } @凌驾 公共无效mouseExited(MouseEvent e) { 如果(弹出!=null) { popup.hide(); 弹出=空; } } }); } }
我想知道为什么没有人建议用a来做这个

这基本上就是工具提示(和弹出菜单)“引擎盖下”使用的内容。这里的主要优点是,您不必关心布局,并且(与标准工具提示不同)可以完全控制布局的显示时间和消失时间。因此,您可以在单击图标时显式创建弹出窗口,并在鼠标退出图标时显式隐藏它:

以下是代码,如下所示:

导入java.awt.BorderLayout;
导入java.awt.Color;
导入java.awt.Component;
导入java.awt.Dimension;
导入java.awt.FlowLayout;
导入java.awt.Point;
导入java.awt.event.MouseAdapter;
导入java.awt.event.MouseEvent;
导入javax.swing.BorderFactory;
导入javax.swing.Icon;
导入javax.swing.JFrame;
导入javax.swing.JLabel;
导入javax.swing.JPanel;
导入javax.swing.JTextField;
导入javax.swing.Popup;
导入javax.swing.PopupFactory;
导入javax.swing.SwingUtilities;
导入javax.swing.UIManager;
公共类弹出窗口示例
{
公共静态void main(字符串[]args)
{
调用器(()->createAndShowGui());
}
私有静态void createA