【发布时间】:2014-06-29 00:56:38
【问题描述】:
我是 Java 新手,很抱歉有任何愚蠢的问题。
这是我的问题:
我只想画一条线 - 如果我将 JLabel Myline() 直接添加为 label 到 JFrame MyFrame,那么它将显示在生成的 JFrame-Dialogwindow 中,但如果我添加MyLine() 到 JPanel panel 和 panel 到 MyFrame 然后没有线路。
为什么?
package examples;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.EtchedBorder;
import javax.swing.border.TitledBorder;
public class Bsp {
public static void main(String[] args) {
JFrame frame = new MyFrame();
}
}
class MyFrame extends JFrame {
private class MyLine extends JLabel {
int width;
public MyLine(int width) {
this.width=width;
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.BLACK);
g.drawLine(0, 0, getWidth(), 0);
g.dispose();
}
}
public MyFrame() {
JLabel label=new MyLine(getWidth());
JPanel panel=new JPanel(new GridBagLayout());
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new GridLayout(3, 1));
panel.add(label);
add(new JButton("A"));
add(new JButton("B"));
add(panel);
pack();
setVisible(true);
}
}
【问题讨论】: