我对Java真的很陌生,我想做一个简单的GUI,上面有一个按钮,当你点击它的时候就会有价值,我在YouTube上学习了这个教程。一切都很顺利。但有一点没有,即jlabel
文本的结尾从一个数字(9
)变为...
。手动调整窗口的大小会使数字返回,所以我尝试在它启动时在代码中调整字体、窗口、按钮和标签的大小,这确实起作用,但仍然会遇到同样的问题。
这是我的按钮代码:
JButton button = new JButton("Click me!");
button.addActionListener(this);
...我相信它会称之为:
public void actionPerformed(ActionEvent e) {
count++;
label.setText("Number of clicks: " + count);
}
我在其他问题上试过一些其他的解决方法,但它们一点帮助都没有。
GUI的完整代码如下:
package javaGUI;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class GUI implements ActionListener {
private int count = 0;
private JLabel label;
private JFrame frame;
private JPanel panel;
public GUI() {
frame = new JFrame();
JButton button = new JButton("Click me!");
button.addActionListener(this);
button.setPreferredSize(new Dimension(10, 75));
label = new JLabel("Number of clicks: 0");
label.setFont(new Font("System", Font.PLAIN, 22));
panel = new JPanel();
panel.setBorder(BorderFactory.createEmptyBorder(60, 100, 30, 100));
panel.setLayout(new GridLayout(0, 1));
panel.add(button);
panel.add(label);
frame.add(panel, BorderLayout.CENTER);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setTitle("GUI");
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
new GUI();
}
@Override
public void actionPerformed(ActionEvent e) {
count++;
label.setText("Number of clicks: " + count);
label.setHorizontalTextPosition(JLabel.CENTER);
label.setVerticalTextPosition(JLabel.CENTER);
}
}
当框架在可见之前被“打包”时,所有组件都以其首选的大小显示。
问题是,当需要在标签中显示多个数字时,标签的首选大小增加了,但框架中没有足够的空间来完整显示标签文本,因此文本被截断。
因此,解决方案是pack()框架,以便GridLayout中的组件可以再次以其首选大小显示:
label.setText("Number of clicks: " + count);
frame.pack();
另外请注意,您不应该在ActionListener中设置标签属性。创建标签时应设置以下属性:
label = new JLabel("Number of clicks: 0");
label.setHorizontalTextPosition(JLabel.CENTER);
label.setVerticalTextPosition(JLabel.CENTER);
起初,我只有文本栏和状态栏,如下例所示(我不需要父容器): 这是应该的。但是,请记住状态栏的高度。现在,如果您将StatusBar类更改为下面的类,那么高度几乎会增加一倍。为什么会这样? 这种设置并不需要更多的垂直空间: 我可以让这成为一个新问题,但我觉得不值得...
问题内容: 在Java中,由于空间不足而无法显示JLabel的文本时,文本将被截断并在末尾添加“ …”。 如何轻松找出当前JLabel是显示全文还是被截断? 编辑: 我看到有一种方法可以使用来找出文本的大小。但是,此解决方案无法完全回答问题。如果JLabel的文本包含HTML装饰,则还将计算HTML标签的宽度。因此,可能发生的结果是比JLabel的宽度更大,但仍然可以正确显示文本。 有没有办法知道
我知道如何以正常的方式改变JLabel的字体大小 但是我想看看当您将JLabel添加到面板时是否有一种方法,即简单的方法。像这样.. 当JLabel没有名称时,我如何更改后者的字体大小? 我尝试在JPanel上设置字体,但它不起作用。 对此,我们将不胜感激。
问题内容: 我正在制作一个具有以下布局()的Java Swing应用程序: 当用户添加或删除图标时,其他图标应缩小或增长。 我的问题很简单:我有一个包含;如何调整此图标的大小? 问题答案: 调整图标大小并不容易。您需要使用Java的2D图形来缩放图像。第一个参数是Image类,您可以从类中轻松获取。您可以使用class加载图像文件,然后只需调用getter方法即可获取图像。
我想在内部设置一个的。 我试着用 但这不起作用。我怎么能这么做?
线宽=线宽+25;//调试尝试 我不得不添加这段代码,这样它就增加了它得到的长度。这是我添加的代码,只是为了暂时解决问题。我想要一个永久的解决办法。