В прошлой теме "Отображение собственного компонента на панели jPanel" вопрос решился. (Хотя почему же тогда во фрейме компонент нормально отображался?) Не решается более сложный случай, когда я объект размещаю на JPanel jPanel2, а этот в свою очередь на JTabbedPane ( вторая закладка ) , который уже помещается во фрэйм. Объект и все с ним связанное помечается жирным шрифтом кирпичного цвета.
| Код | import java.awt.*; import javax.swing.*;
class MyComponent extends JComponent { public MyComponent() { super(); setPreferredSize(new Dimension(200, 200)); }
public void paintComonent(Graphics g) { super.paintComponent(g); g.drawRect(10,10,100,100); } }
class NullLayoutTest extends JFrame { public void StartButtonActionPerformed(java.awt.event.ActionEvent evt) { jTable1.setValueAt("powerON",0,0); jTable1.repaint(); }
public NullLayoutTest() { MyComponent myComponent = new MyComponent();
getContentPane().setLayout(null); /* инициализирую Лэйоут */
JPanel jPanel1 = new javax.swing.JPanel(); /* создаю панель на первую станицу */ jPanel1.setLayout(null); JPanel jPanel2 = new javax.swing.JPanel(); /* создаю панель на вторую станицу */ jPanel2.setLayout(null);
/*------------------------БЛОК ДЛЯ КНОПКИ---------------------------------------+ */ JButton StartButton = new JButton("Считать"); /* создаю кнопку | */ StartButton.setBounds(10, 30, 90, 25); /* задаю ей координаты и размеры | */
StartButton.addActionListener(new java.awt.event.ActionListener() /* внимание!!!| */ { /* ОПИСЫВАЕМ ОБРАБОТЧИК НАЖАТОЙ КНОПКИ | */ public void actionPerformed(java.awt.event.ActionEvent evt) { StartButtonActionPerformed(evt); //jTable1.setValueAt("1",0,0); //jTable1.repaint(); jTextArea1.setText("Nole nocere!!!!!"); } } );
jPanel1.add(StartButton); /* добавляю к панели | */ /*------------------------------------------------------------------------------+ */
/*-----------------------БЛОК ДЛЯ ОБЛАСТИ ТЕКСТА--------------------------------+ */ jTextArea1 = new javax.swing.JTextArea(); jTextArea1.setBounds(190,70,160,160); JScrollPane TextAggregate = new JScrollPane(jTextArea1); TextAggregate.setBounds(190,70,160,160); jPanel1.add(TextAggregate); /* | */ /*------------------------------------------------------------------------------+ */
/*-----------------------БЛОК ДЛЯ ТАБЛИЦЫ---------------------------------------+ */ jTable1 = new javax.swing.JTable(); /* таблица | */ jTable1.setBounds(10,70,100,160); jTable1.setModel(new javax.swing.table.DefaultTableModel( new Object [100][2] /* { { "0", "0" },{ "1", "1" } } | */ , new String [] { "Дата1", "Title 2" } ) ); jTable1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); /*Этo мы создали для прокрутки, поместили туда нашу таблицу | */ JScrollPane tableAggregate = new JScrollPane(jTable1); tableAggregate.setBounds(10,70,170,160); jPanel1.add(tableAggregate); /* а это на панель | */ /*------------------------------------------------------------------------------+ */
System.out.println("myComponent " + myComponent.getPreferredSize()); jPanel2.add(myComponent); System.out.println("jPanel2 " + jPanel2.getPreferredSize()); System.out.println("jPanel1 " + jPanel1.getPreferredSize());
/*=================================================================================*/ JTabbedPane jTabbedPane1 = new javax.swing.JTabbedPane(); /* */ jTabbedPane1.setBounds(10, 30, 380, 300); /* координаты и размеры */
jTabbedPane1.addTab("Data", jPanel1); /* инициализирую первый лист и помещаю туда панель с кнопкой */ jTabbedPane1.addTab("Дата", jPanel2); /* инициализирую первый лист и помещаю туда панель с кнопкой */ getContentPane().add(jTabbedPane1); /* саму же книгу помещаю во фрейм*/
setBounds(100,100,400,400); /* размеры и координаты фрейма */
//pack(); }
public static void main(String[] args) { NullLayoutTest flt = new NullLayoutTest(); flt.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //flt.setUndecorated(true); flt.setVisible(true); } public javax.swing.JTable jTable1; public JTextArea jTextArea1; }
|
Это сообщение отредактировал(а) powerOn - 24.4.2008, 19:34
|