Программисты JAVA общаются здесь
Anonymous
Java Swing: добавление вкладок в JPanels
Сообщение
Anonymous » 01 дек 2025, 01:01
У меня есть ряд вкладок, но я хочу затем добавить дополнительные вкладки в отображаемую панель, как если бы копировало ленточное меню. Я примерно знаю, что нужно сделать (изменить тип возвращаемого значения функции makeTextPanel), но не знаю, как это сделать, поэтому буду благодарен за любую помощь.
Код: Выделить всё
package components;
import javax.swing.JTabbedPane;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JComponent;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.KeyEvent;
public class ribbonMenu extends JPanel {
public ribbonMenu() {
super(new GridLayout(1,1));
JTabbedPane tabbedPane = new JTabbedPane();
JTabbedPane tabbedPane2 = new JTabbedPane();
JComponent panel1 = makeTextPanel("Panel #1");
tabbedPane.addTab("Tab 1", panel1);
panel1.setPreferredSize(new Dimension(600, 400));
JComponent panel2 = makeTextPanel("Panel #2");
tabbedPane.addTab("Tab 2", panel2);
JComponent panel3 = makeTextPanel("Panel #3");
tabbedPane.addTab("Tab 3", panel3);
add(tabbedPane);
tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
}
protected JComponent makeTextPanel (String text) {
JPanel panel = new JPanel(false);
JLabel filler = new JLabel(text);
filler.setHorizontalAlignment(JLabel.CENTER);
panel.setLayout (new GridLayout(1,1));
panel.add(filler);
return panel;
}
private static void createAndShowGUI() {
JFrame frame = new JFrame ("ribbonMenu");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new ribbonMenu(), BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
UIManager.put("swing.boldmetal", Boolean.FALSE);
createAndShowGUI();
}
});
}
}
Спасибо
Подробнее здесь:
https://stackoverflow.com/questions/150 ... to-jpanels
1764540070
Anonymous
У меня есть ряд вкладок, но я хочу затем добавить дополнительные вкладки в отображаемую панель, как если бы копировало ленточное меню. Я примерно знаю, что нужно сделать (изменить тип возвращаемого значения функции makeTextPanel), но не знаю, как это сделать, поэтому буду благодарен за любую помощь. [code]package components; import javax.swing.JTabbedPane; import javax.swing.ImageIcon; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JFrame; import javax.swing.JComponent; import javax.swing.SwingUtilities; import javax.swing.UIManager; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.GridLayout; import java.awt.event.KeyEvent; public class ribbonMenu extends JPanel { public ribbonMenu() { super(new GridLayout(1,1)); JTabbedPane tabbedPane = new JTabbedPane(); JTabbedPane tabbedPane2 = new JTabbedPane(); JComponent panel1 = makeTextPanel("Panel #1"); tabbedPane.addTab("Tab 1", panel1); panel1.setPreferredSize(new Dimension(600, 400)); JComponent panel2 = makeTextPanel("Panel #2"); tabbedPane.addTab("Tab 2", panel2); JComponent panel3 = makeTextPanel("Panel #3"); tabbedPane.addTab("Tab 3", panel3); add(tabbedPane); tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT); } protected JComponent makeTextPanel (String text) { JPanel panel = new JPanel(false); JLabel filler = new JLabel(text); filler.setHorizontalAlignment(JLabel.CENTER); panel.setLayout (new GridLayout(1,1)); panel.add(filler); return panel; } private static void createAndShowGUI() { JFrame frame = new JFrame ("ribbonMenu"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.add(new ribbonMenu(), BorderLayout.CENTER); frame.pack(); frame.setVisible(true); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { UIManager.put("swing.boldmetal", Boolean.FALSE); createAndShowGUI(); } }); } } [/code] Спасибо Подробнее здесь: [url]https://stackoverflow.com/questions/15032959/java-swing-add-tabs-into-jpanels[/url]