0
下面的代碼片段:爲什麼JLabel的實例只顯示8行?
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");
}
}
..
class CodeLabel extends JLabel{
int initX;
int initY;
int screenX;
int screenY;
public CodeLabel(String title){
super(title);
addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e){
screenX=e.getXOnScreen();
screenY=e.getYOnScreen();
initX=getX();
initY=getY();
}
});
addMouseMotionListener(new MouseMotionAdapter() {
@Override
public void mouseDragged(MouseEvent e){
int deltaX=e.getXOnScreen()-screenX;
int deltaY=e.getYOnScreen()-screenY;
setLocation(initX+deltaX, initY+deltaY);
}
});
setBorder(BorderFactory.createLineBorder(Color.BLACK));
}
}
這裏標記產生過大而寬邊框。我希望它更小,並且它必須顯示我想要的行數(通過使用html創建標籤)。
幫我出去!
嘗試附加截圖到您的問題。另外,你確定它是大而寬的邊界嗎?如果你在一個太大的容器中使用它,它可能就是元素本身。你嘗試過哪些佈局? –
@ user309483:我添加了屏幕截圖。該'label'使用'html'創建,並在文本區域鍵入的文本是「' 這是一個標籤
使用HTML創建的。
其邊框太大
和
它清楚地顯示只有8行。
所有其他行被修剪
正如你
可以在這種情況下看到
這是它 '」 –
@ user309483:。標籤是'draggable'並在'panel'補充所以我'使佈局'null'。 –