Tại sao làm phiền người dùng với ba Dialog Boxes khác nhau để nhập điều, tại sao không làm tất cả điều này chỉ trong một bước trong một Hộp thoại duy nhất và tiết kiệm thời gian, thay vì kiểm tra sự kiên nhẫn của NGƯỜI DÙNG?
Bạn có thể thêm mọi thứ vào một Hộp thoại bằng cách đặt tất cả các trường trên JPanel
và sau đó thêm JPanel
này vào số JOptionPane
. Mã bên dưới có thể làm rõ thêm một chút:
import java.awt.*;
import java.util.*;
import javax.swing.*;
public class AverageExample
{
private double[] marks;
private JTextField[] marksField;
private JLabel resultLabel;
public AverageExample()
{
marks = new double[3];
marksField = new JTextField[3];
marksField[0] = new JTextField(10);
marksField[1] = new JTextField(10);
marksField[2] = new JTextField(10);
}
private void displayGUI()
{
int selection = JOptionPane.showConfirmDialog(
null, getPanel(), "Input Form : "
, JOptionPane.OK_CANCEL_OPTION
, JOptionPane.PLAIN_MESSAGE);
if (selection == JOptionPane.OK_OPTION)
{
for (int i = 0; i < 3; i++)
{
marks[i] = Double.valueOf(marksField[i].getText());
}
Arrays.sort(marks);
double average = (marks[1] + marks[2])/2.0;
JOptionPane.showMessageDialog(null
, "Average is : " + Double.toString(average)
, "Average : "
, JOptionPane.PLAIN_MESSAGE);
}
else if (selection == JOptionPane.CANCEL_OPTION)
{
// Do something here.
}
}
private JPanel getPanel()
{
JPanel basePanel = new JPanel();
//basePanel.setLayout(new BorderLayout(5, 5));
basePanel.setOpaque(true);
basePanel.setBackground(Color.BLUE.darker());
JPanel centerPanel = new JPanel();
centerPanel.setLayout(new GridLayout(3, 2, 5, 5));
centerPanel.setBorder(
BorderFactory.createEmptyBorder(5, 5, 5, 5));
centerPanel.setOpaque(true);
centerPanel.setBackground(Color.WHITE);
JLabel mLabel1 = new JLabel("Enter Marks 1 : ");
JLabel mLabel2 = new JLabel("Enter Marks 2 : ");
JLabel mLabel3 = new JLabel("Enter Marks 3 : ");
centerPanel.add(mLabel1);
centerPanel.add(marksField[0]);
centerPanel.add(mLabel2);
centerPanel.add(marksField[1]);
centerPanel.add(mLabel3);
centerPanel.add(marksField[2]);
basePanel.add(centerPanel);
return basePanel;
}
public static void main(String... args)
{
SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run()
{
new AverageExample().displayGUI();
}
});
}
}
Nguồn
2012-10-10 03:52:10
Xem [những mẹo này] (http://home.earthlink.net/~patricia_shanahan/beginner.html) để bạn bắt đầu - nếu không có giải pháp, thì tại ít nhất là đến giai đoạn hỏi câu hỏi * cụ thể *. –
100.000 lượt xem cho câu hỏi/câu trả lời này. Và hôm nay tôi đã sử dụng nó. Tuy nhiên, nó đóng cửa để được địa phương hóa quá. Haha được thôi. –
FYI - Câu hỏi này là kết quả # 2 khi tìm kiếm kết hợp 'cảnh báo đầu vào java swing' –