还是不明白,为什么表头出不来?
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);
}
}
找到一个例子,但还是搞不定
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);
现在搞定了
继续问问题
用了一个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);
}
} 问题就在于JList有两个Method, getValues()和getValue(),你用了第一个,返回的是一个选择数组,用第二个返回的就是你所选的单个属性了。
Object selection=list.getSelectedValue();
另外你下面的那半个for循环可以去掉了。 谢了,楼上的
这样好像也行
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;
}
还有,换成树,就不知道怎么弄了
我继续贴出来问吧
想要用树上节点的点击控制表中的数据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);
}
} 你的程序结构太乱,无从下手。对于JTable的数据偶建议你使用JTable Model , 具体你可以看看偶列的那个例子,因为你的data数据多数雷同,并不需要反复使用。另外把JTree的初始化放到Konstruktrur里面也让偶十分费解,你既没有Frame又没有Window,窗口是如何初始化的? 最初由 daxia108 发布
你既没有Frame又没有Window,窗口是如何初始化的?
粗略的看了一下,他好像直接都放在panel里了
页:
[1]