我希望在一个JFrame
中设置一个大小为dimension(50,75)
的jLabel
。
我尝试使用以下代码:
label.setPreferredSize(new Dimension(50, 75));
但它没有起作用。 我该怎么做?
setPreferredSize
方法确实可以改变标签的大小,您可以尝试使用 setBorder
方法来绘制边框并验证新的大小,但字体大小不会改变。如果您想要大号字体,请尝试调用 setFont
并设置新的字体大小。以下是一些示例代码:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.border.LineBorder;
public class Test {
public static void main(String[] args) {
JFrame t = new JFrame();
t.setBounds(100, 100, 500, 400);
JLabel l = new JLabel("Hello");
// new font size is 20
l.setFont(new Font(l.getFont().getName(), l.getFont().getStyle(), 20));
// draw label border to verify the new label size
l.setBorder(new LineBorder(Color.BLACK));
// change label size
l.setPreferredSize(new Dimension(200, 200));
t.getContentPane().setLayout(new FlowLayout());
t.add(l);
t.setVisible(true);
}
}
getContentPane().setLayout(new FlowLayout())
来使用FlowLayout
。如果您使用默认布局BorderLayout
,则标签的大小将与框架相同。 - Naruto Biju Mode简单示例:
class Testing extends JFrame
{
int counter = 1;
javax.swing.Timer timer;
public Testing()
{
setSize(100,50);
setLocation(300,100);
setDefaultCloseOperation(EXIT_ON_CLOSE);
JPanel p = new JPanel();
final JLabel label = new JLabel("1",JLabel.CENTER);
label.setBorder(BorderFactory.createLineBorder(Color.BLACK));
Dimension d = label.getPreferredSize();
//label.setPreferredSize(new Dimension(d.width+60,d.height));//<-----------
p.add(label);
getContentPane().add(p);
ActionListener al = new ActionListener(){
public void actionPerformed(ActionEvent ae){
counter *= 10;
label.setText(""+counter);
if(counter > 1000000) timer.stop();}};
timer = new javax.swing.Timer(1000,al);
timer.start();
}
setBounds(x, y, width, height)
方法。你需要使用 LayoutManager,然后调用 pack 方法。
LayoutManager 会尝试安排子组件的布局,pack() 方法获取这些子组件的首选大小。
public void pack()
使此窗口大小适合其子组件的首选大小和布局。如果窗口的任一维度小于先前调用 setMinimumSize 方法设置的最小大小,则自动扩大窗口的宽度和高度。如果窗口及/或其所有者尚未可显示,则在计算首选大小之前使它们都可显示。计算完首选大小后,对窗口进行验证。
pack()
在这里有帮助?大小取决于LayoutManager
。为了解决这个问题,OP必须发布MCVE
。 - alex2410
LayoutManager
?发布一个MCVE。 - alex2410