Java绘图程序
我试图创建一个简单的绘图程序,其中包含一个工具栏和绘图区域。程序的主窗口是JFrame。我添加了一个JToolBar和一个JPanel drawingPanel来进行绘制。但是,这条线不是在drawingPanel上画的,而是在它后面,当我删除drawingPanel时,我可以看到这条线-只需注释掉CreateDrawingPanel;。如何在drawingPanel上画线Java绘图程序,java,swing,graphics2d,Java,Swing,Graphics2d,我试图创建一个简单的绘图程序,其中包含一个工具栏和绘图区域。程序的主窗口是JFrame。我添加了一个JToolBar和一个JPanel drawingPanel来进行绘制。但是,这条线不是在drawingPanel上画的,而是在它后面,当我删除drawingPanel时,我可以看到这条线-只需注释掉CreateDrawingPanel;。如何在drawingPanel上画线 import java.awt.BorderLayout; import java.awt.Color; import j
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JToolBar;
import javax.swing.SwingUtilities;
public class UserInterface extends JPanel
{
static JFrame frame;
static JPanel drawingPanel;
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
CreateFrame();
}
});
}
private static void CreateFrame()
{
frame = new JFrame("Interface");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500,500);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
frame.setExtendedState(Frame.MAXIMIZED_BOTH);
frame.add(new UserInterface());
}
public UserInterface()
{
setLayout(new BorderLayout());
CreateToolBar();
CreateDrawingPanel();
repaint();
}
private void CreateToolBar()
{
JToolBar toolbar = new JToolBar(JToolBar.VERTICAL);
JButton button = new JButton("Some button");
toolbar.add(button);
add(toolbar, BorderLayout.WEST);
toolbar.setBackground(Color.black);
toolbar.setFloatable(false);
}
private void CreateDrawingPanel()
{
drawingPanel = new JPanel();
add(drawingPanel, BorderLayout.CENTER);
drawingPanel.setBackground(Color.white);
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.drawLine(100, 100, 120, 500);
}
}
所有图形都位于UserInterface对象上,因为这是覆盖paintComponent的位置 删除paintComponent替代,并更改createDrawingPanel:
所有图形都位于UserInterface对象上,因为这是覆盖paintComponent的位置 删除paintComponent替代,并更改createDrawingPanel:
您可以这样定义drawingPanel:
drawingPanel = new JPanel(){
protected void paintComponent(Graphics g){
//Your draw Code
}
};
drawingPanel = new DrawingPanel();
或者您可以创建一个继承自JPanel的类:
public class DrawingPanel extends JPanel{
public DrawingPanel(){
//...
}
protected void paintComponent(Graphics g){
//Your draw Code
}
}
然后像这样使用它:
drawingPanel = new JPanel(){
protected void paintComponent(Graphics g){
//Your draw Code
}
};
drawingPanel = new DrawingPanel();
您可以这样定义drawingPanel:
drawingPanel = new JPanel(){
protected void paintComponent(Graphics g){
//Your draw Code
}
};
drawingPanel = new DrawingPanel();
或者您可以创建一个继承自JPanel的类:
public class DrawingPanel extends JPanel{
public DrawingPanel(){
//...
}
protected void paintComponent(Graphics g){
//Your draw Code
}
}
然后像这样使用它:
drawingPanel = new JPanel(){
protected void paintComponent(Graphics g){
//Your draw Code
}
};
drawingPanel = new DrawingPanel();
啊,你为什么违反命名规则?!啊,你为什么违反命名规则?!