ZICK 发表于 2004-6-11 15:37

还是不明白,为什么表头出不来?

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.tree.*;
import javax.swing.border.*;

public class RaumbAnz extends JPanel{

        public RaumbAnz() {

                MutableTreeNode root = new DefaultMutableTreeNode("Raums");
                MutableTreeNode beams = new DefaultMutableTreeNode("Beams");
                MutableTreeNode gears = new DefaultMutableTreeNode("Gears");
                root.insert(beams, 0);
                root.insert(gears, 1);
                beams.insert(new DefaultMutableTreeNode("1*4 black"), 0);
                beams.insert(new DefaultMutableTreeNode("1*6 black"), 1);
                beams.insert(new DefaultMutableTreeNode("1*8 black"), 2);
                beams.insert(new DefaultMutableTreeNode("1*12 black"), 3);
                gears.insert(new DefaultMutableTreeNode("8t"), 0);
                gears.insert(new DefaultMutableTreeNode("24t"), 1);
                gears.insert(new DefaultMutableTreeNode("40t"), 2);
                gears.insert(new DefaultMutableTreeNode("worm"), 3);
                gears.insert(new DefaultMutableTreeNode("crown"), 4);
                final DefaultTreeModel model = new DefaultTreeModel (root);
                final JTree tree = new JTree(model);
                String[] headings =
                   new String[] {"RAUM","Hot?","Origin","Destintion","ShipDate","Weight" };
                Object[][] data = new Object[][] {
                   { "100420",Boolean.FALSE,"Des Moines IA","Spokane WA","02/06/2000",new Float(450)},
                   { "202147",Boolean.TRUE,"Basking Ridge NJ","Princeton NJ","05/20/2000",new Float(1250)},
                   { "450877",Boolean.TRUE,"St. Paul MN","Austin TX","03/20/2000",
                           new Float(1745)},
                   { "101891",Boolean.FALSE,"Boston MA","Albany NY","04/04/2000",
                           new Float(88)},
                };
                this.setLayout(null);
                JTable table = new JTable( data , headings );
                table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);      
                JPanel tablePanel = new JPanel();
                tablePanel.setLayout(null);
                tablePanel.setBorder(BorderFactory.createTitledBorder(null,
                                                  "table:",
                                          TitledBorder.DEFAULT_JUSTIFICATION,
                                          TitledBorder.DEFAULT_POSITION,
                                          new Font("Dialog", Font.PLAIN, 11),
                                                          Color.black));
                tablePanel.setBounds(new Rectangle(410, 10, 400, 400));
                table.setBounds(new Rectangle(30, 30, 300, 200));
                JPanel treePanel = new JPanel();
                treePanel.setBounds(new Rectangle(10, 10, 400, 400));
                tree.setBounds(new Rectangle(30, 30, 300, 200));
                treePanel.setBorder(BorderFactory.createTitledBorder(null,
                                          "Tree:",
                                  TitledBorder.DEFAULT_JUSTIFICATION,
                                  TitledBorder.DEFAULT_POSITION,
                                          new Font("Dialog", Font.PLAIN, 11),
                                                          Color.black));
                add(treePanel);
                add(tablePanel);
                tablePanel.add(table);
                treePanel.add(tree);
        }
}

ZICK 发表于 2004-6-19 03:57

找到一个例子,但还是搞不定

int rows = 10;
    int cols = 5;
    JTable table = new JTable(rows, cols);
    JTableHeader header = table.getTableHeader();
   
    container.setLayout(new BorderLayout());
   
    // Add header in NORTH slot
    container.add(header, BorderLayout.NORTH);
   
    // Add table itself to CENTER slot
    container.add(table, BorderLayout.CENTER);

现在搞定了

ZICK 发表于 2004-6-22 14:11

继续问问题

