调整图标大小以正确放入ScrollPane角点按钮

时间:2009-12-22 14:19:26

标签: java resize icons

我想将java的默认questionIcon添加到Scrollpane中的角落按钮,但图像不正确(因为按钮非常小)。我该怎么做才能使图标正确合适?

这是代码,它有效,所以你可以尝试一下,亲眼看看问题:)

import javax.swing.*;

public class CornerButton extends JFrame 
{
    public CornerButton()
    {

        JTextArea area = new JTextArea(20, 20);
        JScrollPane scroll = new JScrollPane(area);
        JButton btn = new JButton(UIManager.getIcon("OptionPane.questionIcon"));
        scroll.setCorner(ScrollPaneConstants.LOWER_RIGHT_CORNER, btn);
        this.add(scroll);
    }

    public static void main(String[] args) 
    {
        // TODO Auto-generated method stub
        CornerButton mainFrame = new CornerButton();

        mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        mainFrame.setVisible(true);
        mainFrame.setSize(200,200);
    }
}

NB。我在Sun的论坛上发布了相同的问题,但没有人回答,希望我从这里找到一些帮助:)

提前感谢。

2 个答案:

答案 0 :(得分:2)

如果您不想违反外观,可能只需调整图标图像大小并创建一个新图标:

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

public class CornerButton extends JFrame
{
    public CornerButton()
    {
        JTextArea area = new JTextArea(20, 20);
        JScrollPane scroll = new JScrollPane(area);
        Icon icn = UIManager.getIcon("OptionPane.questionIcon");
        int neededWidth = scroll.getVerticalScrollBar().getPreferredSize().width;
        int neededHeight = scroll.getHorizontalScrollBar().getPreferredSize().height;
        Image img = ((ImageIcon) icn).getImage();
        ImageIcon icon = new ImageIcon(img.getScaledInstance(neededWidth, neededHeight, Image.SCALE_AREA_AVERAGING));
        JButton smallBtn = new JButton(icon);
        scroll.setCorner(ScrollPaneConstants.LOWER_RIGHT_CORNER, smallBtn);
        this.add(scroll);
    }

    public static void main(String[] args) 
    {
        CornerButton mainFrame = new CornerButton();

        mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        mainFrame.setVisible(true);
        mainFrame.setSize(200,200);
    }
}

它看起来也很不错。

答案 1 :(得分:0)

您可以尝试增加JScrollBars的宽度,以便按钮有更多空间可以显示。例如:

scroll.getVerticalScrollBar().setPreferredSize(new Dimension(30, 30));
scroll.getHorizontalScrollBar().setPreferredSize(new Dimension(30, 30));