相关疑难解决方法(0)

如何在JLabel中对图标进行右对齐?

对于带有图标的JLabel,如果setHorizontalTextPosition(SwingConstants.LEADING)是,则无论标签有多宽,都会在文本后面立即绘制图标.

这对于列表来说尤其糟糕,因为图标将遍布整个地方,具体取决于每个项目的文本长度.

我跟踪代码,似乎是SwingUtilities#layoutCompoundLabelImpl,文本宽度只是设置为SwingUtilities2.stringWidth(c, fm, text),而图标x设置为跟随文本而不考虑标签宽度.

这是最简单的情况:

import java.awt.*;
import javax.swing.*;

public class TestJLabelIcon
{
    public static void main(String args[])
    {
        EventQueue.invokeLater(new Runnable()
        {
            public void run()
            {
                JLabel c = new JLabel("abc");
                c.setHorizontalTextPosition(SwingConstants.LEADING);
                c.setHorizontalAlignment(SwingConstants.LEADING);
                c.setIcon(UIManager.getIcon("FileChooser.detailsViewIcon"));
                c.setBorder(BorderFactory.createLineBorder(Color.RED));

                JFrame frame = new JFrame();
                frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
                frame.getContentPane().add(c);    
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以看到标签始终填充框架但图标保持不变.如果将两个参数都设置为,则会出现镜像问题TRAILING.

我知道我可以覆盖UI,或使用JPanel等.我只是想知道我是否在JLabel中遗漏了一些简单的东西.如果没有,它似乎是一个Java bug.

仅供参考,这是Windows XP上的jdk1.6.0_06.

java swing jlabel jpanel layout-manager

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

如何在java中的2d矩阵中将double值表示为圆圈

所以我想编写一个矩阵浏览器,它可以让我重新排序矩阵的行和列.对于这个porpouse,我使用了Jtable类.现在我遇到的问题是,通过查看双值来重新排序矩阵是非常困难的,所以我想打印矩阵而不是双值,而是用圆圈表示圆的半径代表值.这样我就能更快地分辨出大值和小值之间的区别.

任何人都知道我怎么能用JTable或任何表类将这个双值转换成实心圆?

java swing information-visualization

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

个别且不连续的JTable单元选择

是否有任何干净的方法允许用户选择JTable的多个非连续单元格?或者我被迫实现自己的ListSelectionModel?

我在JTable上使用setCellSelectionEnabled()和setSelectionModel()方法,但我只能选择连续单元组.

编辑:

我试过@mKorbel不错的SSCCE.它适用于列表,但似乎没有完全在表上工作.这是一个SSCCE:

import java.awt.Component;

import java.awt.event.InputEvent;
import java.awt.event.MouseEvent;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;


public class TableSelection extends JFrame{
    String[] columnNames = {"First Name",
            "Last Name",
            "Sport",
            "# of Years",
            "Vegetarian"};
    Object[][] data = {
            {"Kathy", "Smith",
             "Snowboarding", new Integer(5), new Boolean(false)},
            {"John", "Doe",
             "Rowing", new Integer(3), new Boolean(true)},
            {"Sue", "Black",
             "Knitting", new Integer(2), new Boolean(false)},
            {"Jane", "White",
             "Speed reading", new Integer(20), new Boolean(true)},
            {"Joe", "Brown",
             "Pool", new Integer(10), new Boolean(false)}
        };

    public TableSelection(){
        JPanel main= …
Run Code Online (Sandbox Code Playgroud)

java swing jtable selection cells

4
推荐指数
2
解决办法
8016
查看次数