小编Lun*_*box的帖子

Windows 8扭曲了我的TrayIcon

Windows 8似乎使托盘图标为20 x 20像素.似乎Java仍然认为它们应该是16 x 16像素.这会导致一些不良的失真,因为Java会缩小范围,然后Windows会重新调整内容.以下示例使用这三个图像创建三个托盘图标,如下所示(注意失真):

20x20绿色图标 20x20红色图标 16x16蓝色图标

结果托盘.

import java.awt.Image;
import java.awt.SystemTray;
import java.awt.Toolkit;
import java.awt.TrayIcon;

public class TrayTest
{
    public static void main(String[] args) throws Exception
    {
        final SystemTray tray = SystemTray.getSystemTray();

        TrayIcon trayIcon16 = new TrayIcon(getImage("16pxBlue.png"));
        tray.add(trayIcon16);

        TrayIcon trayIcon20 = new TrayIcon(getImage("20pxRed.png"));
        tray.add(trayIcon20);

        TrayIcon trayIcon20autoSize = new TrayIcon(getImage("20pxGreen.png"));
        trayIcon20autoSize.setImageAutoSize(true);
        tray.add(trayIcon20autoSize);
    }

    public static Image getImage(String resource)
    {
        return Toolkit.getDefaultToolkit().createImage(TrayTest.class.getResource(resource));
    }
}
Run Code Online (Sandbox Code Playgroud)

这就是整个事物看起来像放大了像素线放大(在新标签中打开图像会给你一个更清晰的视图):

在此输入图像描述

我的问题: 如何防止Java/Windows 8扭曲我的图标?

java windows trayicon

10
推荐指数
1
解决办法
510
查看次数

JavaFX 图表 - 类别Aixis 调整大小问题

我有一个用户可调整大小的图表。当图表变小时,CategoryAxis 会旋转,您将无法再看到大多数类别标签。这是显示问题的 gif:

问题示例

有什么办法可以阻止标签旋转吗?

我知道我可以向旋转属性添加一个侦听器,并在旋转发生变化时将其旋转回 0。但是,当我这样做时,它不会阻止间距调整,因此标签会被切断(您只能看到标签的最后几个字符)。

这是包含的 gif 的代码,当您调整窗口大小时您会看到问题:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.chart.BarChart;
import javafx.scene.chart.CategoryAxis;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.XYChart;
import javafx.stage.Stage;

public class HorizontalBarExample extends Application {
    @Override
    public void start(Stage stage)  {
        NumberAxis xAxis = new NumberAxis();
        CategoryAxis yAxis = new CategoryAxis();
        BarChart<Number, String> bc = new BarChart<Number, String>(xAxis, yAxis);
        bc.setBarGap(0d);
        bc.setCategoryGap(0);

        xAxis.setTickLabelRotation(90);
        yAxis.tickLabelRotationProperty().set(0d);

        XYChart.Series<Number, String> series1 = new XYChart.Series<>();
        series1.setName("example");

        for (int i = 0; i < 10; i++)
            series1.getData().add(new XYChart.Data<Number, String>(Math.random() * 5000, "long data …
Run Code Online (Sandbox Code Playgroud)

charts javafx-8

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

标签 统计

charts ×1

java ×1

javafx-8 ×1

trayicon ×1

windows ×1