首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java swing + UI比例

Java swing + UI比例
EN

Stack Overflow用户
提问于 2018-07-30 05:30:44
回答 1查看 5.2K关注 0票数 1

我需要创建一个具有接口缩放的应用程序。我有一个按钮内有图标和jpanel,它持有这个按钮。问题是,当缩放是-一个图标是模糊的,为了解决这个问题,我在paintComponent中使用降尺度。因此,当系统规模开始时,我就有了正常的形象。但JPanel的规模仍然很大。我也尝试过重写JPanel paintComponent,但结果是我的按钮太小了,因为按钮上的向下缩放和JPanel上的donwscale一起工作。我不能只使用从JPanel缩放,当我点击一个按钮,它采取一个缩放的大小和图像再次模糊。这是一个简单的例子。

守则是:

代码语言:javascript
复制
public class Test{

public static void main(String[] args) throws Exception{

    System.setProperty("sun.java2d.uiScale", "1.5");
    JFrame j = new JFrame();
    Image img = ImageIO.read(new File("D:\\1.png"));
    j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    j.setPreferredSize(new Dimension(300, 150));
    j.setVisible(true);
    j.setLocationRelativeTo(null);
    j.setLayout(new BorderLayout());

    img = img.getScaledInstance((int) (60 * 1.5),(int) (60 * 1.5),Image.SCALE_DEFAULT);

    JToggleButton tb = new JToggleButton(){
        @Override
        protected void paintComponent(Graphics g) {

            Graphics2D g2 = (Graphics2D) g;
            g2.scale(0.67,0.67);
            super.paintComponent(g2);
        }
    };
    tb.setIcon(new ImageIcon(img));

    JToggleButton tb2 = new JToggleButton(){
        @Override
        protected void paintComponent(Graphics g) {

            Graphics2D g2 = (Graphics2D) g;
            g2.scale(0.67,0.67);
            super.paintComponent(g2);
        }
    };
    tb2.setIcon(new ImageIcon(img));


    JPanel jPanel = new JPanel(){

    };
    jPanel.setLayout(new GridLayout(1,1));
    jPanel.add(tb);
    jPanel.setBackground(Color.RED);



    JPanel content = new JPanel();
    content.setLayout(new FlowLayout());
    content.add(jPanel);

    j.setContentPane(content);
    j.pack();
}

}我使用java10。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-06 10:43:27

您呈现的UI的缩放因子为1.5:所有UI,包括图标和图像都被缩放,以便它在高DPI显示器上正确显示。如果图像不缩放,对于较高的DPI设置来说,它太小了。

如果您的应用程序支持高DPI显示,即UI缩放,您应该提供不同分辨率的图像。参见Java9中的MultiResolutionImage

您可以在这个答案中找到相关问题的示例代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51587495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档