JFrame 置中有二種方法:
  1. 方法一 setSize(800, 600); setLocationRelativeTo(null);
  2. 方法二 Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); setSize(800, 600); setLocation((d.width-getWidth())/2, (d.height-getHeight())/2);
JDialog 置中有二種狀況:
  1. 狀況一:從外面設定 JDialog dialog = new JDialog(); dialog.setSize(300, 200); dialog.setLocationRelativeTo(frame);
  2. 方法二:從裏面設定 new DialogTest(SwingUtilities.getWindowAncestor(c)).setVisible(true); public class DialogTest extends JDialog { public DialogTest() { this(null); } public DialogTest(Window owner) { super(owner); this.setSize(300, 200); this.setLocationRelativeTo(this.getParent()); } }
JOptionPane 置中只有一種方法,也就是設定 parentComponent 即可,以下是 trace code 的結果。可以發現最終要呼叫 setLocationRelativeTo 函數來設定位置,所以一定要設定 parentComponent,否則永遠都是置中在營幕中間。 public static int showOptionDialog(Component parentComponent, Object message, String title, int optionType, int messageType, Icon icon, Object[] options, Object initialValue) throws HeadlessException { ...... JDialog dialog = pane.createDialog(parentComponent, title, style); ...... } ↓↓↓↓↓↓ private JDialog createDialog(Component parentComponent, String title, int style) { ...... initDialog(dialog, style, parentComponent); ...... } ↓↓↓↓↓↓ private void initDialog(final JDialog dialog, int style, Component parentComponent) { ...... dialog.setLocationRelativeTo(parentComponent); ...... }

透過 jnlp 執行範例程式

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()