用了一个JList和一个JTextField,想要达到的效果是当在list中选择不同的时候,对应textfield文字也相应改变。
作成这这个样子,没达到效果,那位大大帮我看一下啊,谢了。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Lister {

public static void main(String[] args) {

JFrame frame=new JFrame("Lister v1.0");
final JTextField tf=new JTextField("");
String [] items = { "ID:1- W011","ID:2- W114","ID:3- N417" };

//创建一个列表框
final JList list=new JList(items);
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
list.addMouseListener(new MouseListener(){
public void mouseClicked(MouseEvent e){
Object[] selection=list.getSelectedValues();
if (selection.equals("ID:1- W011")) { //问题在这儿!!!!!!
System.out.print("ID:1- W011");
tf.setText("ID:1- W011");}
if (selection.equals("ID:2- W114")) {
System.out.print("ID:2- W114");
tf.setText("ID:2- W114");}
if (selection.equals("ID:3- N417")) {
System.out.print("ID:3- N417");
tf.setText("ID:3- N417");}
}
public void mousePressed(java.awt.event.MouseEvent e) {}
public void mouseReleased(java.awt.event.MouseEvent e) {}
public void mouseEntered(java.awt.event.MouseEvent e) {}
public void mouseExited(java.awt.event.MouseEvent e) {}

});
JButton button = new JButton("Per favore");
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
Object[] selection=list.getSelectedValues();
System.out.print("-----");
for (int i=0;i<selection.length;i++)
System.out.println(selection);
tf.setText("try more");
}
});

//将控制交给内容格

Container c = frame.getContentPane();
JPanel comboPanel = new JPanel();
JPanel cowboPanel = new JPanel();
comboPanel.setBounds(0, 0, 300, 500);
cowboPanel.setBounds(300, 10, 300, 500);
cowboPanel.setLayout(null);
tf.setBounds(100, 100, 100, 30);
button.setBounds(200, 500, 100, 50);
comboPanel.add(new JScrollPane(list));
cowboPanel.add(tf);
c.setLayout(null);
c.add(comboPanel);
c.add(cowboPanel);
c.add(button);

frame.setSize(800,600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}

daxia108 发表于 2004-6-22 18:33

问题就在于JList有两个Method, getValues()和getValue(),你用了第一个,返回的是一个选择数组,用第二个返回的就是你所选的单个属性了。

Object selection=list.getSelectedValue();

另外你下面的那半个for循环可以去掉了。

ZICK 发表于 2004-6-23 14:15

谢了,楼上的

这样好像也行

                     int i=list.getSelectedIndex();
                        switch(i)
                        {
                       case 0:
                        tf.setText("ID:1- W011");
                        break;
                              case 1:
                        tf.setText("ID:2- W114");
                        break;
                        case 2:
                        tf.setText("ID:3- N417");
                        break;
                        }

还有,换成树,就不知道怎么弄了

ZICK 发表于 2004-6-23 14:25

我继续贴出来问吧

想要用树上节点的点击控制表中的数据


import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.table.*;
import javax.swing.tree.*;
import javax.swing.border.*;
public class RaumbAnz extends JPanel{
        JPanel jPanel1 = new JPanel();
        JPanel jPanel2 = new JPanel();
        JTextArea jTextArea = new JTextArea();

        //                创建一些表格数据
        String[] headings =
           new String[] {"","Montag","Dienstag","Mittwoch","Donnerstag","Freitag"};
        Object[][] data = new Object[][] {
           { "08:00-19:00","","","","",""},
           { "08:15-09:45","","","","",""},
           { "10:00-11:30","","","","",""},
           { "11:45-13:15","","","","",""},
           { "13:15-14:15","","","","",""},
           { "14:15-15:45","","","","",""},
           { "16:00-17:30","","","","",""},
           { "17:45-19:15","","","","",""},
           { "19:30-21:00","","","","",""},
           };
        Object[][] data1 = new Object[][] {
           { "08:00-19:00","Uebung","Vorlesung","","",""},
           { "08:15-09:45","","","","",""},
           { "10:00-11:30","","","","",""},
           { "11:45-13:15","","","","",""},
           { "13:15-14:15","","","","",""},
           { "14:15-15:45","","","","",""},
           { "16:00-17:30","","","","",""},
           { "17:45-19:15","","","","",""},
           { "19:30-21:00","","","","",""},
           };
        Object[][] data2 = new Object[][] {
           { "08:00-19:00","","","","",""},
           { "08:15-09:45","","Uebung","","",""},
           { "10:00-11:30","","","","",""},
           { "11:45-13:15","","","","",""},
           { "13:15-14:15","","","","",""},
           { "14:15-15:45","","","","",""},
           { "16:00-17:30","","","","",""},
           { "17:45-19:15","","","","",""},
           { "19:30-21:00","","","","",""},
           };
        Object[][] data3 = new Object[][] {
           { "08:00-19:00","","","","",""},
           { "08:15-09:45","","","","",""},
           { "10:00-11:30","","","Uebung","",""},
           { "11:45-13:15","","","","",""},
           { "13:15-14:15","","","","",""},
           { "14:15-15:45","","","","",""},
           { "16:00-17:30","","","","",""},
           { "17:45-19:15","","","","",""},
           { "19:30-21:00","","","","",""},
           };
        //创建数据模型和JTable
        JTable table = new JTable( data , headings );   
        JTableHeader header = table.getTableHeader();
       
        public static void main(String[] args) {
        }

        public RaumbAnz() {
                //                创建节点的层次结构
                MutableTreeNode root = new DefaultMutableTreeNode("Raum");
                MutableTreeNode ws1 = new DefaultMutableTreeNode("Wolframstr.32");
                MutableTreeNode ws2 = new DefaultMutableTreeNode("Wolframstr.34");
                root.insert(ws1, 0);
                root.insert(ws2, 1);
                ws1.insert(new DefaultMutableTreeNode("W011"), 0);
                ws1.insert(new DefaultMutableTreeNode("W114"), 1);
                ws2.insert(new DefaultMutableTreeNode("N417"), 0);

                // 创建 JTree
                final DefaultTreeModel model = new DefaultTreeModel (root);
                final JTree tree = new JTree(model);
                jPanel1.add(tree);
                tree.setBounds(new Rectangle(20, 20, 160, 520));
          
                //tree.setSelectionModel(TreeSelectionModel.SINGLE_TREE_SELECTION);
                                    //这一句不知道该怎么加进去
                /*tree.addMouseListener(new MouseListener(){
                  public void mouseClicked(MouseEvent e){
                   int i=tree.getSelectionCount();
                   switch(i)
                   {
                   case 0:
         table.getColumn(data1);
                   break;
                   case 1:
                   table.getColumn(data2);
                   break;
                   case 2:
                   table.getColumn(data3);
                   break;
                   }
                  }
                  public void mousePressed(java.awt.event.MouseEvent e) {}
                  public void mouseReleased(java.awt.event.MouseEvent e) {}
                  public void mouseEntered(java.awt.event.MouseEvent e) {}
                  public void mouseExited(java.awt.event.MouseEvent e) {}
               
                });*/
                //具体控制也达不到效果
          try {
                init();
          }
          catch(Exception e) {
                e.printStackTrace();
          }
        }
        private void init() throws Exception {
                this.setLayout(null);
                jPanel1.setBorder(BorderFactory.createTitledBorder(null,
                                                                                          "Auswahl des Raums:",
                                                                                          TitledBorder.DEFAULT_JUSTIFICATION,
                                                                                          TitledBorder.DEFAULT_POSITION,
                                                                                          new Font("Dialog", Font.PLAIN, 12),
                                                                                          Color.black));
                jPanel1.setBounds(new Rectangle(10, 10, 200, 550));
                jPanel1.setLayout(null);
                jPanel2.setBorder(BorderFactory.createTitledBorder(null,
                                                                                          "Hier koennen Sie sich die Belegung aller Raeume anzeigen lassen:",
                                                                                          TitledBorder.DEFAULT_JUSTIFICATION,
                                                                                          TitledBorder.DEFAULT_POSITION,
                                                                                          new Font("Dialog", Font.PLAIN, 12),
                                                                                          Color.black));
                jPanel2.setBounds(new Rectangle(250, 10, 650, 550));
                jPanel2.setLayout(null);
                header.setBounds(new Rectangle(20, 20, 610, 30));
                table.setBounds(new Rectangle(20, 50, 610, 350));
                table.setEnabled(false);
                table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
                jTextArea.setBounds(new Rectangle(20,410,610,130));

                this.add(jPanel1);
                this.add(jPanel2);
                jPanel2.add(header);
                jPanel2.add(table);
                jPanel2.add(jTextArea);

          }
       
}

daxia108 发表于 2004-6-23 17:29

你的程序结构太乱,无从下手。对于JTable的数据偶建议你使用JTable Model , 具体你可以看看偶列的那个例子,因为你的data数据多数雷同,并不需要反复使用。另外把JTree的初始化放到Konstruktrur里面也让偶十分费解,你既没有Frame又没有Window,窗口是如何初始化的?

leotao 发表于 2004-7-6 12:02

最初由 daxia108 发布
你既没有Frame又没有Window,窗口是如何初始化的?


粗略的看了一下,他好像直接都放在panel里了
页: [1]
查看完整版本: 关于java的Praktische Arbeit