在我的Java小程序中,我有一些带有几个radioButtons的JDialog。
问题是此applet的尺寸为700x300,而JDialog则显示在屏幕中央。我希望这个JDialog出现在JApplet布局的中心。我的构造函数调用如下所示:
final JDialog dialog = new JDialog(
SwingUtilities.windowForComponent(GUIComponentContainer.getInstance().getDocumentTable()),
I18nCommonsImpl.constants.selectCertificate(), ModalityType.APPLICATION_MODAL);
此方法:
GUIComponentContainer.getInstance().getDocumentTable()
返回JTable组件,它是我的JApplet的子组件。
我还使用了JDialog“setLocationRelativeTo”方法:
dialog.setLocationRelativeTo(GUIComponentContainer.getInstance().getApplet());
这些似乎都不起作用。有没有其他方法可以实现我的目标? 我在SO上搜索了类似的问题,但没有看到任何有效的解决方案。
提前致谢。
答案 0 :(得分:2)
让applet的窗口适合我,至少在Eclipse中启动applet时。例如:
import java.awt.Dimension;
import java.awt.Window;
import java.awt.Dialog.ModalityType;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.Box;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
@SuppressWarnings("serial")
public class AppletCentering extends JApplet {
@Override
public void init() {
final JPanel panel = new JPanel();
panel.add(new JButton(new AbstractAction("Press Me") {
@Override
public void actionPerformed(ActionEvent e) {
Window win = SwingUtilities.getWindowAncestor(panel);
System.out.println("win class: " + win.getClass().getCanonicalName());
JDialog dialog = new JDialog(win, "My Dialog", ModalityType.APPLICATION_MODAL);
dialog.add(Box.createRigidArea(new Dimension(200, 200)));
dialog.pack();
dialog.setLocationRelativeTo(win);
dialog.setVisible(true);
}
}));
add(panel);
}
}
但是说了这句话之后,你的问题就引出了一个问题:你为什么要为applet编码?这些已经多年没有受到青睐,最近又失去了甲骨文的支持,后者决定最终放弃applet浏览器支持。