小编haf*_*ues的帖子

Swing JList具有多行文本和动态高度

我已经阅读/试过这些帖子,但这没有帮助:

我需要的是一个ListCellRenderer返回左侧带有图标的面板和右侧的动态长度文本(如在任何论坛中:左侧是用户头像,右侧是帖子文本).这些文本为我所知,所以我无法设置固定的单元格高度.此外,文本长度不同于列表单元格到列表单元格.因此,每个列表单元格都需要自己的高度,具体取决于文本的长度.实际上是一个非常常见的布局...但不适用于Swing.单元格高度不会根据文本长度扩展.

我已经阅读了几乎所有有关动态单元格高度和多行文本的帖子JList,但找不到解决方案.所以我决定给一个小型的SSCCE.请告诉我如何实现我所描述的内容,或者如果您认为这很容易,请修改我的代码.

谢谢

这是SSCCE:

public class MultiLineList extends JFrame
{

    private static final long serialVersionUID = 1L;

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

    private MultiLineList()
    {
        setTitle("MultiLineList");
        setSize(800, 450);
        setResizable(true);
        setVisible(true);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        this.getContentPane().setLayout(new BorderLayout());

        final DefaultListModel model = new DefaultListModel();
        model.addElement("This is a short text");
        model.addElement("This is a long text. This is a long text. This is a long text. This is a long text. This …
Run Code Online (Sandbox Code Playgroud)

java swing expand jlist listcellrenderer

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

Swing中JTextField的透明边框

我在JPanel中有一个搜索域.JPanel有一个背景图片.我想在这个面板中放置一个JTextField,但是JTextField应该有一个透明的边框,所以它有一些填充到顶部和底部,你应该看到面板的背景图像.

我在这里有一个SSCCE,其中面板有蓝色背景而不是背景图像.我希望文本字段是白色的,但周围有一个边框,让你看到它下方的蓝色面板.透明边框会很棒,但EmptyBorder不起作用.这是SSCCE:

import java.awt.BorderLayout;
import java.awt.Color;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class TransparentBorder
{

    public TransparentBorder()
    {
        //Create and set up the window.
        final JFrame frame = new JFrame("Transparent Border");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(600, 100);

        // set window size
        frame.setUndecorated(false);

        //P1
        final JPanel panel = new JPanel(new BorderLayout());
        panel.setBackground(Color.BLUE);

        final JButton btn = new JButton("Search");
        btn.setOpaque(false);
        panel.add(btn, BorderLayout.EAST);

        final JTextField field = new JTextField();

        field.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
        //        field.setOpaque(false);
        panel.add(field);

        frame.add(panel);
        //Display the window.
        // …
Run Code Online (Sandbox Code Playgroud)

java swing border transparent

8
推荐指数
1
解决办法
6427
查看次数

JTree将节点的背景设置为非不透明

请看一下SSCCE.如何使未选择的树节点的背景透明.目前,未选择节点的背景为白色.但是,我的单元格渲染器应该将其绘制为非透明(如果未选中)(选择时为绿色......它的作用).最后,我希望非选定节点只是没有背景的文本,因为SSCCE中红色的区域在我的应用程序中有一个渐变填充.

    import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellRenderer;

public class SimpleTree extends JFrame
{
    public static void main(final String[] args)
    {
        new SimpleTree();
    }

    public SimpleTree()
    {
        super("Creating a Simple JTree");
        final Container content = this.getContentPane();
        content.setBackground(Color.RED);
        final Object[] hierarchy = { "javax.swing", "javax.swing.border", "javax.swing.colorchooser", "javax.swing.event", "javax.swing.filechooser", new Object[] { "javax.swing.plaf", "javax.swing.plaf.basic", "javax.swing.plaf.metal", "javax.swing.plaf.multi" }, "javax.swing.table",
                        new Object[] { "javax.swing.text", new Object[] { "javax.swing.text.html", "javax.swing.text.html.parser" }, "javax.swing.text.rtf" }, "javax.swing.tree", …
Run Code Online (Sandbox Code Playgroud)

java swing treenode renderer jtree

8
推荐指数
2
解决办法
6730
查看次数

在Swing中设置JComboBox的背景

我想要一个没有箭头按钮(完成)的JComboBox,它在启用时具有绿色背景,在禁用时具有灰色背景(未完成).我还为下拉列表使用了自定义渲染器(完成)

我检查了BasicComboBoxUI的源代码并试图覆盖一些方法,但没有任何反应.下拉列表始终具有灰色/蓝色背景.

这是我最近一次尝试的SSCCE.我尝试了我能想到的一切.请给我一个提示,我迷路了.

    import java.awt.Color;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.Rectangle;

import javax.swing.BorderFactory;
import javax.swing.DefaultComboBoxModel;
import javax.swing.DefaultListCellRenderer;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.SwingUtilities;
import javax.swing.plaf.basic.BasicComboBoxUI;

public class DropDownBackground
{
    public static void main(final String[] args)
    {
        SwingUtilities.invokeLater(new Runnable()
        {

            public void run()
            {
                final JComboBox dropdown = new JComboBox(new DefaultComboBoxModel(new String[] { "one", "two", "three" }));
                dropdown.setRenderer(new ComboBoxListCellRenderer());
                dropdown.setUI(new BasicComboBoxUI()
                {
                    @Override
                    public void paint(final Graphics g, final JComponent c) …
Run Code Online (Sandbox Code Playgroud)

java swing background jcombobox

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

Google Charts只隐藏了一些传奇系列

是否可以仅隐藏图例中的某些系列.

我有一个组合图表包含:

  • A的数量
  • B的量
  • C量

全部显示为一个堆叠列.

并且:

  • A的数量/秒
  • B的量/秒
  • C的量/秒

全部显示为同一图表中的单独行.

现在"A的量"具有与"A的量/秒"相同的颜色.此颜色应仅在图例中显示一次并标记为"A".

是否可以使用Google Charts实现这一目标?如果是这样,怎么样?

legend series google-visualization hide

7
推荐指数
1
解决办法
5525
查看次数

如何在Java中访问硬件按钮

我有一个工业触摸屏的平板设备的运行的windows7(这一个).它有一个集成的RFID /条形码扫描仪和相机.两者都可以通过硬件按钮启动.我想知道,只要按下其中一个按钮.我用GlobalKeyEventListener编写了一个小测试应用程序,但是当按下其中一个按钮时,不会触发任何事件.触发所有正常的键盘事件.有谁知道,是否以及如何在Java中访问这些类型的按钮事件?在告诉客户之前,我还应该尝试什么呢?谢谢.

java hardware events button

6
推荐指数
1
解决办法
436
查看次数

如何在java swing中为所有类型的组件设置UI?

我创建了自己的MyScrollbarUI类,在我的应用程序中有一个自定义滚动条外观.现在我必须这样做

scrollPane.getHorizontalScrollBar().setUI(new MyScrollbarUI());
scrollPane.getVerticalScrollBar().setUI(new MyScrollbarUI());
Run Code Online (Sandbox Code Playgroud)

ScrollPane我使用的任何.

是否有可能告诉Swing它应该MyScrollbarUI在任何滚动条上使用它.也许通过UIManager

java swing scrollbar custom-component

5
推荐指数
1
解决办法
6856
查看次数

如何找到JavaFX版本

这应该很容易,但我无法弄清楚如何.有没有办法找出安装的JavaFX版本.我并不是指以编程方式通过System.getProperty("javafx.runtime.version"),虽然安装了JavaFX,但它会在我的计算机上返回一个空字符串.

我宁愿java -version在控制台上有类似的东西,但为了获得JavaFX版本.

或者,只要知道是否安装了JavaFX就足够了.我只是有一些客户无法运行我的swing/javaFX应用程序,并想告诉他们检查是否安装了JavaFX.

install javafx

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

根据内容展开JList行高

我有一个简单的问题让我疯狂.

我有一个JList,并希望它的单元格根据其内容进行扩展,这是可变长度的文本.

所以我创建了一个CustomCellRenderer,如下所示:

@Override
public Component getListCellRendererComponent(final JList list, final Object value, final int index, final boolean isSelected, final boolean hasFocus)
{
    final String text = (String) value;

    final JTextArea ta = new JTextArea();
    ta.setText(text);
    ta.setFont(new Font("Dialog", Font.PLAIN, (int) Theme.FONTSIZE_TEXT));
    ta.setForeground(Theme.FONTCOLOR_CONTENT);
    ta.setLineWrap(true);
    ta.setWrapStyleWord(true);
    ta.setColumns(0);
    ta.setBorder(BorderFactory.createEmptyBorder(10, Theme.PADDING, 0, 0));
    return ta;
}
Run Code Online (Sandbox Code Playgroud)

但是单元格只有一个文本行高,而JTextArea的其余部分被截断.如果我加

ta.setPreferredSize(new Dimension(0, 70));
Run Code Online (Sandbox Code Playgroud)

我的行高为70,我可以看到更多JTextArea的文本,但仍然不是一切.

有没有办法让JList扩展其单元格,以便显示JTextArea的整个内容?

java height swing row jlist

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

在jsinterop中哪里可以找到LinkedHashSet?

我在GWT中有以下实体

@JsType(namespace = "my.entities")
public class MyEntity {
   private Set<String> texts;
   public Set<String> getTexts(){
       if(this.texts==null)
           this.texts=new LinkedHashSet<String>();
       return this.texts;
   }

   public void setTexts(Set<String> texts){
       this.texts=texts;
   }

}
Run Code Online (Sandbox Code Playgroud)

当我myEntityVar.getTexts()用Java语言调用时,返回的对象是HashSet。似乎jsinterop将HashSet的java实现转换为JavaScript。但是如何使用JavaScript创建新的HashSet myEntityVar.setTexts(texts)呢?我为“文本”参数尝试了一个数组,但这不起作用。因此,我需要以某种方式在JavaScript中使用HashSet。但是,我不知道在哪里找到它。任何的想法?

gwt linkedhashset gwt-jsinterop

0
推荐指数
1
解决办法
72
查看次数