考虑到我在左上角写了“文件”,然后如何在右上角添加按钮?
public class FileViewer extends JPanel
{
private static final long serialVersionUID = 1L;
public void paintComponent(Graphics g)
{
Graphics2D graphic = (Graphics2D)g;
graphic.drawString("HTML File:", 14, 15);
}
}
答案 0 :(得分:7)
手工绘制你自己的所有组件会非常困难。
您最好使用为您绘制界面的现有组件。
在这种情况下使用swing你可以在JFrame上使用JFrame和JButton ......
像这样:
alt text http://img36.imageshack.us/img36/4337/imagen2rrq.png
这会容易得多。
以下是此示例的代码。显然只是一种品味。考虑阅读Swing tutorial
import javax.swing.JFrame;
import javax.swing.BoxLayout;
import javax.swing.JLabel;
import javax.swing.JButton;
import javax.swing.Box;
import javax.swing.JPanel;
import java.awt.BorderLayout;
public class SuchCode {
public static void main( String [] args ) {
JFrame frame = new JFrame("How can I... ");
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
JPanel panel = new JPanel();
BoxLayout boxLayout = new BoxLayout( panel , BoxLayout.LINE_AXIS );
panel.setLayout( boxLayout );
panel.add( new JLabel("File"));
panel.add( Box.createHorizontalGlue() );
panel.add( new JButton("Button"));
frame.add( panel , BorderLayout.NORTH );
frame.pack();
frame.setVisible( true );
}
}
阅读一下,做一个测试,然后尽可能多地回到这里。我很乐意帮助你(我打赌其他一些好的java家伙也会这样)。
答案 1 :(得分:1)
我将在这里走出困境,并假设你正在谈论与Swing(或SWT)的定位。
要智能地定位元素,您需要容器(窗口,面板等)具有布局管理器。布局管理器负责将子控件放在容器中。
例如,Java教程here展示了如何使用Java附带的许多标准布局管理器。还有一些不附带Java。特别感兴趣的是SWT,它具有更平台本地的外观和感觉。
更新
我看到你添加的东西我完全偏离了基础,因为你只是想找到一种方法将文本写入paintComponent
中的图形句柄。
您已经有了部分答案:您已使用Graphics2D.drawString(String,x,y)
x
和y
指定要绘制的位置。
您需要做的是更改x
和y
以在右上角绘制。实际上,只有x
才需要改变。
这是棘手的地方。您必须根据工作区的大小和计算文本字符串的大小来计算y
。
我不知道Java的具体细节,因为我从未完成过图形输出,但很可能是:
graphic
上调用一个方法来返回可用的绘制矩形;这样可以获得最大y
值。一旦你同时拥有这两个,只需从第一个中减去第二个,你应该有一个起始y
值以使字符串在右上角完成。
答案 2 :(得分:0)
您可以使用add()方法在构造函数中添加一个按钮。 您可能希望将对齐设置为右,以便按钮被绘制到右侧
paint方法通常不用于在屏幕上添加UI控件。
话虽如此,我希望您阅读其他人发布的关于您向我们提出问题的方式的评论。