Files
corejava/corejava第9版/v2ch06/splitPane/SplitPaneFrame.java
T
2019-05-22 19:49:35 +08:00

56 lines
1.8 KiB
Java

package splitPane;
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
/**
* This frame consists of two nested split panes to demonstrate planet images and data.
*/
class SplitPaneFrame extends JFrame
{
private static final int DEFAULT_WIDTH = 300;
private static final int DEFAULT_HEIGHT = 300;
private Planet[] planets = { new Planet("Mercury", 2440, 0), new Planet("Venus", 6052, 0),
new Planet("Earth", 6378, 1), new Planet("Mars", 3397, 2),
new Planet("Jupiter", 71492, 16), new Planet("Saturn", 60268, 18),
new Planet("Uranus", 25559, 17), new Planet("Neptune", 24766, 8),
new Planet("Pluto", 1137, 1), };
public SplitPaneFrame()
{
setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
// set up components for planet names, images, descriptions
final JList<Planet> planetList = new JList<>(planets);
final JLabel planetImage = new JLabel();
final JTextArea planetDescription = new JTextArea();
planetList.addListSelectionListener(new ListSelectionListener()
{
public void valueChanged(ListSelectionEvent event)
{
Planet value = (Planet) planetList.getSelectedValue();
// update image and description
planetImage.setIcon(value.getImage());
planetDescription.setText(value.getDescription());
}
});
// set up split panes
JSplitPane innerPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, planetList, planetImage);
innerPane.setContinuousLayout(true);
innerPane.setOneTouchExpandable(true);
JSplitPane outerPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, innerPane,
planetDescription);
add(outerPane, BorderLayout.CENTER);
}
}