就是这个窗口我想把右边的按钮挪到默认下面,然后点击按钮内容会在右边显示而不是弹出一个窗口
求大能说详细点或者能直接给个代码小弟谢过了我写的这个窗口代码如下:package com.hz.chang.install;import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.ArrayList;
import java.util.List;import javax.swing.JCheckBox;
import javax.swing.JOptionPane;
import javax.swing.JPanel;import org.apache.commons.io.FileUtils;import com.hz.chang.DefaultConstants;
import com.hz.chang.extentions.ui.JOptionPaneI;
import com.hz.core.AuthorComponentMain;
import com.hzgk.pdf.util.NewPDFJFrame;public class SelectPdfModelJFrame extends javax.swing.JPanel {
private static final long serialVersionUID = 1L; private List<JCheckBox> checkList = new ArrayList<JCheckBox>();
private JPanel jPanel1;
private List<JCheckBox> list = new ArrayList<JCheckBox>();
private static SelectPdfModelJFrame frame; public SelectPdfModelJFrame() {
frame = this;
initComponents();
} private void initComponents() {
addNewBtn = new javax.swing.JButton();
delBtn = new javax.swing.JButton();
updateBtn = new javax.swing.JButton();
confirmBtn = new javax.swing.JButton();
cancleBtn = new javax.swing.JButton();
jScrollPane1 = new javax.swing.JScrollPane(); initPanel();// 获取文件并以复选框画在panel上
jScrollPane1.setMaximumSize(new java.awt.Dimension(1000, 300)); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(
layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 234, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(cancleBtn, javax.swing.GroupLayout.DEFAULT_SIZE, 69, Short.MAX_VALUE)
.addComponent(confirmBtn, javax.swing.GroupLayout.DEFAULT_SIZE, 69, Short.MAX_VALUE)
.addComponent(updateBtn, javax.swing.GroupLayout.DEFAULT_SIZE, 69, Short.MAX_VALUE)
.addComponent(delBtn, javax.swing.GroupLayout.DEFAULT_SIZE, 69, Short.MAX_VALUE)
.addComponent(addNewBtn, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)).addContainerGap()));
layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(
layout.createSequentialGroup()
.addContainerGap()
.addGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 272, Short.MAX_VALUE)
.addGroup(
layout.createSequentialGroup().addComponent(addNewBtn)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(delBtn)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(updateBtn)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(confirmBtn)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(cancleBtn))).addContainerGap())); jScrollPane1.getAccessibleContext().setAccessibleName(""); addNewBtn.setText("自定义");
addNewBtn.addActionListener(new ActionListener() { @Override
public void actionPerformed(ActionEvent e) {
// new NewPDFJFrame(frame, true, null).setVisible(true);
}
}); delBtn.setText("删除");
delBtn.addActionListener(new ActionListener() { @Override
public void actionPerformed(ActionEvent e) {
addList();
if (list.size() == 0) {
JOptionPaneI.showMsg("未选择文件");
} else {
int i = JOptionPane.showConfirmDialog(null, "确认删除", "模版删除", JOptionPane.YES_NO_OPTION);
if (i == JOptionPane.YES_OPTION) {
for (JCheckBox jCheckBox : list) {
if (!jCheckBox.getText().equals("默认")) {
String modelPath = DefaultConstants.pdfModelPath + jCheckBox.getText() + ".xml";
new File(modelPath).delete();// 删除模版配置文件
checkList.remove(jCheckBox);
} else {
JOptionPaneI.showMsg("默认模板不能删除");
}
}
} else {
checkList.removeAll(checkList);
}
}
list.clear();
initPanel();
repaint();
} }); updateBtn.setText("修改");
updateBtn.addActionListener(new ActionListener() { @Override
public void actionPerformed(ActionEvent e) {
addList();
if (list.size() == 0) {
JOptionPaneI.showMsg("未选择文件");
} else if (list.size() == 1) {
// new NewPDFJFrame(frame, false, list.get(0).getText()).setVisible(true);
} else {
JOptionPaneI.showMsg("只能选择一个文件");
}
list.clear();
}
}); confirmBtn.setText("确定");
confirmBtn.addActionListener(new ActionListener() { @Override
public void actionPerformed(ActionEvent e) {
addList();
if (list.size() == 0) {
JOptionPaneI.showMsg("未选择文件");
} else if (list.size() == 1) {
// 改名写入config.xml
try {
File file = new File(DefaultConstants.pdfModelPath + list.get(0).getText() + ".xml");
File destFile = new File(DefaultConstants.pdfConfPath);
if (!file.exists()) {
FileUtils.copyFile(destFile, file);
}
FileUtils.copyFile(file, destFile);
} catch (Exception e1) {
e1.printStackTrace();
}
} else {
JOptionPaneI.showMsg("只能选择一个文件");
list.clear();
}
} }); cancleBtn.setText("取消");
cancleBtn.addActionListener(new ActionListener() { @Override
public void actionPerformed(ActionEvent e) {
}
}); } // 判断是否选中并放入集合
private void addList() {
for (JCheckBox jCheckBox : checkList) {
if (jCheckBox != null && jCheckBox.isSelected()) {
list.add(jCheckBox);
}
}
} public void initPanel() {
checkList.clear();
list.clear();
checkList = new ArrayList<JCheckBox>();
list = new ArrayList<JCheckBox>();
jPanel1 = new JPanel();
JCheckBox defaultBox = new JCheckBox("默认");
// defaultBox.setSelected(true);
jPanel1.add(defaultBox);
checkList.add(defaultBox);
List<String> pdfModel = getPDFModel();
jPanel1.setLayout(new GridLayout(pdfModel.size() < 10 ? 10 : pdfModel.size() + 2, 1));
if (pdfModel != null && pdfModel.size() != 0) {
for (String string : pdfModel) {
JCheckBox jCheckBox = new JCheckBox(string.substring(0, string.lastIndexOf(".")));
checkList.add(jCheckBox);
jPanel1.add(jCheckBox);
}
}
jScrollPane1.setViewportView(jPanel1);
} private javax.swing.JButton addNewBtn;
private javax.swing.JButton cancleBtn;
private javax.swing.JButton confirmBtn;
private javax.swing.JButton delBtn;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JButton updateBtn; // 获取配置文件
private List<String> getPDFModel() {
List<String> PdfModel = new ArrayList<String>();
File file = new File(DefaultConstants.pdfModelPath);
File[] listFiles = file.listFiles();
// 冒泡排序
for (int i = 0; i < listFiles.length; i++) {
for (int j = 0; j < listFiles.length - 1 - i; j++) {
String string = listFiles[j].getName()
.substring(listFiles[j].getName().lastIndexOf("_") + 1, listFiles[j].getName().lastIndexOf("."));
String string2 = listFiles[j + 1].getName().substring(listFiles[j + 1].getName().lastIndexOf("_") + 1,
listFiles[j + 1].getName().lastIndexOf("."));
if (!string.equals("默认") && !string2.equals("默认")) {
if (Long.valueOf(string) > Long.valueOf(string2)) {
file = listFiles[j];
listFiles[j] = listFiles[j + 1];
listFiles[j + 1] = file;
}
}
}
}
if (listFiles != null && listFiles.length != 0) {
for (File file2 : listFiles) {
if (!file2.getName().equals("默认.xml")) {
PdfModel.add(file2.getName());
}
}
}
return PdfModel;
}}
吧按钮全都放到一个panel(panel1)里 你要在右边显示东西 所以显示东西的地方应该也些一个panel(panel2) 并且大小固定下 然后就是那个有默认 checkbox的Panel(panel3) 把这三个panel布局布局方法有很多你可以继续用gridlayout 但你自己看下 我没看你代码
我在这给你大概说个我觉得简单的 用borderLayout
panel1放到 borderLayout.south位置
panel2放到 borderLayout.center位置
panel3放到 borderLayout.west位置
具体每个panel内部怎么布局 不知道你的需求 这个就得在再您的要求了
然后我就是想问问就是按你说的,我如何才能实现panel1内的按钮事件点击后显示在panel2内呢。。
然后我就是想问问就是按你说的,我如何才能实现panel1内的按钮事件点击后显示在panel2内呢。。可以啊 你的这些都在一个Jfream里啊 给panel2设置一个名字 用setname()这个方法 在button的事件里获得jframe里的控件 遍历下 先过滤下 看看是不是instanceof JPanel 再每个getName() 看是不是刚才设置的名字 是的话 你就可以拿到这个panel2了 然后相对这个panel2 怎样都行
然后我就是想问问就是按你说的,我如何才能实现panel1内的按钮事件点击后显示在panel2内呢。。可以啊 你的这些都在一个Jfream里啊 给panel2设置一个名字 用setname()这个方法 在button的事件里获得jframe里的控件 遍历下 先过滤下 看看是不是instanceof JPanel 再每个getName() 看是不是刚才设置的名字 是的话 你就可以拿到这个panel2了 然后相对这个panel2 怎样都行
私信你了,有些地方还不是很明白,大大能不能留个联系方式
然后我就是想问问就是按你说的,我如何才能实现panel1内的按钮事件点击后显示在panel2内呢。。可以啊 你的这些都在一个Jfream里啊 给panel2设置一个名字 用setname()这个方法 在button的事件里获得jframe里的控件 遍历下 先过滤下 看看是不是instanceof JPanel 再每个getName() 看是不是刚才设置的名字 是的话 你就可以拿到这个panel2了 然后相对这个panel2 怎样都行
私信你了,有些地方还不是很明白,大大能不能留个联系方式
哎。。 等会把 给你写代码
然后我就是想问问就是按你说的,我如何才能实现panel1内的按钮事件点击后显示在panel2内呢。。可以啊 你的这些都在一个Jfream里啊 给panel2设置一个名字 用setname()这个方法 在button的事件里获得jframe里的控件 遍历下 先过滤下 看看是不是instanceof JPanel 再每个getName() 看是不是刚才设置的名字 是的话 你就可以拿到这个panel2了 然后相对这个panel2 怎样都行
私信你了,有些地方还不是很明白,大大能不能留个联系方式
package org.ip.view;import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.border.LineBorder;public class Demo extends JFrame{
public Demo() {
GridBagLayout layout = new GridBagLayout();
GridBagConstraints s= new GridBagConstraints();
this.setBackground(Color.BLACK);
this.setPreferredSize(new Dimension(510, 700));
this.setMinimumSize(new Dimension(510, 700));
this.setDefaultCloseOperation(3);
this.setLocationRelativeTo(null);
this.setVisible(true);
JPanel panel1 = this.createSouthPanel();
JPanel panel2 = this.createCenterPanel();
JPanel panel3 = this.creatWestPanel();
s.fill = GridBagConstraints.BOTH;
s.gridwidth = 1;
s.gridheight = 1;
s.gridx = 0;
s.gridy = 0;
layout.setConstraints(panel3, s);
s.fill = GridBagConstraints.BOTH;
s.gridwidth = 1;
s.gridheight = 1;
s.gridx = 1;
s.gridy = 0;
layout.setConstraints(panel2, s);
s.fill = GridBagConstraints.BOTH;
s.gridwidth = 2;
s.gridheight = 1;
s.gridx = 0;
s.gridy = 1;
layout.setConstraints(panel1, s);
this.setLayout(layout);
this.add(panel1);
this.add(panel2);
this.add(panel3);
}
private JPanel creatWestPanel() {
JPanel panel = new JPanel();
panel.setMinimumSize(new Dimension(250, 600));
panel.setPreferredSize(new Dimension(250, 600));
panel.setLayout(new BorderLayout());
panel.setBackground(Color.darkGray);
panel.setVisible(true);
panel.setBorder(BorderFactory.createCompoundBorder(new EmptyBorder(5, 5, 5, 5), new LineBorder(Color.green)));
JLabel label = new JLabel("我是默认Panel");
label.setForeground(Color.RED);
panel.add(label); return panel;
}
private JPanel createSouthPanel() {
JPanel panel = new JPanel();
panel.setMinimumSize(new Dimension(500, 100));
panel.setPreferredSize(new Dimension(500, 100));
panel.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 20));
panel.setBackground(Color.GRAY); JButton button1 = new JButton("自定义");
JButton button2 = new JButton("删除");
JButton button3 = new JButton("修改");
JButton button4 = new JButton("确定");
JButton button5 = new JButton("取消");
button1.addMouseListener(new ButtonAction(this));
panel.add(button1);
panel.add(button2);
panel.add(button3);
panel.add(button4);
panel.add(button5);
return panel; }
private JPanel createCenterPanel() {
JPanel panel = new JPanel();
panel.setMinimumSize(new Dimension(250, 600));
panel.setPreferredSize(new Dimension(250, 600));
panel.setLayout(new BorderLayout());
panel.setVisible(true);
panel.setBackground(Color.lightGray);
panel.setName("panel2");
JLabel label = new JLabel("点击自定义改变我~");
label.setForeground(Color.RED);
label.setName("label");
panel.add(label); return panel;
}
private class ButtonAction extends MouseAdapter{
JFrame frame_;
public ButtonAction(JFrame frame){
frame_ = frame;
} @Override
public void mousePressed(MouseEvent e) {
Component[] comps = this.frame_.getContentPane().getComponents();
for(Component comp : comps){
if(comp instanceof JPanel){
if ("panel2".equals(comp.getName())) {
for(Component label : ((JPanel) comp).getComponents()){
if("label".equals(label.getName())){
((JLabel)label).setText("变变变变变变变变~");
((JLabel)label).setForeground(Color.ORANGE);
}
}
;
}
}
}
} @Override
public void mouseReleased(MouseEvent e) {
Component[] comps = this.frame_.getContentPane().getComponents();
for(Component comp : comps){
if(comp instanceof JPanel){
if ("panel2".equals(comp.getName())) {
for(Component label : ((JPanel) comp).getComponents()){
if("label".equals(label.getName())){
((JLabel)label).setText("点击自定义改变我~");
((JLabel)label).setForeground(Color.RED);
}
}
;
}
}
}
}
}
public static void main(String[] args) {
Demo d = new Demo();
}
}
那个borderLayout好像有点问题 一开始想的简单了 我用girdbagLayout写的 有点麻烦 。。
钥匙一开始 jframe上没东西 你把它拖拽大一点 没仔细调