Если вы хотите разделить свой код, который создает графический интерфейс, на несколько классов, вы можете использовать этот подход:
Это будет ваш основной класс, который будет содержать JTabbedPane
:
import javax.swing.JFrame;
import javax.swing.JTabbedPane;
import javax.swing.SwingUtilities;
public class Main {
JFrame frame = new JFrame();
JTabbedPane tabbedPane = new JTabbedPane();
FirstPanel fp = new FirstPanel();
SecondPanel sp = new SecondPanel();
public Main() {
tabbedPane.add("First", fp);
tabbedPane.add("Second", sp);
frame.getContentPane().add(tabbedPane);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.setSize(640, 480);
// frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new Main();
}
});
}
}
Это будет ваш второй класс, который расширяет JPanel
или какой-либо другой тип контейнера:
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import javax.swing.JPanel;
public class FirstPanel extends JPanel{
public void paintComponent(Graphics g){
g.setColor(Color.BLACK);
g.setFont(new Font("Verdana",Font.BOLD,16));
g.drawString("Hello there", 20, 20);
}
}
Пример третьего класса, который также расширяет JPanel
:
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class SecondPanel extends JPanel{
JButton button = new JButton("Click me!");
public SecondPanel() {
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
JOptionPane.showMessageDialog(null, "You just clicked button");
}
});
add(button);
}
public void paintComponent(Graphics g){
g.setColor(Color.BLACK);
g.setFont(new Font("Verdana",Font.BOLD,16));
g.drawString("Hello there again!", 20, 20);
}
}
Снимок экрана:
![введите здесь описание изображения](https://i.stack.imgur.com/bsIyF.jpg)
ИЗМЕНИТЬ:
Кроме того, вместо того, чтобы расширять классы с помощью JPanel
, было бы разумно создать в этом классе только метод, который возвращает настроенный JPanel
. Таким образом, ваш класс остается «открытым» для наследования.
person
Branislav Lazic
schedule
27.11.2012