我正在使用Swing
创建一个窗口应用程序。我对setBounds()
间距使用JLabel
方法,但它不起作用。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class FullScreenJFrame extends JFrame
{
public FullScreenJFrame( String title )
{
super(title);
//JFrame frame = new JFrame();
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setUndecorated(true);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
setBounds(0,0,screenSize.width, screenSize.height);
getContentPane()
.add(new JLabel(" HIGHCOURT OF JUDICATURE AT ALLHAHABAD"), BorderLayout.NORTH);
JLabel label = new JLabel("JJ");
label.setBounds(20, 20, 150, 20);
// label.setText(s);
add(label);
}
public static void main( String[] args )
{
FullScreenJFrame frame = new FullScreenJFrame("");
//JFrame frame1 = new JFrame();
//JLabel label = new JLabel("dd");
//label.setBounds(370, 340, 150, 20);
//frame1.add(label);
frame.setVisible(true);
}
}
答案 0 :(得分:3)
一个建议,似乎你将使用所有屏幕显示你的应用程序,所以尽量避免使用像setBoundMethod这样的绝对位置。
您应该将应用程序放在使用其中的其他布局的布局中。检查此链接。
http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html
答案 1 :(得分:2)
请勿使用setBounds()
调整组件的大小。使用Layout Manager,您不必担心手动执行此操作。
答案 2 :(得分:2)
<强>为什么吗
当Layout Managers为你做这件事时,为什么要进行绝对定位。
还有一件事,如果您的JFrame不包含任何标题,那么就不需要添加空标题,因为这是不好的做法。
替换
FullScreenJFrame frame = new FullScreenJFrame("");
通过
FullScreenJFrame frame = new FullScreenJFrame();
和
public FullScreenJFrame( String title )
通过
public FullScreenJFrame()
无需致电
super(title);
答案 3 :(得分:0)
或者,为了将布局设置为null,请右键单击表单并单击“设置布局”,然后单击“null布局”。
答案 4 :(得分:-2)
我还会回答你的问题吗?当然。你知道吗。
“我正在使用setBounds()方法获取JLabel间距,但它不起作用。请问,任何人都可以告诉我它为什么不起作用?”
是的,您的界限无效,因为JFrame
有默认Borderlayout
。要使setBounds
起作用,布局必须为null
。
setLayout(null);
另外,请记住,当执行使用空布局时,不 setBounds
的任何组件都不会出现。< / p>
请参阅Laying out Components in a Container以使用LayoutManagers进行练习