从上面的图像中可以看到,一些文本被剪掉了:(代码:
package malgm.school.clockui.ui;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import javax.swing.*;
import malgm.school.clockui.ClockUI;
import malgm.school.clockui.ResourceLoader;
public class ClockFrame extends JFrame {
private static final long serialVersionUID = 1L;
public final static int FRAME_WIDTH = 600;
public final static int FRAME_HEIGHT = 200;
public ClockFrame() {
setTitle("Clock");
setSize(FRAME_WIDTH, FRAME_HEIGHT);
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
relocalize();
}
public void relocalize() {
//Wipe controls
this.getContentPane().removeAll();
this.setLayout(null);
initComponents();
}
@SuppressWarnings("unused")
private void initComponents() {
setLayout(new BorderLayout());
JPanel header = new JPanel();
header.setLayout(new BoxLayout(header, BoxLayout.LINE_AXIS));
JPanel section = new JPanel();
section.setLayout(new BoxLayout(section, BoxLayout.LINE_AXIS));
JLabel label = new JLabel("The time is...");
JButton speakButton = new JButton("Speak");
speakButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Runtime rt = Runtime.getRuntime();
try {
Process pr = rt.exec(ClockUI.dir + "/SpeakingClock.exe");
} catch (IOException e1) {
e1.printStackTrace();
}
}
});
JLabel time = new JLabel("test");
ResourceLoader resLoader = new ResourceLoader();
time.setFont(resLoader.getFont(ResourceLoader.FONT_DIGITAL, 72));
section.add(Box.createHorizontalGlue());
section.add(time);
section.add(Box.createHorizontalGlue());
header.add(label);
header.add(Box.createHorizontalGlue());
header.add(speakButton);
add(header, BorderLayout.PAGE_START);
add(section, BorderLayout.CENTER);
}
}
FONT:http://www.dafont.com/digital-7。FONT
如有任何帮助,我将不胜感激
成功使用Swing布局的关键是避免setLayout(null)
和pack()
封闭的窗口
。这让包含的组件采用其首选的大小,如下所示。为了避免这个陷阱,不要调用setresizable(false)
。
import java.awt.*;
import javax.swing.*;
/** @see https://stackoverflow.com/a/23551260/230513 */
public class ClockFrame extends JFrame {
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
ClockFrame cf = new ClockFrame();
}
});
}
public ClockFrame() {
setTitle("Clock");
setDefaultCloseOperation(EXIT_ON_CLOSE);
initComponents();
pack();
setLocationRelativeTo(null);
setVisible(true);
}
@SuppressWarnings("unused")
private void initComponents() {
JPanel header = new JPanel();
header.setLayout(new BoxLayout(header, BoxLayout.LINE_AXIS));
JPanel section = new JPanel();
section.setLayout(new BoxLayout(section, BoxLayout.LINE_AXIS));
JLabel label = new JLabel("The time is...");
JButton speakButton = new JButton("Speak");
JLabel time = new JLabel("00:00");
time.setFont(time.getFont().deriveFont(72f));
section.add(Box.createHorizontalGlue());
section.add(time);
section.add(Box.createHorizontalGlue());
header.add(label);
header.add(Box.createHorizontalGlue());
header.add(speakButton);
add(header, BorderLayout.PAGE_START);
add(section, BorderLayout.CENTER);
}
}
我有一个JLabel,随着JFrame窗口的扩展,字体大小会自动改变。JLabel中的文本可以缩写,也可以放入全文,如下所示: 因为我对Swing使用了Eclipse的“AbsoluteLayout”(),所以JLabels不会自动调整到文本的大小,而是固定值。请注意,我确实会随着窗口大小的改变而改变这些固定值。我已经有了一个算法。 我想知道是否有一种方法来确定我的文本是否会显示成这样,而不是进行
我有一个JLabel,我已经设置了自定义字体,“BP饮食”到它。如果我将此添加到JFrame中,文本看起来很好,但是当我将JFrame的布局更改为FlowLayout时,文本的顶部就会被切断。当您将JLabel添加到JPanel并将其添加到JFrame时,也会出现同样的问题。我在http://www.hichris.com/more/files/bpdiet.otf上有这个字体 下面是代码: 感谢
我对Java真的很陌生,我想做一个简单的GUI,上面有一个按钮,当你点击它的时候就会有价值,我在YouTube上学习了这个教程。一切都很顺利。但有一点没有,即文本的结尾从一个数字()变为。手动调整窗口的大小会使数字返回,所以我尝试在它启动时在代码中调整字体、窗口、按钮和标签的大小,这确实起作用,但仍然会遇到同样的问题。 这是我的按钮代码: ...我相信它会称之为: 我在其他问题上试过一些其他的解决
问题内容: 我刚刚开始将Swing应用程序从OS X移植到Windows,使用s会很麻烦。 我注意到,如果标签的文本是HTML ,则指定为的字体将被忽略(在Mac上不会发生)。HTML格式极其有用,可提高复杂显示的可读性。 通常情况下,我会在HTML标记中指定字体,但是我使用的字体是在运行时通过JAR中的ttf 加载的。我尝试在font标签中使用加载的字体的名称,但这没有用。 有什么办法可以在Wi
我正在设计一个配置托盘的应用程序,我有一个扩展的类,我用它创建带有旋转文本的JLabels。我在网上找到了几个关于如何这样做的例子,我的旋转工作很好,它不是完美的,但这是一个正在进行的工作。 我现在遇到的问题是我旋转的JLabels中的文本重复了,我不知道为什么。下面是一张图片,显示了每个标签中的重复文本,它在一些地方比在其他地方更突出,例如与高度标签的重复可以清楚地看到。 下面是我的类的源代码,
我正在使用标签来显示路径,我在侦听器中使用的关于Laebl的唯一方法是setText()方法。有没有办法不发生这种情况?我使用SWT,更喜欢维护网格布局,这样我就可以拥有2列。任何信息都会有所帮助。谢谢你。 这是密码