作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何打印顶部的JLabel
?
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.border.EmptyBorder;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class SampleFrame extends JFrame {
private JPanel contentPane;
private JPanel q;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
SampleFrame frame = new SampleFrame();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public SampleFrame() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
JPanel p = new JPanel();
q = new JPanel();
JSlider pine = new JSlider();
contentPane.add(p, BorderLayout.CENTER);
p.add(pine);
contentPane.add(q, BorderLayout.NORTH);
pine.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent arg0) {
JSlider sl = (JSlider)arg0.getSource();
String a = ((Integer)sl.getValue()).toString();
q.add(new JLabel(a));
}
});
}
}
最佳答案
How to print the JLabel at the top?
在最初创建 GUI 并使 JLabel 成为实例变量时,创建 JLabel 并将其添加到 GUI。因此,您只需将标签添加到 NORTH,而不是向 NORTH 添加 JPanel。
然后,当 ChangeListener 触发时,您只需使用 label.setText(...)
来更改标签的值。
您不想每次都创建新标签,因为这样您需要 revalidate() 并重新绘制面板以确保调用布局管理器。
关于java - ChangeListener 不适用于 JSlider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23683292/
我是一名优秀的程序员,十分优秀!