Я пытался найти аналогичные проблемы, касающиеся моей, но безуспешно.
У меня есть простая Java-программа, в которой у меня есть JLayeredPane с BorderLayout, содержащим три JPanels. Внутри JLayeredPane панели JPanel расположены ЗАПАД, ЦЕНТР, ВОСТОК.
Пример программы
Когда я изменяю размер окна программы, все Поначалу размер макета изменяется хорошо, но когда я сжимаю его до тех пор, пока он не достигнет EAST или WEST, возникает проблема с появлением JComponents через более высокий уровень JPane, например, JTextField, просматривающим JPanel, как вы можете видеть здесь:
Проблема
Пока что в моем коде нет ничего сложного в том, как я расположил слои. Я не возился с JLayeredPane, а лишь добавил JPanel и их соответствующие позиции макета:
majorPane.add(centerArea, BorderLayout.CENTER, 0);
majorPane.add(westArea, BorderLayout.WEST, 1);
majorPane.add(eastArea, BorderLayout.EAST, 2);
Поначалу, до того, как проблема возникла, я сначала не использовал JLayeredPane, и моя реализация представляла собой просто базовый BorderLayout, а затем расположение макетов JPanels. Проблема проявилась сама собой, когда я работал с CENTER и EAST JPanels в своей программе, и когда я уменьшал окно программы слева или справа, строки JTable (которые находились в JScrollPane) «просачивались» через EAST JPanel всякий раз, когда Я щелкнул пробелы в EAST JPanel. Проблема, по-видимому, разрешилась сама собой, когда я применил JLayeredPane и поместил в него обе JPanel, и на этот раз JScrollPane, содержащий JTable, фактически изменил свой размер соответствующим образом и не просачивался через панель EAST.
Однако добавление панели WEST снова возобновило проблему, и каждый раз, когда я уменьшал окно программы до стороны WEST JPanel, именно тогда кнопки и текстовые поля на этой JPanel просачивались через EAST JPanel. До сих пор организация иерархии слоев JPanels ничего не дала.
Я был бы признателен за любую информацию о том, почему это происходит или есть ли кто-то еще, кто это делает. Спасибо.
Вот пример кода того, как я это сделал:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLayeredPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
/**
*
* @author SAMPLE
*/
public class MinimalExample extends JFrame{
JPanel center, east, west,north,south;
JLayeredPane layeredPane;
JTable table;
JScrollPane scrollPane;
JTextField textField;
JComboBox one, two;
JButton button;
String[][] rows = new String[0][0];
String[] cols = {"Sample","Sample","Sample","Sample","Sample","Sample"};
public MinimalExample()
{
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(500,500);
setLayout(new BorderLayout());
layeredPane = new JLayeredPane();
layeredPane.setLayout(new BorderLayout());
north = new JPanel();
north.setLayout(new BorderLayout());
north.setBackground(Color.red);
north.setPreferredSize(new Dimension(100,100));
add(north, BorderLayout.NORTH);
south = new JPanel();
south.setLayout(new BorderLayout());
south.setBackground(Color.red);
south.setPreferredSize(new Dimension(100, 100));
add(south, BorderLayout.SOUTH);
center = new JPanel();
center.setLayout(new BorderLayout());
center.setBackground(Color.PINK);
center.setSize(300,300);
table = new JTable(rows, cols);
scrollPane = new JScrollPane(table);
center.add(scrollPane);
layeredPane.add(center, BorderLayout.CENTER, 0);
east = new JPanel();
east.setLayout(new FlowLayout());
east.setBackground(Color.GREEN);
east.setPreferredSize(new Dimension(200,200));
button = new JButton("Click");
button.setPreferredSize(new Dimension(80,50));
east.add(button);
layeredPane.add(east, BorderLayout.EAST, 1);
west = new JPanel();
west.setLayout(new FlowLayout());
west.setBackground(Color.CYAN);
west.setPreferredSize(new Dimension(210,200));
textField = new JTextField();
textField.setPreferredSize(new Dimension(130,30));
one = new JComboBox();
two = new JComboBox();
one.setPreferredSize(new Dimension(130,30));
two.setPreferredSize(new Dimension(130,30));
west.add(textField);
west.add(one);
west.add(two);
layeredPane.add(west, BorderLayout.WEST, 2);
add(layeredPane);
setVisible(true);
}
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... her-jpanel
JComponents «выскакивает» из другой JPanel ⇐ JAVA
Программисты JAVA общаются здесь
-
Anonymous
1729923984
Anonymous
Я пытался найти аналогичные проблемы, касающиеся моей, но безуспешно.
У меня есть простая Java-программа, в которой у меня есть JLayeredPane с BorderLayout, содержащим три JPanels. Внутри JLayeredPane панели JPanel расположены ЗАПАД, ЦЕНТР, ВОСТОК.
Пример программы
Когда я изменяю размер окна программы, все Поначалу размер макета изменяется хорошо, но когда я сжимаю его до тех пор, пока он не достигнет EAST или WEST, возникает проблема с появлением JComponents через более высокий уровень JPane, например, JTextField, просматривающим JPanel, как вы можете видеть здесь:
Проблема
Пока что в моем коде нет ничего сложного в том, как я расположил слои. Я не возился с JLayeredPane, а лишь добавил JPanel и их соответствующие позиции макета:
majorPane.add(centerArea, BorderLayout.CENTER, 0);
majorPane.add(westArea, BorderLayout.WEST, 1);
majorPane.add(eastArea, BorderLayout.EAST, 2);
Поначалу, до того, как проблема возникла, я сначала не использовал JLayeredPane, и моя реализация представляла собой просто базовый BorderLayout, а затем расположение макетов JPanels. Проблема проявилась сама собой, когда я работал с CENTER и EAST JPanels в своей программе, и когда я уменьшал окно программы слева или справа, строки JTable (которые находились в JScrollPane) «просачивались» через EAST JPanel всякий раз, когда Я щелкнул пробелы в EAST JPanel. Проблема, по-видимому, разрешилась сама собой, когда я применил JLayeredPane и поместил в него обе JPanel, и на этот раз JScrollPane, содержащий JTable, фактически изменил свой размер соответствующим образом и не просачивался через панель EAST.
Однако добавление панели WEST снова возобновило проблему, и каждый раз, когда я уменьшал окно программы до стороны WEST JPanel, именно тогда кнопки и текстовые поля на этой JPanel просачивались через EAST JPanel. До сих пор организация иерархии слоев JPanels ничего не дала.
Я был бы признателен за любую информацию о том, почему это происходит или есть ли кто-то еще, кто это делает. Спасибо.
Вот пример кода того, как я это сделал:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLayeredPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
/**
*
* @author SAMPLE
*/
public class MinimalExample extends JFrame{
JPanel center, east, west,north,south;
JLayeredPane layeredPane;
JTable table;
JScrollPane scrollPane;
JTextField textField;
JComboBox one, two;
JButton button;
String[][] rows = new String[0][0];
String[] cols = {"Sample","Sample","Sample","Sample","Sample","Sample"};
public MinimalExample()
{
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(500,500);
setLayout(new BorderLayout());
layeredPane = new JLayeredPane();
layeredPane.setLayout(new BorderLayout());
north = new JPanel();
north.setLayout(new BorderLayout());
north.setBackground(Color.red);
north.setPreferredSize(new Dimension(100,100));
add(north, BorderLayout.NORTH);
south = new JPanel();
south.setLayout(new BorderLayout());
south.setBackground(Color.red);
south.setPreferredSize(new Dimension(100, 100));
add(south, BorderLayout.SOUTH);
center = new JPanel();
center.setLayout(new BorderLayout());
center.setBackground(Color.PINK);
center.setSize(300,300);
table = new JTable(rows, cols);
scrollPane = new JScrollPane(table);
center.add(scrollPane);
layeredPane.add(center, BorderLayout.CENTER, 0);
east = new JPanel();
east.setLayout(new FlowLayout());
east.setBackground(Color.GREEN);
east.setPreferredSize(new Dimension(200,200));
button = new JButton("Click");
button.setPreferredSize(new Dimension(80,50));
east.add(button);
layeredPane.add(east, BorderLayout.EAST, 1);
west = new JPanel();
west.setLayout(new FlowLayout());
west.setBackground(Color.CYAN);
west.setPreferredSize(new Dimension(210,200));
textField = new JTextField();
textField.setPreferredSize(new Dimension(130,30));
one = new JComboBox();
two = new JComboBox();
one.setPreferredSize(new Dimension(130,30));
two.setPreferredSize(new Dimension(130,30));
west.add(textField);
west.add(one);
west.add(two);
layeredPane.add(west, BorderLayout.WEST, 2);
add(layeredPane);
setVisible(true);
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79127936/jcomponents-popping-through-other-jpanel[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия