mirror of
https://github.com/JFormDesigner/FlatLaf.git
synced 2025-12-07 06:20:53 +03:00
fixed HiDPIUtils.paintAtScale1x(), which painted at wrong location if graphics is rotated, is scaled and x or y parameters are not zero (issue #646)
This commit is contained in:
@@ -37,6 +37,9 @@ FlatLaf Change Log
|
|||||||
- Tree: Fixed truncated node text and too small painted non-wide node background
|
- Tree: Fixed truncated node text and too small painted non-wide node background
|
||||||
if custom cell renderer sets icon, but not disabled icon, and tree is
|
if custom cell renderer sets icon, but not disabled icon, and tree is
|
||||||
disabled. (issue #640)
|
disabled. (issue #640)
|
||||||
|
- Fixed `HiDPIUtils.paintAtScale1x()`, which painted at wrong location if
|
||||||
|
graphics is rotated, is scaled and `x` or `y` parameters are not zero. (issue
|
||||||
|
#646)
|
||||||
|
|
||||||
|
|
||||||
## 3.0
|
## 3.0
|
||||||
|
|||||||
@@ -52,40 +52,47 @@ public class HiDPIUtils
|
|||||||
AffineTransform t = g.getTransform();
|
AffineTransform t = g.getTransform();
|
||||||
|
|
||||||
// get scale X/Y and shear X/Y
|
// get scale X/Y and shear X/Y
|
||||||
double scaleX = t.getScaleX();
|
final double scaleX = t.getScaleX();
|
||||||
double scaleY = t.getScaleY();
|
final double scaleY = t.getScaleY();
|
||||||
double shearX = t.getShearX();
|
final double shearX = t.getShearX();
|
||||||
double shearY = t.getShearY();
|
final double shearY = t.getShearY();
|
||||||
|
|
||||||
// check whether rotated
|
// check whether rotated
|
||||||
// (also check for negative scale X/Y because shear X/Y are zero for 180 degrees rotation)
|
// (also check for negative scale X/Y because shear X/Y are zero for 180 degrees rotation)
|
||||||
boolean rotated = (shearX != 0 || shearY != 0 || scaleX <= 0 || scaleY <= 0);
|
boolean rotated = (shearX != 0 || shearY != 0 || scaleX <= 0 || scaleY <= 0);
|
||||||
|
|
||||||
|
// calculate non rotated scale factors
|
||||||
|
final double realScaleX, realScaleY;
|
||||||
if( rotated ) {
|
if( rotated ) {
|
||||||
// resulting scale X/Y values are always positive
|
// resulting scale X/Y values are always positive
|
||||||
scaleX = Math.hypot( scaleX, shearX );
|
realScaleX = Math.hypot( scaleX, shearX );
|
||||||
scaleY = Math.hypot( scaleY, shearY );
|
realScaleY = Math.hypot( scaleY, shearY );
|
||||||
} else {
|
} else {
|
||||||
// make scale X/Y positive
|
// make scale X/Y positive
|
||||||
scaleX = Math.abs( scaleX );
|
realScaleX = Math.abs( scaleX );
|
||||||
scaleY = Math.abs( scaleY );
|
realScaleY = Math.abs( scaleY );
|
||||||
}
|
}
|
||||||
|
|
||||||
// check whether scaled
|
// check whether scaled
|
||||||
if( scaleX == 1 && scaleY == 1 ) {
|
if( realScaleX == 1 && realScaleY == 1 ) {
|
||||||
painter.paint( g, x, y, width, height, 1 );
|
painter.paint( g, x, y, width, height, 1 );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// calculate x and y (this is equal to t.translate( x, y ))
|
||||||
|
double px = (x * scaleX) + (y * shearX) + t.getTranslateX();
|
||||||
|
double py = (y * scaleY) + (x * shearY) + t.getTranslateY();
|
||||||
|
|
||||||
// scale rectangle
|
// scale rectangle
|
||||||
Rectangle2D.Double scaledRect = scale( scaleX, scaleY, t, x, y, width, height );
|
Rectangle2D.Double scaledRect = scale( realScaleX, realScaleY, px, py, width, height );
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// unscale to factor 1.0, keep rotation and move origin (to whole numbers)
|
// unscale to factor 1.0, keep rotation and move origin (to whole numbers)
|
||||||
AffineTransform t1x;
|
AffineTransform t1x;
|
||||||
if( rotated ) {
|
if( rotated ) {
|
||||||
t1x = new AffineTransform( t.getScaleX(), t.getShearY(), t.getShearX(), t.getScaleY(),
|
t1x = new AffineTransform( scaleX, shearY, shearX, scaleY,
|
||||||
Math.floor( scaledRect.x ), Math.floor( scaledRect.y ) );
|
Math.floor( scaledRect.x ), Math.floor( scaledRect.y ) );
|
||||||
t1x.scale( 1. / scaleX, 1. / scaleY );
|
t1x.scale( 1. / realScaleX, 1. / realScaleY );
|
||||||
} else
|
} else
|
||||||
t1x = new AffineTransform( 1, 0, 0, 1, Math.floor( scaledRect.x ), Math.floor( scaledRect.y ) );
|
t1x = new AffineTransform( 1, 0, 0, 1, Math.floor( scaledRect.x ), Math.floor( scaledRect.y ) );
|
||||||
g.setTransform( t1x );
|
g.setTransform( t1x );
|
||||||
@@ -94,7 +101,7 @@ public class HiDPIUtils
|
|||||||
int sheight = (int) scaledRect.height;
|
int sheight = (int) scaledRect.height;
|
||||||
|
|
||||||
// paint
|
// paint
|
||||||
painter.paint( g, 0, 0, swidth, sheight, scaleX );
|
painter.paint( g, 0, 0, swidth, sheight, realScaleX );
|
||||||
} finally {
|
} finally {
|
||||||
// restore original transform
|
// restore original transform
|
||||||
g.setTransform( t );
|
g.setTransform( t );
|
||||||
@@ -106,10 +113,7 @@ public class HiDPIUtils
|
|||||||
* sun.java2d.pipe.PixelToParallelogramConverter.fillRectangle(),
|
* sun.java2d.pipe.PixelToParallelogramConverter.fillRectangle(),
|
||||||
* which is used by Graphics.fillRect().
|
* which is used by Graphics.fillRect().
|
||||||
*/
|
*/
|
||||||
private static Rectangle2D.Double scale( double scaleX, double scaleY, AffineTransform t, int x, int y, int width, int height ) {
|
private static Rectangle2D.Double scale( double scaleX, double scaleY, double px, double py, int width, int height ) {
|
||||||
double px = (x * scaleX) + t.getTranslateX();
|
|
||||||
double py = (y * scaleY) + t.getTranslateY();
|
|
||||||
|
|
||||||
double newX = normalize( px );
|
double newX = normalize( px );
|
||||||
double newY = normalize( py );
|
double newY = normalize( py );
|
||||||
double newWidth = normalize( px + (width * scaleX) ) - newX;
|
double newWidth = normalize( px + (width * scaleX) ) - newX;
|
||||||
|
|||||||
@@ -40,10 +40,13 @@ public class FlatPaintingHiDPITest
|
|||||||
|
|
||||||
FlatPaintingHiDPITest() {
|
FlatPaintingHiDPITest() {
|
||||||
initComponents();
|
initComponents();
|
||||||
|
reset();
|
||||||
sliderChanged();
|
sliderChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sliderChanged() {
|
private void sliderChanged() {
|
||||||
|
painter.originX = originXSlider.getValue();
|
||||||
|
painter.originY = originYSlider.getValue();
|
||||||
painter.translateX = translateXSlider.getValue();
|
painter.translateX = translateXSlider.getValue();
|
||||||
painter.translateY = translateYSlider.getValue();
|
painter.translateY = translateYSlider.getValue();
|
||||||
painter.scaleX = scaleXSlider.getValue();
|
painter.scaleX = scaleXSlider.getValue();
|
||||||
@@ -78,15 +81,23 @@ public class FlatPaintingHiDPITest
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void reset() {
|
private void reset() {
|
||||||
|
AffineTransform t = getGraphicsConfiguration().getDefaultTransform();
|
||||||
|
|
||||||
|
originXSlider.setValue( 20 );
|
||||||
|
originYSlider.setValue( 10 );
|
||||||
translateXSlider.setValue( 100 );
|
translateXSlider.setValue( 100 );
|
||||||
translateYSlider.setValue( 100 );
|
translateYSlider.setValue( 100 );
|
||||||
scaleXSlider.setValue( 100 );
|
scaleXSlider.setValue( (int) (t.getScaleX() * 100) );
|
||||||
scaleYSlider.setValue( 100 );
|
scaleYSlider.setValue( (int) (t.getScaleY() * 100) );
|
||||||
rotateSlider.setValue( 0 );
|
rotateSlider.setValue( 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initComponents() {
|
private void initComponents() {
|
||||||
// JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents
|
// JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents
|
||||||
|
JLabel originXLabel = new JLabel();
|
||||||
|
originXSlider = new JSlider();
|
||||||
|
JLabel originYLabel = new JLabel();
|
||||||
|
originYSlider = new JSlider();
|
||||||
JLabel translateXLabel = new JLabel();
|
JLabel translateXLabel = new JLabel();
|
||||||
translateXSlider = new JSlider();
|
translateXSlider = new JSlider();
|
||||||
JLabel translateYLabel = new JLabel();
|
JLabel translateYLabel = new JLabel();
|
||||||
@@ -128,30 +139,58 @@ public class FlatPaintingHiDPITest
|
|||||||
"[400,fill]para" +
|
"[400,fill]para" +
|
||||||
"[grow,fill]",
|
"[grow,fill]",
|
||||||
// rows
|
// rows
|
||||||
"[fill]" +
|
"[]" +
|
||||||
|
"[]" +
|
||||||
|
"[]" +
|
||||||
"[]" +
|
"[]" +
|
||||||
"[]" +
|
"[]" +
|
||||||
"[]" +
|
"[]" +
|
||||||
"[]" +
|
"[]" +
|
||||||
"[grow]"));
|
"[grow]"));
|
||||||
|
|
||||||
|
//---- originXLabel ----
|
||||||
|
originXLabel.setText("OriginX:");
|
||||||
|
add(originXLabel, "cell 0 0");
|
||||||
|
|
||||||
|
//---- originXSlider ----
|
||||||
|
originXSlider.setMaximum(500);
|
||||||
|
originXSlider.setMajorTickSpacing(100);
|
||||||
|
originXSlider.setMinorTickSpacing(25);
|
||||||
|
originXSlider.setValue(20);
|
||||||
|
originXSlider.setPaintTicks(true);
|
||||||
|
originXSlider.addChangeListener(e -> sliderChanged());
|
||||||
|
add(originXSlider, "cell 1 0");
|
||||||
|
|
||||||
|
//---- originYLabel ----
|
||||||
|
originYLabel.setText("OriginY:");
|
||||||
|
add(originYLabel, "cell 0 1");
|
||||||
|
|
||||||
|
//---- originYSlider ----
|
||||||
|
originYSlider.setMaximum(500);
|
||||||
|
originYSlider.setPaintLabels(true);
|
||||||
|
originYSlider.setPaintTicks(true);
|
||||||
|
originYSlider.setMajorTickSpacing(100);
|
||||||
|
originYSlider.setMinorTickSpacing(25);
|
||||||
|
originYSlider.setValue(10);
|
||||||
|
originYSlider.addChangeListener(e -> sliderChanged());
|
||||||
|
add(originYSlider, "cell 1 1");
|
||||||
|
|
||||||
//---- translateXLabel ----
|
//---- translateXLabel ----
|
||||||
translateXLabel.setText("TranslateX:");
|
translateXLabel.setText("TranslateX:");
|
||||||
add(translateXLabel, "cell 0 0");
|
add(translateXLabel, "cell 0 2");
|
||||||
|
|
||||||
//---- translateXSlider ----
|
//---- translateXSlider ----
|
||||||
translateXSlider.setMaximum(500);
|
translateXSlider.setMaximum(500);
|
||||||
translateXSlider.setPaintLabels(true);
|
|
||||||
translateXSlider.setPaintTicks(true);
|
translateXSlider.setPaintTicks(true);
|
||||||
translateXSlider.setMajorTickSpacing(100);
|
translateXSlider.setMajorTickSpacing(100);
|
||||||
translateXSlider.setMinorTickSpacing(25);
|
translateXSlider.setMinorTickSpacing(25);
|
||||||
translateXSlider.setValue(100);
|
translateXSlider.setValue(100);
|
||||||
translateXSlider.addChangeListener(e -> sliderChanged());
|
translateXSlider.addChangeListener(e -> sliderChanged());
|
||||||
add(translateXSlider, "cell 1 0");
|
add(translateXSlider, "cell 1 2");
|
||||||
|
|
||||||
//---- translateYLabel ----
|
//---- translateYLabel ----
|
||||||
translateYLabel.setText("TranslateY:");
|
translateYLabel.setText("TranslateY:");
|
||||||
add(translateYLabel, "cell 0 1");
|
add(translateYLabel, "cell 0 3");
|
||||||
|
|
||||||
//---- translateYSlider ----
|
//---- translateYSlider ----
|
||||||
translateYSlider.setMaximum(500);
|
translateYSlider.setMaximum(500);
|
||||||
@@ -161,30 +200,29 @@ public class FlatPaintingHiDPITest
|
|||||||
translateYSlider.setMinorTickSpacing(25);
|
translateYSlider.setMinorTickSpacing(25);
|
||||||
translateYSlider.setValue(100);
|
translateYSlider.setValue(100);
|
||||||
translateYSlider.addChangeListener(e -> sliderChanged());
|
translateYSlider.addChangeListener(e -> sliderChanged());
|
||||||
add(translateYSlider, "cell 1 1");
|
add(translateYSlider, "cell 1 3");
|
||||||
|
|
||||||
//---- scaleXLabel ----
|
//---- scaleXLabel ----
|
||||||
scaleXLabel.setText("ScaleX:");
|
scaleXLabel.setText("ScaleX:");
|
||||||
add(scaleXLabel, "cell 0 2");
|
add(scaleXLabel, "cell 0 4");
|
||||||
|
|
||||||
//---- scaleXSlider ----
|
//---- scaleXSlider ----
|
||||||
scaleXSlider.setMaximum(300);
|
scaleXSlider.setMaximum(400);
|
||||||
scaleXSlider.setValue(100);
|
scaleXSlider.setValue(100);
|
||||||
scaleXSlider.setPaintTicks(true);
|
scaleXSlider.setPaintTicks(true);
|
||||||
scaleXSlider.setPaintLabels(true);
|
|
||||||
scaleXSlider.setMajorTickSpacing(50);
|
scaleXSlider.setMajorTickSpacing(50);
|
||||||
scaleXSlider.setSnapToTicks(true);
|
scaleXSlider.setSnapToTicks(true);
|
||||||
scaleXSlider.setMinorTickSpacing(10);
|
scaleXSlider.setMinorTickSpacing(10);
|
||||||
scaleXSlider.setMinimum(-100);
|
scaleXSlider.setMinimum(-100);
|
||||||
scaleXSlider.addChangeListener(e -> sliderChanged());
|
scaleXSlider.addChangeListener(e -> sliderChanged());
|
||||||
add(scaleXSlider, "cell 1 2");
|
add(scaleXSlider, "cell 1 4");
|
||||||
|
|
||||||
//---- scaleYLabel ----
|
//---- scaleYLabel ----
|
||||||
scaleYLabel.setText("ScaleY:");
|
scaleYLabel.setText("ScaleY:");
|
||||||
add(scaleYLabel, "cell 0 3");
|
add(scaleYLabel, "cell 0 5");
|
||||||
|
|
||||||
//---- scaleYSlider ----
|
//---- scaleYSlider ----
|
||||||
scaleYSlider.setMaximum(300);
|
scaleYSlider.setMaximum(400);
|
||||||
scaleYSlider.setValue(100);
|
scaleYSlider.setValue(100);
|
||||||
scaleYSlider.setPaintTicks(true);
|
scaleYSlider.setPaintTicks(true);
|
||||||
scaleYSlider.setPaintLabels(true);
|
scaleYSlider.setPaintLabels(true);
|
||||||
@@ -193,11 +231,11 @@ public class FlatPaintingHiDPITest
|
|||||||
scaleYSlider.setMinorTickSpacing(10);
|
scaleYSlider.setMinorTickSpacing(10);
|
||||||
scaleYSlider.setMinimum(-100);
|
scaleYSlider.setMinimum(-100);
|
||||||
scaleYSlider.addChangeListener(e -> sliderChanged());
|
scaleYSlider.addChangeListener(e -> sliderChanged());
|
||||||
add(scaleYSlider, "cell 1 3");
|
add(scaleYSlider, "cell 1 5");
|
||||||
|
|
||||||
//---- rotateLabel ----
|
//---- rotateLabel ----
|
||||||
rotateLabel.setText("Rotate:");
|
rotateLabel.setText("Rotate:");
|
||||||
add(rotateLabel, "cell 0 4");
|
add(rotateLabel, "cell 0 6");
|
||||||
|
|
||||||
//---- rotateSlider ----
|
//---- rotateSlider ----
|
||||||
rotateSlider.setMaximum(360);
|
rotateSlider.setMaximum(360);
|
||||||
@@ -207,7 +245,7 @@ public class FlatPaintingHiDPITest
|
|||||||
rotateSlider.setPaintLabels(true);
|
rotateSlider.setPaintLabels(true);
|
||||||
rotateSlider.setPaintTicks(true);
|
rotateSlider.setPaintTicks(true);
|
||||||
rotateSlider.addChangeListener(e -> sliderChanged());
|
rotateSlider.addChangeListener(e -> sliderChanged());
|
||||||
add(rotateSlider, "cell 1 4");
|
add(rotateSlider, "cell 1 6");
|
||||||
|
|
||||||
//======== panel1 ========
|
//======== panel1 ========
|
||||||
{
|
{
|
||||||
@@ -298,17 +336,19 @@ public class FlatPaintingHiDPITest
|
|||||||
cRotationDegreesLabel.setText("text");
|
cRotationDegreesLabel.setText("text");
|
||||||
panel1.add(cRotationDegreesLabel, "cell 1 6");
|
panel1.add(cRotationDegreesLabel, "cell 1 6");
|
||||||
}
|
}
|
||||||
add(panel1, "cell 2 0 1 4");
|
add(panel1, "cell 2 2 1 4,growy");
|
||||||
|
|
||||||
//---- resetButton ----
|
//---- resetButton ----
|
||||||
resetButton.setText("Reset");
|
resetButton.setText("Reset");
|
||||||
resetButton.addActionListener(e -> reset());
|
resetButton.addActionListener(e -> reset());
|
||||||
add(resetButton, "cell 2 4,align left bottom,grow 0 0");
|
add(resetButton, "cell 2 6,align left bottom,grow 0 0");
|
||||||
add(painter, "cell 0 5 3 1,grow,width 600,height 400");
|
add(painter, "cell 0 7 3 1,grow,width 600,height 400");
|
||||||
// JFormDesigner - End of component initialization //GEN-END:initComponents
|
// JFormDesigner - End of component initialization //GEN-END:initComponents
|
||||||
}
|
}
|
||||||
|
|
||||||
// JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables
|
// JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables
|
||||||
|
private JSlider originXSlider;
|
||||||
|
private JSlider originYSlider;
|
||||||
private JSlider translateXSlider;
|
private JSlider translateXSlider;
|
||||||
private JSlider translateYSlider;
|
private JSlider translateYSlider;
|
||||||
private JSlider scaleXSlider;
|
private JSlider scaleXSlider;
|
||||||
@@ -331,6 +371,8 @@ public class FlatPaintingHiDPITest
|
|||||||
public static class HiDPI1xPainter
|
public static class HiDPI1xPainter
|
||||||
extends JComponent
|
extends JComponent
|
||||||
{
|
{
|
||||||
|
int originX;
|
||||||
|
int originY;
|
||||||
int translateX;
|
int translateX;
|
||||||
int translateY;
|
int translateY;
|
||||||
int scaleX;
|
int scaleX;
|
||||||
@@ -361,10 +403,10 @@ public class FlatPaintingHiDPITest
|
|||||||
g2.rotate( Math.toRadians( rotate ) );
|
g2.rotate( Math.toRadians( rotate ) );
|
||||||
|
|
||||||
g2.setColor( Color.red );
|
g2.setColor( Color.red );
|
||||||
g2.fillRect( 0, 0, 100, 50 );
|
g2.fillRect( originX, originY, 100, 50 );
|
||||||
|
|
||||||
g2.setColor( Color.green );
|
g2.setColor( Color.green );
|
||||||
HiDPIUtils.paintAtScale1x( g2, 0, 0, 100, 50,
|
HiDPIUtils.paintAtScale1x( g2, originX, originY, 100, 50,
|
||||||
(g2d, x2, y2, width2, height2, scaleFactor) -> {
|
(g2d, x2, y2, width2, height2, scaleFactor) -> {
|
||||||
g2d.fillRect( x2 + 10, y2 + 10, width2 - 20, height2 - 20 );
|
g2d.fillRect( x2 + 10, y2 + 10, width2 - 20, height2 - 20 );
|
||||||
} );
|
} );
|
||||||
|
|||||||
@@ -9,36 +9,76 @@ new FormModel {
|
|||||||
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
|
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
|
||||||
"$layoutConstraints": "hidemode 3"
|
"$layoutConstraints": "hidemode 3"
|
||||||
"$columnConstraints": "[fill][400,fill]para[grow,fill]"
|
"$columnConstraints": "[fill][400,fill]para[grow,fill]"
|
||||||
"$rowConstraints": "[fill][][][][][grow]"
|
"$rowConstraints": "[][][][][][][][grow]"
|
||||||
} ) {
|
} ) {
|
||||||
name: "this"
|
name: "this"
|
||||||
"border": sfield com.jformdesigner.model.FormObject NULL_VALUE
|
"border": sfield com.jformdesigner.model.FormObject NULL_VALUE
|
||||||
add( new FormComponent( "javax.swing.JLabel" ) {
|
add( new FormComponent( "javax.swing.JLabel" ) {
|
||||||
name: "translateXLabel"
|
name: "originXLabel"
|
||||||
"text": "TranslateX:"
|
"text": "OriginX:"
|
||||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
"value": "cell 0 0"
|
"value": "cell 0 0"
|
||||||
} )
|
} )
|
||||||
add( new FormComponent( "javax.swing.JSlider" ) {
|
add( new FormComponent( "javax.swing.JSlider" ) {
|
||||||
name: "translateXSlider"
|
name: "originXSlider"
|
||||||
|
"maximum": 500
|
||||||
|
"majorTickSpacing": 100
|
||||||
|
"minorTickSpacing": 25
|
||||||
|
"value": 20
|
||||||
|
"paintTicks": true
|
||||||
|
auxiliary() {
|
||||||
|
"JavaCodeGenerator.variableLocal": false
|
||||||
|
}
|
||||||
|
addEvent( new FormEvent( "javax.swing.event.ChangeListener", "stateChanged", "sliderChanged", false ) )
|
||||||
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
|
"value": "cell 1 0"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JLabel" ) {
|
||||||
|
name: "originYLabel"
|
||||||
|
"text": "OriginY:"
|
||||||
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
|
"value": "cell 0 1"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JSlider" ) {
|
||||||
|
name: "originYSlider"
|
||||||
"maximum": 500
|
"maximum": 500
|
||||||
"paintLabels": true
|
"paintLabels": true
|
||||||
"paintTicks": true
|
"paintTicks": true
|
||||||
"majorTickSpacing": 100
|
"majorTickSpacing": 100
|
||||||
"minorTickSpacing": 25
|
"minorTickSpacing": 25
|
||||||
|
"value": 10
|
||||||
|
auxiliary() {
|
||||||
|
"JavaCodeGenerator.variableLocal": false
|
||||||
|
}
|
||||||
|
addEvent( new FormEvent( "javax.swing.event.ChangeListener", "stateChanged", "sliderChanged", false ) )
|
||||||
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
|
"value": "cell 1 1"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JLabel" ) {
|
||||||
|
name: "translateXLabel"
|
||||||
|
"text": "TranslateX:"
|
||||||
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
|
"value": "cell 0 2"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JSlider" ) {
|
||||||
|
name: "translateXSlider"
|
||||||
|
"maximum": 500
|
||||||
|
"paintTicks": true
|
||||||
|
"majorTickSpacing": 100
|
||||||
|
"minorTickSpacing": 25
|
||||||
"value": 100
|
"value": 100
|
||||||
auxiliary() {
|
auxiliary() {
|
||||||
"JavaCodeGenerator.variableLocal": false
|
"JavaCodeGenerator.variableLocal": false
|
||||||
}
|
}
|
||||||
addEvent( new FormEvent( "javax.swing.event.ChangeListener", "stateChanged", "sliderChanged", false ) )
|
addEvent( new FormEvent( "javax.swing.event.ChangeListener", "stateChanged", "sliderChanged", false ) )
|
||||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
"value": "cell 1 0"
|
"value": "cell 1 2"
|
||||||
} )
|
} )
|
||||||
add( new FormComponent( "javax.swing.JLabel" ) {
|
add( new FormComponent( "javax.swing.JLabel" ) {
|
||||||
name: "translateYLabel"
|
name: "translateYLabel"
|
||||||
"text": "TranslateY:"
|
"text": "TranslateY:"
|
||||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
"value": "cell 0 1"
|
"value": "cell 0 3"
|
||||||
} )
|
} )
|
||||||
add( new FormComponent( "javax.swing.JSlider" ) {
|
add( new FormComponent( "javax.swing.JSlider" ) {
|
||||||
name: "translateYSlider"
|
name: "translateYSlider"
|
||||||
@@ -53,20 +93,19 @@ new FormModel {
|
|||||||
}
|
}
|
||||||
addEvent( new FormEvent( "javax.swing.event.ChangeListener", "stateChanged", "sliderChanged", false ) )
|
addEvent( new FormEvent( "javax.swing.event.ChangeListener", "stateChanged", "sliderChanged", false ) )
|
||||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
"value": "cell 1 1"
|
"value": "cell 1 3"
|
||||||
} )
|
} )
|
||||||
add( new FormComponent( "javax.swing.JLabel" ) {
|
add( new FormComponent( "javax.swing.JLabel" ) {
|
||||||
name: "scaleXLabel"
|
name: "scaleXLabel"
|
||||||
"text": "ScaleX:"
|
"text": "ScaleX:"
|
||||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
"value": "cell 0 2"
|
"value": "cell 0 4"
|
||||||
} )
|
} )
|
||||||
add( new FormComponent( "javax.swing.JSlider" ) {
|
add( new FormComponent( "javax.swing.JSlider" ) {
|
||||||
name: "scaleXSlider"
|
name: "scaleXSlider"
|
||||||
"maximum": 300
|
"maximum": 400
|
||||||
"value": 100
|
"value": 100
|
||||||
"paintTicks": true
|
"paintTicks": true
|
||||||
"paintLabels": true
|
|
||||||
"majorTickSpacing": 50
|
"majorTickSpacing": 50
|
||||||
"snapToTicks": true
|
"snapToTicks": true
|
||||||
"minorTickSpacing": 10
|
"minorTickSpacing": 10
|
||||||
@@ -76,17 +115,17 @@ new FormModel {
|
|||||||
}
|
}
|
||||||
addEvent( new FormEvent( "javax.swing.event.ChangeListener", "stateChanged", "sliderChanged", false ) )
|
addEvent( new FormEvent( "javax.swing.event.ChangeListener", "stateChanged", "sliderChanged", false ) )
|
||||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
"value": "cell 1 2"
|
"value": "cell 1 4"
|
||||||
} )
|
} )
|
||||||
add( new FormComponent( "javax.swing.JLabel" ) {
|
add( new FormComponent( "javax.swing.JLabel" ) {
|
||||||
name: "scaleYLabel"
|
name: "scaleYLabel"
|
||||||
"text": "ScaleY:"
|
"text": "ScaleY:"
|
||||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
"value": "cell 0 3"
|
"value": "cell 0 5"
|
||||||
} )
|
} )
|
||||||
add( new FormComponent( "javax.swing.JSlider" ) {
|
add( new FormComponent( "javax.swing.JSlider" ) {
|
||||||
name: "scaleYSlider"
|
name: "scaleYSlider"
|
||||||
"maximum": 300
|
"maximum": 400
|
||||||
"value": 100
|
"value": 100
|
||||||
"paintTicks": true
|
"paintTicks": true
|
||||||
"paintLabels": true
|
"paintLabels": true
|
||||||
@@ -99,13 +138,13 @@ new FormModel {
|
|||||||
}
|
}
|
||||||
addEvent( new FormEvent( "javax.swing.event.ChangeListener", "stateChanged", "sliderChanged", false ) )
|
addEvent( new FormEvent( "javax.swing.event.ChangeListener", "stateChanged", "sliderChanged", false ) )
|
||||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
"value": "cell 1 3"
|
"value": "cell 1 5"
|
||||||
} )
|
} )
|
||||||
add( new FormComponent( "javax.swing.JLabel" ) {
|
add( new FormComponent( "javax.swing.JLabel" ) {
|
||||||
name: "rotateLabel"
|
name: "rotateLabel"
|
||||||
"text": "Rotate:"
|
"text": "Rotate:"
|
||||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
"value": "cell 0 4"
|
"value": "cell 0 6"
|
||||||
} )
|
} )
|
||||||
add( new FormComponent( "javax.swing.JSlider" ) {
|
add( new FormComponent( "javax.swing.JSlider" ) {
|
||||||
name: "rotateSlider"
|
name: "rotateSlider"
|
||||||
@@ -120,7 +159,7 @@ new FormModel {
|
|||||||
}
|
}
|
||||||
addEvent( new FormEvent( "javax.swing.event.ChangeListener", "stateChanged", "sliderChanged", false ) )
|
addEvent( new FormEvent( "javax.swing.event.ChangeListener", "stateChanged", "sliderChanged", false ) )
|
||||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
"value": "cell 1 4"
|
"value": "cell 1 6"
|
||||||
} )
|
} )
|
||||||
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
|
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
|
||||||
"$layoutConstraints": "hidemode 3"
|
"$layoutConstraints": "hidemode 3"
|
||||||
@@ -264,14 +303,14 @@ new FormModel {
|
|||||||
"value": "cell 1 6"
|
"value": "cell 1 6"
|
||||||
} )
|
} )
|
||||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
"value": "cell 2 0 1 4"
|
"value": "cell 2 2 1 4,growy"
|
||||||
} )
|
} )
|
||||||
add( new FormComponent( "javax.swing.JButton" ) {
|
add( new FormComponent( "javax.swing.JButton" ) {
|
||||||
name: "resetButton"
|
name: "resetButton"
|
||||||
"text": "Reset"
|
"text": "Reset"
|
||||||
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "reset", false ) )
|
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "reset", false ) )
|
||||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
"value": "cell 2 4,align left bottom,grow 0 0"
|
"value": "cell 2 6,align left bottom,grow 0 0"
|
||||||
} )
|
} )
|
||||||
add( new FormComponent( "com.formdev.flatlaf.testing.FlatPaintingHiDPITest$HiDPI1xPainter" ) {
|
add( new FormComponent( "com.formdev.flatlaf.testing.FlatPaintingHiDPITest$HiDPI1xPainter" ) {
|
||||||
name: "painter"
|
name: "painter"
|
||||||
@@ -279,11 +318,11 @@ new FormModel {
|
|||||||
"JavaCodeGenerator.variableLocal": false
|
"JavaCodeGenerator.variableLocal": false
|
||||||
}
|
}
|
||||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
"value": "cell 0 5 3 1,grow,width 600,height 400"
|
"value": "cell 0 7 3 1,grow,width 600,height 400"
|
||||||
} )
|
} )
|
||||||
}, new FormLayoutConstraints( null ) {
|
}, new FormLayoutConstraints( null ) {
|
||||||
"location": new java.awt.Point( 0, 0 )
|
"location": new java.awt.Point( 0, 0 )
|
||||||
"size": new java.awt.Dimension( 685, 680 )
|
"size": new java.awt.Dimension( 840, 680 )
|
||||||
} )
|
} )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user