如何在*屏幕上放置表格?
我是一个.Net开发人员,但不知何故,我的任务是在java中创建一个简单的应用程序,以解决某些额外的原因。我能够创建该应用程序,但我的问题是如何在应用程序启动时将屏幕居中显示在屏幕上?如何在*屏幕上放置表格?
这里是我的代码:
private void formWindowActivated(java.awt.event.WindowEvent evt)
{
// Get the size of the screen
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
// Determine the new location of the window
int w = this.getSize().width;
int h = this.getSize().height;
int x = (dim.width-w)/2;
int y = (dim.height-h)/2;
// Move the window
this.setLocation(x, y);
}
上面的代码工作正常,但问题是我见过的形式从左上最移到屏幕*。我还尝试在formWindowOpened
事件中添加该代码,并仍显示相同的操作。有没有更好的方法呢?就像在.NET Application
那里有一个CenterScreen Position
。或者,如果上面的代码是正确的,我会在什么事件?
感谢您阅读本文。
在JFrame上调用pack之后,只需将位置设置为null,就是这样。
例如,
JFrame frame = new JFrame("FooRendererTest");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(mainPanel); // or whatever...
frame.pack();
frame.setLocationRelativeTo(null); // *** this will center your app ***
frame.setVisible(true);
先生,如果你介意,我会在哪里放这个代码?对不起,如果我问这个没有道理的东西,因为我对环境不是很熟悉。 – 2012-03-03 04:10:30
@johntotetwoo把它放在你初始化JFrame的地方。你用什么IDE?你是否让IDE为你自动创建窗口?如果是这样,找到JFrame的初始化(新的Jframe)... – dpp 2012-03-03 04:13:14
我使用NetBeans 7.1先生。我会检查初始化代码。 – 2012-03-03 04:15:56
尝试使用这样的:
this.setBounds(x,y,w,h);
我希望这会有所帮助。
把这个源代码的顶部:
import java.awt.Toolkit;
,然后写这样的代码:
private void formWindowOpened(java.awt.event.WindowEvent evt) {
int lebar = this.getWidth()/2;
int tinggi = this.getHeight()/2;
int x = (Toolkit.getDefaultToolkit().getScreenSize().width/2)-lebar;
int y = (Toolkit.getDefaultToolkit().getScreenSize().height/2)-tinggi;
this.setLocation(x, y);
}
好运:)
使用这个函数u可以定义自己赢得位置
setBounds(500, 200, 647, 418);
下面的例子为中心的屏幕上边框:
package com.zetcode;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.GraphicsEnvironment;
import java.awt.Point;
import javax.swing.JFrame;
public class CenterOnScreen extends JFrame {
public CenterOnScreen() {
initUI();
}
private void initUI() {
setSize(250, 200);
centerFrame();
setTitle("Center");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void centerFrame() {
Dimension windowSize = getSize();
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
Point centerPoint = ge.getCenterPoint();
int dx = centerPoint.x - windowSize.width/2;
int dy = centerPoint.y - windowSize.height/2;
setLocation(dx, dy);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
CenterOnScreen ex = new CenterOnScreen();
ex.setVisible(true);
}
});
}
}
为中心屏幕上的框架,我们需要得到当地 图形环境。从这个环境中,我们确定了 的中心点。结合框架尺寸,我们管理 以使框架居中。 setLocation()
是 将框架移动到中心位置的方法。
注意,这实际上是setLocationRelativeTo(null)
做什么:
public void setLocationRelativeTo(Component c) {
// target location
int dx = 0, dy = 0;
// target GC
GraphicsConfiguration gc = getGraphicsConfiguration_NoClientCode();
Rectangle gcBounds = gc.getBounds();
Dimension windowSize = getSize();
// search a top-level of c
Window componentWindow = SunToolkit.getContainingWindow(c);
if ((c == null) || (componentWindow == null)) {
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
gc = ge.getDefaultScreenDevice().getDefaultConfiguration();
gcBounds = gc.getBounds();
Point centerPoint = ge.getCenterPoint();
dx = centerPoint.x - windowSize.width/2;
dy = centerPoint.y - windowSize.height/2;
}
...
setLocation(dx, dy);
}
'GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); Point centerPoint = ge.getCenterPoint(); int dx = centerPoint.x - windowSize.width/2; int dy = centerPoint.y - windowSize.height/2; setLocation(dx,dy);'LOL! 'setLocationRelativeTo(null);'短得多。 – 2016-08-31 13:57:58
其实,你不是真的有代码,以使形式到达中心屏幕。
只需修改JFrame的性质
以下步骤如下修改:
- 右键单击窗体上
- 变化
FormSize
政策 - 生成调整大小代码 - 然后编辑形式位置X -200 Y- 200
你完成了。为什么要采取编码的痛苦。 :)
更改此:
public FrameForm() {
initComponents();
}
这样:
public FrameForm() {
initComponents();
this.setLocationRelativeTo(null);
}
在答案中编辑格式。但目前还不清楚这是什么以及为什么它是一个解决方案。请编辑并解释。 – 2015-06-24 10:59:51
public class Example extends JFrame {
public static final int WIDTH = 550;//Any Size
public static final int HEIGHT = 335;//Any Size
public Example(){
init();
}
private void init() {
try {
UIManager
.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
SwingUtilities.updateComponentTreeUI(this);
Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
setSize(WIDTH, HEIGHT);
setLocation((int) (dimension.getWidth()/2 - WIDTH/2),
(int) (dimension.getHeight()/2 - HEIGHT/2));
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (UnsupportedLookAndFeelException e) {
e.printStackTrace();
}
}
}
如果使用NetBeans IDE中右键点击表格然后
属性 - >代码 - >检查生成中心
你在用什么? JFrame的?如果是这样,在将可见性设置为true之前,请先尝试设置位置。 – dpp 2012-03-03 04:04:44
@domanokz是先生。 – 2012-03-03 04:09:13
我在这里闻到Pinoy。有关JFrame的参考http://docs.oracle.com/javase/1.4.2/docs/api/javax/swing/JFrame.html。因为它是超类框架http://docs.oracle.com/javase/1.4.2/docs/api/java/awt/Frame.html。对于Frame的超类,Window http://docs.oracle.com/javase/1.4.2/docs/api/java/awt/Window.html ...在最后一个链接上,您将看到由属性setter继承的属性设置器Window类中的JFrame,setLocationRelativeTo。 – dpp 2012-03-03 04:19:28