根据条件更改JSlider的最小值和最大值

时间:2012-10-09 19:34:36

标签: java swing user-interface jslider affinetransform

我正在Netbeans中创建一个Swing GUI。此GUI的目的是打开(缓冲)图像(在JLabel中作为图标)并在其上应用仿射变换。现在有4个转换我正在做如下。

enter image description here

现在,每个变换需要两个滑块才能更改X和Y值,但旋转除外,这只需要一个。我这样做是因为它比为所有4种类型的变换做四个选项卡要好得多。另外我希望它是这样的,例如,如果旋转图像,可以通过从下拉列表中选择剪切来剪切相同的旋转图像。

问题是(是): 如何重新绘制标签图标并对同一重新绘制的图像应用不同的变换? 另外,如何在所选效果上更改JSlider depanding的最小值和最大值?

2 个答案:

答案 0 :(得分:7)

你应该存储最初加载的BufferedImage,并创建它的副本 - 这样你就不会“破坏”它。

对于更改值,有方法setMaximum和setMinimum - 将监听器添加到列表,如Oracle tutorial中所述并修改值。

答案 1 :(得分:4)

作为@ Daniel答案的具体示例,文章Image processing with Java 2D描述了程序ImageDicer。它构造了一个TreeMap<String, BufferedImageOp>,每个JComboBox可以从BufferedImage中选择并应用于{{1}}。

另请参阅相关示例herehere