Review ID: JI-9016178) - [IcedTea]Autosize dialog pack() seems to be buggy on Linux
Done ;) On Thu, Oct 30, 2014 at 1:15 AM, Alexander Scherbatiy < [email protected]> wrote: > On 10/29/2014 3:22 PM, helpcrypto helpcrypto wrote: > >> AFAICT it only happens on icedtea >> >> Do you want me to report it at oracle anyway? >> > > Yes. You can start the summary with the [IcedTea] prefix. > > Thanks, > Alexandr. > >> >> Regards. >> >> >> On Wed, Oct 29, 2014 at 10:33 PM, Alexander Scherbatiy < >> [email protected] <mailto:[email protected]>> >> wrote: >> >> >> Hi, >> >> Could you create an issue on it: http://bugreport.java.com/ >> bugreport >> >> Thanks, >> Alexandr. >> >> On 10/27/2014 5:06 PM, helpcrypto helpcrypto wrote: >> >> Hi. >> >> >> I'm usually at icedtea web maillist, but this bug seems to be >> 100% swing-related. >> >> I'm trying to display a dialog, centered on screen, which size >> is fitted to changing contents. >> AFAIK, this should be done using pack(). >> >> >> Running the "attached testcase", I have noticed two things: >> >> - After each pack, as the BorderLayoutseem to be >> center-resized, the window moves down after each click (but >> pack always seem to work). IMHO this is not a friendly >> behaviour, but can be solved adding a >> setLocationRelativeToafter pack >> - If I add a setLocationRelativeTo(as shown below) pack fails >> from time to time and incorrectly sizes the dialog. >> >> Can you guys help me? >> Registered this bug a few weeks ago: >> http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=1798 >> >> >> package testcase; >> import java.awt.BorderLayout; >> import java.awt.event.ActionEvent; >> import java.awt.event.ActionListener; >> import java.lang.reflect.InvocationTargetException; >> import java.util.logging.Level; >> import java.util.logging.Logger; >> import javax.swing.*; >> import javax.swing.border.EmptyBorder; >> public class Testcase extends JDialog { >> private JPanel panel; >> private JLabel label; >> private JButton foo; >> private JButton bar; >> public Testcase() { >> setTitle("Test"); >> setModal(true); >> setResizable(false); >> setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); >> foo = new JButton(); >> foo.setText("foo"); >> foo.addActionListener(new ActionListener() { >> @Override >> public void actionPerformed(ActionEvent e) { >> foo(); >> } >> }); >> foo.setVisible(true); >> bar = new JButton(); >> bar.setText("bar"); >> bar.addActionListener(new ActionListener() { >> @Override >> public void actionPerformed(ActionEvent e) { >> bar(); >> } >> }); >> bar.setVisible(true); >> label = new JLabel(); >> label.setBorder(new EmptyBorder(10, 10, 10, 10)); >> label.setText("a"); >> panel = new JPanel(); >> panel.setLayout(new BorderLayout()); >> panel.setVisible(true); >> panel.setBorder(new EmptyBorder(10, 10, 10, 10)); >> panel.add(foo, BorderLayout.NORTH); >> panel.add(label, BorderLayout.CENTER); >> panel.add(bar, BorderLayout.SOUTH); >> getContentPane().add(panel); >> pack(); >> //validate(); >> //repaint(); >> setLocationRelativeTo(null); >> } >> public void foo(){ >> label.setText("<html>"+ >> "foofoofoofoofoofoofoofoofoofoo >> foofoofoofoofoofoofoofoofoofoofoofoofoofoofoo"+ >> "<br/>"+ >> "foofoofoofoofoofoofoofoofoofoo >> foofoofoofoofoofoofoofoofoofoofoofoofoofoofoo"+ >> "<br/>"+ >> "foofoofoofoofoofoofoofoofoofoo >> foofoofoofoofoofoofoofoofoofoofoofoofoofoofoo"+ >> "<br/>"+ >> "foofoofoofoofoofoofoofoofoofoo >> foofoofoofoofoofoofoofoofoofoofoofoofoofoofoo"+ >> "<br/>"+ >> "foofoofoofoofoofoofoofoofoofoo >> foofoofoofoofoofoofoofoofoofoofoofoofoofoofoo"+ >> "</html>"); >> pack(); >> //validate(); >> //repaint(); >> setLocationRelativeTo(null); >> } >> public void bar(){ >> label.setText("<html>bar</html>"); >> pack(); >> //validate(); >> //repaint(); >> setLocationRelativeTo(null); >> } >> public static void main(String[] args) { >> try { >> SwingUtilities.invokeAndWait(new Runnable() { >> @Override >> public void run() { >> JDialog test= new Testcase(); >> test.setVisible(true); >> } >> }); >> } catch (InterruptedException | InvocationTargetException >> ex) { >> Logger.getLogger(Testcase. >> class.getName()).log(Level.SEVERE, >> null, >> ex); >> } >> } >> } >> >> >> >> >
