我想将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的论坛上发布了相同的问题,但没有人回答,希望我从这里找到一些帮助:)
提前感谢。
答案 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));