Java 为什么JLabel实例只显示8行?
下面是代码片段:Java 为什么JLabel实例只显示8行?,java,swing,layout,jlabel,Java,Swing,Layout,Jlabel,下面是代码片段: import java.awt.BorderLayout; import java.awt.HeadlessException; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JP
import java.awt.BorderLayout;
import java.awt.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.ScrollPaneConstants;
/**
*
* @author mohammadfaisal
* http://ermohammadfaisal.blogspot.com
* http://facebook.com/m.faisal6621
*
*/
public class CodeMagnets extends JFrame{
private JTextArea area4Label;
private JLabel codeLabel;
private JButton createButton;
private JPanel magnet;
public CodeMagnets(String title) throws HeadlessException {
super(title);
magnet=new JPanel(null);
JScrollPane magnetScroller=new JScrollPane(magnet);
magnetScroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
magnetScroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
add(BorderLayout.CENTER, magnetScroller);
JPanel inputPanel=new JPanel();
area4Label=new JTextArea(5, 30);
area4Label.setTabSize(4);
JScrollPane textScroller=new JScrollPane(area4Label);
inputPanel.add(textScroller);
createButton=new JButton("Create code magnet");
createButton.addActionListener(new MyButtonListener());
inputPanel.add(createButton);
add(BorderLayout.SOUTH, inputPanel);
//pack();
setSize(640, 480);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
class MyButtonListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
codeLabel=new CodeLabel(area4Label.getText());
codeLabel.setSize(getPreferredSize());
codeLabel.setLocation(10, 10);
magnet.add(codeLabel);
magnet.repaint();
}
}
public static void main(String[] args) {
new CodeMagnets("Code Magnets");
}
}
这里生成的标签有大而宽的边框。我希望它更小,并且必须显示我想要的行数(通过使用html创建标签)
帮帮我 在按钮侦听器中,您正在使用
codeLabel.setSize(getPreferredSize());
在该代码的上下文中,CodeMagnets
实例上调用了getPreferredSize()
。我认为这应该是:
codeLabel.setSize(codeLabel.getPreferredSize());
尝试在你的问题上附加一个屏幕截图。还有,你确定边界又大又宽吗?如果在太大的容器中使用,它可能是元素本身。您已经尝试过哪些布局?@user309483:我已经添加了屏幕截图。
标签
是使用html
创建的,文本区域中键入的文本是“这是一个使用html创建的标签。
它的边框太大
并且
仅清晰显示8行。
所有其他行都被修剪。
正如您在本例中所看到的。
就是它。
”@user309483:标签是可拖动的,并添加在面板上,因此我要将布局设置为空。
codeLabel.setSize(codeLabel.getPreferredSize());