我这里有设计问题。有两种选择听起来可以实现,但我不喜欢这两种选择。
我需要在我的JPanel中提供两个功能。
广告
如果我只需要绘制线条,那么我可以从以下答案中复制过去的解决方案。
Draw a line in a JPanel with button click in Java
public class LinePanel extends JPanel {
...
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
...
但是由于我需要添加第二个功能,我需要做这样的事情
public class LineStringPanel extends JPanel {
这将使LinePanel无用的中间类。
Graphics g = panel.getGraphics();
您的想法和建议是什么?
UPD: 在JPanel里面有作为孩子的数字JLabel代表单位和特征。
这些行是单位某些特征之间的关系,而字符串是某些行为的通知。
所以我想在子JLabel的顶部(前面)显示String。
JPanel也在JScrollPane中。
答案 0 :(得分:4)
如果你需要draw strings,你可以直接在paintComponent
方法中这样做(假设你不需要任何太花哨的东西,这很容易):
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
...
g.drawLine(p1.x, p1.y, p2.x, p2.y);
...
g.setColor(Color.black);
g.drawString("My Text", 0, 20);
}
然后你可以使用你的trashgod的解决方案几乎没有任何变化。
请记住,坐标是文本的基线 - 所以如果您使用0,0
它将不会显示在屏幕上。