Hi Andrej, I executed the below test code. Didn’t find any inconsistent behavior before and after the fix. Can you give little brief description on the issues, which this fix may give rise to.
Regards, Prem I -----Original Message----- From: Andrej Golovnin [mailto:andrej.golov...@gmail.com] Sent: Thursday, January 21, 2016 1:21 PM To: Prem Balakrishnan Cc: Sergey Bylokhov; Alexander Scherbatiy; Ambarish Rapte; Rajeev Chamyal; swing-dev@openjdk.java.net Subject: Re: <Swing Dev> Review Request for Bug 8146320 JTextField ignores setPreferredSize when having columns Hi all, as a long time Swing developer I want to vote against this change. This change may break the layout of existing applications and make them unusable. This code exists for very long time. And it should stay as is. The only change that you should make is to document the current behaviour. Please run the following application to see what this change may cause: import java.awt.Dimension; import java.awt.EventQueue; import javax.swing.BoxLayout; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.WindowConstants; import javax.swing.border.EmptyBorder; /** * @author Andrej Golovnin */ public class Main { public static void main(String... argv) { EventQueue.invokeLater(Main::createAndShowUI); } private static void createAndShowUI() { JTextField jdk8 = new JTextField(10); jdk8.setPreferredSize(new Dimension(10, 20)); JTextField jdk9 = new JDK9TextField(10); jdk9.setPreferredSize(new Dimension(10, 20)); JPanel content = new JPanel(); content.setBorder(new EmptyBorder(10, 10, 10 , 10)); BoxLayout layout = new BoxLayout(content, BoxLayout.X_AXIS); content.setLayout(layout); content.add(jdk8); content.add(jdk9); JFrame frame = new JFrame("Bug 8146320"); frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); frame.setContentPane(content); frame.pack(); frame.setVisible(true); } static class JDK9TextField extends JTextField { private Dimension prefSize; JDK9TextField(int columns) { super(columns); } @Override public Dimension getPreferredSize() { if (isPreferredSizeSet()) { return prefSize; } return super.getPreferredSize(); } @Override public void setPreferredSize(Dimension preferredSize) { super.setPreferredSize(preferredSize); this.prefSize = preferredSize; } } } Best regards, Andrej Golovnin