Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将所有元素融入JPanel?_Java_Swing_Layout Manager - Fatal编程技术网

Java 如何将所有元素融入JPanel?

Java 如何将所有元素融入JPanel?,java,swing,layout-manager,Java,Swing,Layout Manager,我有两个列表和三个按钮。该列表包含基本形状的元素。当我选择ex“Rect”时,它应该在画布中绘制矩形。现在我已经实现了第二个列表矩形。 矩形画得很完美,但我的列表又被复制了为什么??如何使它们合身。我哪里做错了 这是以下代码: package src; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import

我有两个列表和三个按钮。该列表包含基本形状的元素。当我选择ex“Rect”时,它应该在画布中绘制矩形。现在我已经实现了第二个列表矩形。 矩形画得很完美,但我的列表又被复制了为什么??如何使它们合身。我哪里做错了

这是以下代码:

package src;

import javax.swing.*;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.geom.Rectangle2D;


public class Main implements ActionListener{



    public static void main(String[] args){
        Main gui = new Main();
        gui.go();
    }

    public void go(){
         frame = new JFrame();
         panel = new JPanel();
        String figures[] = {"Rectangle","Rounded Rectangle", "Arc", "Line","Cubic curve"};
         drawing1 = new JList<String>(figures);
         drawing2 = new JList<String>(figures);
         connect_button = new JButton("connect them");

        submit1 = new JButton("Submit figure 1");
        submit2 = new JButton("Submit figure 2");

        connect_button.addActionListener(this);
        submit1.addActionListener(this);
        submit2.addActionListener(this);
        panel.add(drawing2);
        panel.add(drawing1);
        panel.add(connect_button);
        panel.add(submit1);
        panel.add(submit2);

        panel.setLayout(new BoxLayout(panel,BoxLayout.Y_AXIS));
        panel.setBackground(Color.gray);
        frame.getContentPane().add(BorderLayout.NORTH,panel);
        frame.getContentPane().add(BorderLayout.CENTER,draw);
        frame.setSize(5000,400);
        frame.setVisible(true);
    }

    public void actionPerformed(ActionEvent event){
    if(event.getSource()== submit1){

    }
    else if(event.getSource()== submit2){
        type = drawing1.getSelectedValue();
        draw.repaint();

    }
    else if(event.getSource()== connect_button){

    }



    }
    DrawingPanel draw = new DrawingPanel();
    JPanel panel;
    JFrame frame;
    JButton connect_button;
    JButton submit1;
    JButton submit2;
    JList<String> drawing1;
    JList<String> drawing2;
    String type;

    public class DrawingPanel extends JPanel{
        public void paintComponent(Graphics G){

            Graphics2D g2d = (Graphics2D) G;
            if(type=="Rectangle"){
            Rectangle2D r2d = new Rectangle2D.Float(10f, 10f, 130f, 130f);
            g2d.draw(r2d);
            }

        }

    }
}
包src;
导入javax.swing.*;
导入java.awt.*;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入java.awt.geom.Rectangle2D;
公共类Main实现ActionListener{
公共静态void main(字符串[]args){
Main gui=newmain();
gui.go();
}
公开作废go(){
frame=新的JFrame();
panel=新的JPanel();
字符串数字[]={“矩形”、“圆角矩形”、“圆弧”、“直线”、“三次曲线”};
图纸1=新的JList(图);
图纸2=新的JList(图);
connect_按钮=新按钮(“连接它们”);
submit1=新的JButton(“提交图1”);
submit2=新的JButton(“提交图2”);
connect_按钮。addActionListener(此);
submit1.addActionListener(此);
submit2.addActionListener(此);
面板。添加(图纸2);
面板。添加(图纸1);
面板。添加(连接按钮);
面板。添加(提交1);
面板。添加(提交2);
panel.setLayout(新的BoxLayout(panel,BoxLayout.Y_轴));
面板.立根背景(颜色.灰色);
frame.getContentPane().add(BorderLayout.NORTH,面板);
frame.getContentPane().add(BorderLayout.CENTER,draw);
框架尺寸(5000400);
frame.setVisible(true);
}
已执行的公共无效操作(操作事件){
if(event.getSource()=submit1){
}
else if(event.getSource()=submit2){
type=drawing1.getSelectedValue();
draw.repaint();
}
else if(event.getSource()==连接按钮){
}
}
DrawingPanel draw=新建DrawingPanel();
JPanel小组;
JFrame框架;
JButton connect_按钮;
JButton submit1;
JButton提交2;
JList图纸1;
JList绘图2;
字符串类型;
公共类DrawingPanel扩展了JPanel{
公共组件(图形G){
Graphics2D g2d=(Graphics2D)G;
如果(类型=“矩形”){
矩形2D r2d=新矩形2D.浮动(10f、10f、130f、130f);
g2d.绘图(r2d);
}
}
}
}
在单击submit图2之前

点击提交按钮后

您的列表正在重复,因为您自己正在创建两个类似的列表

String figures[] = {"Rectangle","Rounded Rectangle", "Arc", "Line","Cubic curve"};
drawing1 = new JList<String>(figures);
drawing2 = new JList<String>(figures);
字符串数字[]={“矩形”、“圆角矩形”、“圆弧”、“直线”、“三次曲线”};
图纸1=新的JList(图);
图纸2=新的JList(图);
在这里,两个列表传递的是相同的
数字
,因此它们肯定是重复的。试着给他们每个人分配不同的
字符串[]


希望这有帮助

你说的“我的名单被复制”是什么意思?你能上传一个屏幕截图并发布一个链接吗?别忘了在paintComponent()方法的开头添加一个super.paintComponent()。默认情况下,只有两个单独的列表具有相同的内容。这就是为什么我要从同一阵列中提取。在这里,一切正常。但当我选择矩形并单击按钮时,操作将触发新矩形,但除此之外,还有一个与这两个按钮不同的JList@camickr我尝试将其添加到paintComponent的开头,但出现以下错误:javax.swing.JComponent类中的方法paintComponent无法应用于给定的类型添加图形对象吗?默认情况下,只有两个单独的列表具有相同的内容。这就是为什么我要从同一阵列中提取。在这里,一切正常。但当我选择矩形并单击按钮时,操作将触发新矩形,但除此之外,还有一个与这两个按钮不同的JList!我现在已经发布了屏幕截图。。在我这里不开门。。blocked:(但我尝试运行您的代码。当它运行时,它正在打印重画单击的按钮(双击/三次单击)而不是列表???@asifdsid88我没有收到您的问题。当我单击提交按钮2时,矩形被绘制,但已经存在的两个列表被再次绘制。