jframe中不显示形状
Posted
技术标签:
【中文标题】jframe中不显示形状【英文标题】:Shapes not showing in jframe 【发布时间】:2017-04-25 22:51:18 【问题描述】:我正在尝试用 Java 制作一个简单的绘图应用程序,但无法对按钮进行操作,现在我的窗口显示了选项,但我需要如何编写代码以在单击形状下拉菜单后执行操作。请帮忙
代码:
package simplepaint;
import java.awt.*;
import javax.swing.*;
public class DrawingFrame extends JFrame
JButton loadButton, saveButton, drawButton;
JComboBox colorList, shapesList;
JTextField parametersTextField;
DrawingFrame()
super("Drawing Application");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JToolBar toolbar = new JToolBar();
toolbar.setRollover(true);
toolbar.add(loadButton=new JButton("Load"));
toolbar.add(saveButton=new JButton("Save"));
toolbar.addSeparator();
toolbar.add(drawButton=new JButton("Draw"));
toolbar.addSeparator();
toolbar.addSeparator();
toolbar.add(new JLabel("Shape"));
shapesList=new JComboBox(new String[] "Circle", "Rectangle", "Line","Triangle" );
toolbar.add(shapesList);
toolbar.addSeparator();
toolbar.add(new JLabel("Parameters"));
toolbar.add(parametersTextField=new JTextField());
toolbar.add(new JLabel("Color "));
colorList=new JComboBox(new String[] "black", "red", "blue",
"green", "yellow", "orange", "pink", "magenta", "cyan",
"lightGray", "darkGray", "gray", "white" );
toolbar.add(colorList);
getContentPane().add(toolbar, BorderLayout.NORTH);
class DrawPane extends JPanel
public void paintComponent(Graphics g)
g.fillRect(20, 20, 100, 200);
public static void main(final String args[])
DrawingFrame frame = new DrawingFrame();
frame.setBounds(100, 100, 600, 500);
frame.setVisible(true);
【问题讨论】:
请帮忙——怎么做?您没有提出具体问题,而是发布了无法解释的代码并给出了广泛的要求。我们这里的大多数人都会把这个问题读成“请为我实现这个程序功能”,这不会很好地解决。相反,您应该展示您实现该功能的尝试,然后如果您的尝试不起作用,请提出一个具体问题,说明什么不起作用或您不理解什么。 请注意,您的 DrawPane 永远不会添加到任何东西——所以它永远不会绘制任何东西。您必须将其添加到您的 JFrame 才能看到任何内容。 【参考方案1】:您可以先查看Custom Painting Approaches。
它显示了进行自定义绘画的两种常用方法。
-
将要绘制的对象存储在
ArrayList
直接画到BufferedImage
。
这些例子展示了如何用指定的颜色绘制一个矩形。
修改代码绘制圆和线应该相对简单,因为它们也只需要一个起点和终点。
绘制三角形会更复杂。
【讨论】:
我检查了你的代码,只有当我想添加更多选项来选择形状时,我才能绘制矩形我可以如何添加? @Nayank:通过理解代码并使其适应您的需求。 Camickr,我认为您正在回答帮助吸血鬼的问题。 @Nayank,添加您的组合框,然后在您添加的绘画代码中添加一些 if 语句。如果是矩形,则绘制矩形。 if circle draw circle etc.【参考方案2】:您可以做的第一件事是创建一个ActionListener
,以便在单击按钮时执行回调。在您的构造函数中,您可以执行以下操作:
drawButton.addActionListener(new ActionListener()
@Override
public void actionPerformed(ActionEvent e)
System.out.println("hello");
);
您会注意到,每次单击绘图按钮时,都会在标准输出中打印 'hello'。
请参阅@camickr 的回答,了解如何实际完成绘制形状的工作。
【讨论】:
以上是关于jframe中不显示形状的主要内容,如果未能解决你的问题,请参考以下文章