小编Gre*_*eck的帖子

将getResource与ProGuard一起使用会导致null结果

在我的jar文件上使用ProGuard打破了我的电话class.getResource("").我已经看到在ProGuard手册中你需要指定-keepdirectories mypackage(手动链接).但是,我已经指定了该-keepdirectories选项,它似乎没有起作用.我认为我的ProGuard配置有问题.我也看过这个相关的问题,但是我也无法-keeppackagenames正常工作.

在我的代码中,我有类似于以下内容.

package com.example.mypackage;
public class MyClass{
    public static void main(String [] args){
        //url is always returned as null
        URL url = MyClass.class.getResource("");
        //do additional stuff including retrieving manifest file
    }
}
Run Code Online (Sandbox Code Playgroud)

ProGuard配置

-injars ...
-outjars ...
-libraryjars ...

-dontoptimize
-keepattributes SourceFile,LineNumber,Table,LocalVariable*Table,*Annotation*
-renamesourcefileattribute SourceFile

-repackageclasses
-overloadaggressively

-keep public class com.example.mypackage.MyClass{
    public static void main(java.lang.String[]);
}
-keepdirectories com.example.mypackage,com.example.mypackage.MyClass
-keeppackagenames com.example.mypackage,com.example.mypackage.MyClass
Run Code Online (Sandbox Code Playgroud)

java proguard

6
推荐指数
1
解决办法
1133
查看次数

Java Swing - 应用排序后,Nimbus L&F会覆盖JTable标头中的自定义图标

我正在尝试创建一个自定义单元格渲染器,它将在JTable的标题单元格中显示图像.我已经获得了使用Metal L&F的源代码,但我遇到了Nimbus的问题.在正常情况下,Nimbus显示图像就好了.但是,当表格排序时,Nimbus将绘制排序图标而不是我指定的图标.这与Metal L&F不同,因为它总是绘制我提供的图标.

示例图像显示Nimbus L&F与Metal L&F的错误

有没有人知道有一种方法让Nimbus绘制图像,即使列是排序的?

我正在使用Java 6.29和Nimbus.我不能改变Java版本或L&F.

此外,我尝试做一些其他的解决方法,比如更改标签以使用HTML和img标签来显示图像,但这会产生奇怪的视觉效果.编辑文本和图像没有很好地对齐(即使img标签上有HTML对齐标签)这是一张图片,请注意Temp Hi列中的文本如何不对齐:

具有HMTL和img标签的解决方案的示例图像

import java.awt.Component;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableCellRenderer;


public class ImageChangeDemo extends JFrame {
    public static void main(String args[]) {
        //comment out the code below to try in Metal L&F
        try {
            for(javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.
                    getInstalledLookAndFeels()) {
                if("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        }
        catch(Exception ex) {
            ex.printStackTrace();
        }

        java.awt.EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                new ImageChangeDemo().setVisible(true);
            }
        });
    }

    public …
Run Code Online (Sandbox Code Playgroud)

java swing jtable look-and-feel nimbus

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

标签 统计

java ×2

jtable ×1

look-and-feel ×1

nimbus ×1

proguard ×1

swing ×1