Я хочу протестировать код (ниже) для будущего проекта.
Я отображаю все contPanel.
Я выбираю несколько объектов contPanel.
Я удаляю только выбранную панель contPanel с помощью jButton
Он оставляет другую панель управления в кадре после удаления выбранной панели управления.
но весь контент не отображается, и я получаю сообщение об ошибке:
Отключено от целевой ВМ, адрес: «127.0.0.1:60359», транспорт: «сокет».
Процесс завершен с кодом выхода 130 (прерван сигналом 2: SIGINT)
Где я ошибаюсь? Что я могу сделать? Обновление Intellij ничего не меняет.
Мне:
1)
убунту 20.04
IntelliJ IDEA 2020.3 (версия для сообщества) Сборка №IC-203.5981.155 от 30 ноября 2020 г. Версия среды выполнения: 11.0.9+11-b1145.21 amd64 ВМ: 64-разрядная виртуальная машина сервера OpenJDK от JetBrains s.r.o. Linux 5.4.0-56-общий GC: ParNew, ConcurrentMarkSweep Память: 1981M Ядра: 8 Плагины, не входящие в комплект: com.jetbrains.edu Текущий рабочий стол: Ubuntu:GNOME
Java-1.8.0-openjdk-amd64
package suggests.deleteCorrectItem;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
public class Main extends JFrame{
public ArrayList<Integer> alInteger = new ArrayList<Integer>();
public ArrayList<ContPanel> alContPanel = new ArrayList<ContPanel>();
public JPanel mainPanel = new JPanel();
public int widthFrame = 700;
public int heightFrame = 120;
public Dimension dimensionFrame = new Dimension(widthFrame, heightFrame);
public JScrollPane jScrollPane;
public JButton jButtonDeleteAll = new JButton();
public DeleteListener deleteListener = new DeleteListener();
public ContPanel contPanel;
public static void main(String[] args){
Main myMain = new Main();
}
public Main(){
frameInitialization();
setBackground(Color.BLUE);
mainPanel.setBackground(Color.red);
initObjects();
buildLayout();
setVisible(true);
}
public void frameInitialization(){
this.setTitle("fenêtre de test");
this.setSize(dimensionFrame);
this.setResizable(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
addScrollPaneFrame();
}
public void addScrollPaneFrame(){
jScrollPane = new JScrollPane(mainPanel);
jScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
jScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
add(jScrollPane);
}
public void initObjects(){
for ( int i = 0; i< 15;i++){
alInteger.add(i);
contPanel = new ContPanel(alInteger.get(i));
contPanel.setBackground(Color.green);
alContPanel.add(contPanel);
}
jButtonDeleteAll.addActionListener(deleteListener);
}
public void buildLayout(){
mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.PAGE_AXIS));
jScrollPane.add(mainPanel);
fillOfContPanel();
setContentPane(jScrollPane);
}
public void fillOfContPanel(){
for (int i = 0; i< alInteger.size(); i++){
mainPanel.add(alContPanel.get(i));
}
}
class ContPanel extends JPanel{
public Integer integ;
public JLabel jLabel = new JLabel();
public JCheckBox jCheckBox = new JCheckBox();
public ContPanel(Integer integ){
setBackground(Color.BLACK);
this.integ = integ;
jLabel.setText(this.integ.toString());
add(jLabel);
add(jCheckBox);
}
}
class DeleteListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent actionEvent) {
mainPanel = new JPanel();
for(int i = alContPanel.size()-1; i>= 0 ; i--){
if (alContPanel.get(i).jCheckBox.isSelected()){
alInteger.remove(i);
alContPanel.remove(i);
}
}
}
}
}




Я нашел проблемы. Проект заказывает. Я получаю агрессивные цвета
Если это может помочь кому-то
Я много чего поменял...
package suggests.deleteCorrectItem;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
public class Main extends JFrame{
/**
This little project shows the display of elements from an arrayList
with a dedicated checkbox for each of them to select them. The user the items to remove and
clicks the jButton.
The selected items disappear.
*/
public ArrayList<Integer> alInteger = new ArrayList<Integer>();
public ArrayList<ContPanel> alContPanel = new ArrayList<ContPanel>();
public JPanel mainPanel = new JPanel();
public int widthFrame = 700;
public int heightFrame = 600;
public Dimension dimensionFrame = new Dimension(widthFrame, heightFrame);
public JScrollPane jScrollPane;
public JButton jButtonDeleteAll = new JButton("Delete all selected items");
public DeleteListener deleteListener = new DeleteListener();
public ContPanel contPanel;
public static void main(String[] args){
Main myMain = new Main();
}
public Main(){
frameInitialization();
initObjects();
buildLayout();
setVisible(true);
}
public void frameInitialization(){
this.setTitle("fenêtre de test");
this.setSize(dimensionFrame);
this.setResizable(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void addScrollPaneFrame(){
jScrollPane = new JScrollPane(mainPanel);
jScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
jScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
add(jScrollPane);
}
public void initObjects(){
for ( int i = 0; i< 15;i++){
alInteger.add(i);
contPanel = new ContPanel(alInteger.get(i));
alContPanel.add(contPanel);
}
jButtonDeleteAll.addActionListener(deleteListener);
}
public void buildLayout(){
mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.PAGE_AXIS));
addScrollPaneFrame();
displayComponents();
}
public void refreshMainPanel(){
clearMainPanel();
displayComponents();
}
public void displayComponents() {
fillOfContPanel();
mainPanel.add(jButtonDeleteAll);
setContentPane(jScrollPane);
}
public void clearMainPanel(){
mainPanel.removeAll();
}
public void fillOfContPanel(){
for (int i = 0; i< alInteger.size(); i++){
mainPanel.add(alContPanel.get(i));
}
}
class ContPanel extends JPanel{
/**
this class represents the item for a specific element of
an arrayList with a dedicated checkbox.
*/
public Integer integ;
public JLabel jLabel = new JLabel();
public JCheckBox jCheckBox = new JCheckBox();
public ContPanel(Integer integ){
this.integ = integ;
jLabel.setText(this.integ.toString());
add(jLabel);
add(jCheckBox);
}
}
class DeleteListener implements ActionListener, Runnable {
/**
*
* @param actionEvent
this class allows to remove the selected items
and display the mainPanel after deletion.
*/
@Override
public void actionPerformed(ActionEvent actionEvent) {
run();
}
@Override
public void run() {
for(int i = alContPanel.size()-1; i>= 0 ; i--){
if (alContPanel.get(i).jCheckBox.isSelected()){
alInteger.remove(i);
alContPanel.remove(i);
}
refreshMainPanel();
}
}
}
}
Отвечает ли это на ваш вопрос? Выход из программы Java с кодом "130"