如何打印顶部的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));
}
});
}
}发布于 2014-05-15 16:02:34
如何打印顶部的JLabel?
创建JLabel并在最初创建GUI时将其添加到GUI中,并使JLabel成为实例变量。因此,与其向北添加JPanel,不如将标签添加到北方。
然后,当ChangeListener触发时,只需使用label.setText(...)来更改标签的值。
您不希望每次都创建一个新的标签,因为您需要重新验证()并重新绘制面板以确保调用布局管理器。
发布于 2014-05-15 16:10:44
试试这个..。
contentPane.add(q, BorderLayout.NORTH);
final JLabel label = new JLabel(" "); //NEW
q.add(label); //NEW
pine.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent arg0) {
JSlider sl = (JSlider)arg0.getSource();
String a = ((Integer)sl.getValue()).toString();
label.setText(a); //NEW
}
});发布于 2014-05-15 16:12:22
这里的第一个问题是,在将pine添加到p之后,将p添加到contentPane中。
那么,为什么在滑块改变其值时添加一个新的JLable?只需将一个JLabel添加到BorderLayout.NORTH并使用label.setText(String)方法更改它的文本即可。
希望我能帮上忙
https://stackoverflow.com/questions/23683292
复制相似问题