Java Swing中为什么已经import了awt和swing还是提示没有插入

1.import java.awt.*;
2.import java.awt.event.ActionEvent;
3.import java.awt.event.ActionListener;
4.import javax.swing.*;

本来就加了1和4,但是用到addActionListener的时候提示要把23加进去,1和4的写法难道不是已经
包括了23吗?为什么还要写23

1个回答

要先导入包,光imports是不够的。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
请问下java高手,这段swing中paint()代码为什么被执行了两次
我按照书上的介绍,写了一个swing中画图的代码,但是运行时发现他paint()执行了 两次,请问这是为什么呢 另外public void paint(Graphics g)在这段代码中是在哪个地方被调用的,我感觉只 是被重写,没有被调用啊,之前提问有人跟我说这是因为此处的paint算是Jframe的 事件,和方法不一样,但是我还是不理解,代码如下: ``` import java.awt.BorderLayout; import java.awt.Color; import java.awt.EventQueue; import java.awt.Font; import java.awt.FontMetrics; import java.awt.Graphics; import java.awt.Image; import java.awt.Rectangle; import java.awt.Shape; import java.awt.image.ImageObserver; import java.text.AttributedCharacterIterator; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; public class Gtonew extends JFrame { private JPanel contentPane; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { Gtonew frame = new Gtonew(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public Gtonew() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 450, 300); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); contentPane.setLayout(new BorderLayout(0, 0)); setContentPane(contentPane); } public void paint(Graphics g){ g.drawRoundRect(300, 150, 50, 50, 100, 100); System.out.println("wobeidiaoyongle");//此处打印没执行了2次 } } ```
直接 getContentPane()和 JPanel contentPane = new JPanel() 有区别吗?为什么后者我的控件不会显示出来呢?
import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JPanel; import javax.swing.JTextField; public class Frame extends JFrame { JPanel contentPane; public Frame() { setTitle("esjypt"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(500, 300); setVisible(true); contentPane=new JPanel(); setContentPane(contentPane); contentPane.setLayout(null); JTextField txtfld=new JTextField(); //txtfld.setVisible(true); contentPane.add(txtfld); JButton button=new JButton("按钮"); //txtfld.setVisible(true); add(button); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { txtfld.setVisible(true); txtfld.setText("你按了按钮"); } }); } public static void main(String[] args) { Frame frame=new Frame(); } } 这是使用第二种方法,为什么我的button不显示呢?
java swing中无法添加控件
之前觉得是jdk的问题,重装之后依旧未果,求大神解答。 ## 代码 这就是个很简单入门的demo,可是就是无法运行,运行之后会停止很久然后抛出下面的异常。 ``` import java.awt.Container; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JTextField; import org.omg.CORBA.PUBLIC_MEMBER; public class GameGUI extends JFrame { public GameGUI() { super("test"); this.setSize(400,400); Container container = this.getContentPane(); container.setLayout(new FlowLayout()); JTextField m = new JTextField(10); JLabel o = new JLabel("m:"); JButton j = new JButton("ok"); container.add(o); container.add(m); container.add(j); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } public static void main(String[] args) { // TODO Auto-generated method stub GameGUI gameGUI = new GameGUI(); } } ```
java swing 按钮事件处理问题
import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Hello { static int i; public static void main (String args[]) { String s[] = {"7","8","9","4","5","6","1","2","3"}; JButton b[] = new JButton[9]; JFrame frame = new JFrame(); frame.setLayout(new GridLayout(3,3,3,3)); for(i = 0; i<s.length; i++){ b[i] = new JButton(s[i]); frame.add(b[i]); } frame.setLocation(200,200); frame.setSize(380,390); frame.setVisible(true); for(i = 0; i<b.length; i++){ b[i].addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent arg) { if(arg.getSource() == b[i]){ System.out.println(b[i].getText()); } } }); } } } 编译不报错,运行后按下按钮报错: Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 9 at Hello$1.actionPerformed(Hello.java:24) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) at java.awt.Component.processMouseEvent(Component.java:6533) at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) at java.awt.Component.processEvent(Component.java:6298) at java.awt.Container.processEvent(Container.java:2236) at java.awt.Component.dispatchEventImpl(Component.java:4889) at java.awt.Container.dispatchEventImpl(Container.java:2294) at java.awt.Component.dispatchEvent(Component.java:4711) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466) at java.awt.Container.dispatchEventImpl(Container.java:2280) at java.awt.Window.dispatchEventImpl(Window.java:2746) at java.awt.Component.dispatchEvent(Component.java:4711) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.awt.EventQueue$4.run(EventQueue.java:731) at java.awt.EventQueue$4.run(EventQueue.java:729) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
java中只被实例化未声明时关于方法调用的问题
``` import java.awt.*; import javax.swing.*; public class Flow extends JFrame{ public Flow() { setTitle("This is a JFrame"); Container container = getContentPane(); setLayout(new FlowLayout(1,10,10)); for(int i = 10;i < 40;i++) { container.add(new Button("button" + i)); } setSize(500, 300); setVisible(true); setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); } public static void main(String[] args) { // TODO 自动生成的方法存根 new Flow(); } } ``` container.add(new Button("button" + i));中Button没有声明直接实例化了 这种情况下可以调用Button的方法吗 如果可以的话要怎样才可以调用呢
java swing gridbaglayout布局问题
我自定义一个面板,使用网格布局,一共是四行一列,第一行是一个jlable(放图片),第二行是一个 jtextfield(显示从数据库里调用的数据),第三行是一个jtextarea(显示从数据库里调用的数据) ,第四行是一个jbutton。jtextarea布局是使用全填充的(fill=both)。问题来了,每次itextarea 显示数据时总会超出它原本所规定好的大小,把第二行和第四行往上顶和往下压了,这个怎么也解决不了。在线等大牛回复! package cn.vr.swing.Jpanel; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; /* * author:黄龙 * time:2016.7.29 */ import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Image; import java.awt.Insets; import java.awt.Point; import java.awt.Rectangle; import java.awt.TextArea; import java.util.List; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; import javax.swing.JTextPane; import javax.swing.SwingUtilities; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.plaf.ButtonUI; import javax.swing.plaf.TextUI; import javax.swing.plaf.basic.BasicButtonUI; import javax.swing.plaf.basic.BasicTextPaneUI; import javax.swing.plaf.basic.BasicViewportUI; import javax.swing.text.BadLocationException; import javax.swing.text.EditorKit; import javax.swing.text.JTextComponent; import javax.swing.text.View; import javax.swing.text.Position.Bias; import org.apache.logging.log4j.core.config.DefaultConfigurationMonitor; import cn.vr.other.Datasearch; import cn.vr.po.Information; import cn.vr.swing.JButton.MyimgJbutton; import cn.vr.swing.JLable.MyimgLable; public class Imagepanel extends JPanel{ private MyimgLable jLabel; private MyimgJbutton jButton; private JTextField field; private JTextArea area; private Information information; Datasearch data; List<String> paths; private JLabel label; JScrollPane jScrollPa; public Imagepanel(Information information) { super(); // TODO Auto-generated constructor stub data=new Datasearch(); this.information=information; paths=data.Dataimages(information.getInfoId()); setLayout(new GridBagLayout()); GridBagConstraints constraints=new GridBagConstraints(); jLabel=new MyimgLable(paths.get(0)); System.out.println("width="+jLabel.getWidth()); jButton=new MyimgJbutton(System.getProperty("user.dir") +"/pic/圆角矩形.png"); jButton.setUI(new BasicButtonUI()); //jButton.setText("开始游戏"); field=new JTextField(); area=new JTextArea(); field.setText(information.getName()); area.setText(information.getIntroduce()); field.setForeground(Color.WHITE); area.setForeground(Color.WHITE); Font font1=new Font("宋体", Font.BOLD , 25); Font font2=new Font("TimesRoman", Font.PLAIN, 15); field.setFont(font1); area.setFont(font2); field.setEditable(false); area.setEditable(false); field.setPreferredSize(getMaximumSize()); area.setLineWrap(true); //area.setRows(getHeight()); //第一行 constraints.gridy=0; constraints.gridx=0; constraints.gridheight=1; constraints.weightx=100; constraints.weighty=50; constraints.fill=constraints.BOTH; add(jLabel, constraints); //第二行 constraints.gridy=1; constraints.gridx=0; constraints.gridheight=1; constraints.weightx=100; constraints.weighty=10; constraints.fill=constraints.HORIZONTAL; add(field, constraints); field.setOpaque(false); //第三行 constraints.gridy=2; constraints.gridx=0; constraints.weighty=20; constraints.fill=constraints.BOTH; //constraints.anchor=constraints.WEST; area.setOpaque(false); add(area, constraints); //第四行 constraints.gridy=3; constraints.gridx=0; constraints.weighty=20; constraints.fill=constraints.NONE; constraints.anchor=constraints.EAST; constraints.ipadx=80; constraints.ipady=25; add(jButton, constraints); setOpaque(false); }
JAVA Swing中嵌入html代码,但是一直出错
import java.awt.BorderLayout; import java.awt.Container; import java.io.File; import java.io.IOException; import java.net.URL; import java.net.URLClassLoader; import javax.swing.JEditorPane; import javax.swing.JFrame; import javax.swing.WindowConstants; import javax.swing.event.HyperlinkEvent; import javax.swing.event.HyperlinkListener; import javax.swing.text.html.HTMLDocument; import javax.swing.text.html.HTMLFrameHyperlinkEvent; public class Test1 extends JFrame implements HyperlinkListener { public Test1(){ Container c = getContentPane(); setSize(539,412); setTitle("QQ登录界面"); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); JEditorPane pane = new JEditorPane(); pane.setContentType("text/html"); pane.setEditable(false); pane.addHyperlinkListener(this); File file = new File("http://E://Eclipse//workspace//QQ//src//qq//QQ.html"); String path = file.getAbsolutePath(); try { pane.setPage(path); } catch (IOException e) { // TODO 自动生成的 catch 块 //System.out.println("读取页面 " + path + " 出错. " + ); e.printStackTrace(); } pane.setBounds(0, 0, 539, 199); c.add(pane); setVisible(true); } @Override public void hyperlinkUpdate(HyperlinkEvent e) { // TODO 自动生成的方法存根 if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { JEditorPane pane = (JEditorPane) e.getSource(); if (e instanceof HTMLFrameHyperlinkEvent) { HTMLFrameHyperlinkEvent evt = (HTMLFrameHyperlinkEvent) e; HTMLDocument doc = (HTMLDocument) pane.getDocument(); doc.processHTMLFrameHyperlinkEvent(evt); } else { try { pane.setPage(e.getURL()); } catch (Throwable t) { t.printStackTrace(); } } } } public static void main(String[] args) { // TODO 自动生成的方法存根 new Test1(); } } 图片是运行结果和异常![图片说明](https://img-ask.csdn.net/upload/201705/19/1495169182_697625.png) ![图片说明](https://img-ask.csdn.net/upload/201705/19/1495169193_249812.png)
Java中swing编程文本面板的问题
想做一个记录的程序,将文本框中输入的内容显示在列表中,现在能够添加,但是在删除时,数据模型中的数据删除成功,但是在列表视图中仍然存在,仅仅是有显示,但点击后没反应。 ``` public class Address { protected String name; protected String email; public Address(String _name,String _email){ name=_name; email=_email; } public String toString(){ return name; } } ``` ``` package higher; import java.awt.BorderLayout; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.DefaultListModel; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextField; import javax.swing.ListSelectionModel; import javax.swing.border.TitledBorder; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; public class EmailListing extends JFrame implements ActionListener, ListSelectionListener { private JButton add=new JButton("Add"); private JButton del=new JButton("Delete"); private DefaultListModel data =new DefaultListModel(); private JList list=new JList(data);//数据模型放在列表中 private JTextField name= new JTextField(); private JTextField email= new JTextField(); public EmailListing(){ super("Email List"); JPanel buttons=new JPanel(new FlowLayout()); buttons.add(add); add.addActionListener(this); buttons.add(del); del.addActionListener(this); JPanel input =new JPanel(new GridLayout(2,2)); input.add(new JLabel("Name:")); input.add(name); input.add(new JLabel("Email:")); input.add(email); input.setBorder(new TitledBorder("address")); JScrollPane scrollList =new JScrollPane(list);//将列表放在带有滚动条的面板中 scrollList.setBorder(new TitledBorder("List")); setLayout(new BorderLayout()); getContentPane().add("North", input); getContentPane().add("South", buttons); getContentPane().add("Center", scrollList); list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); list.addListSelectionListener(this); email.addActionListener(this); validate();pack();setVisible(true); } public void delete(){ if(list.getSelectedIndex()>=0){ data.remove(list.getSelectedIndex()); name.setText(" "); email.setText(" "); } } public void add(){ if(!name.equals("")){ data.addElement(new Address(name.getText(),email.getText())); name.setText(" "); email.setText(" "); name.requestFocus(); } } @Override public void valueChanged(ListSelectionEvent arg0) { // TODO Auto-generated method stub if(!arg0.getValueIsAdjusting()){ Address address = (Address)data.get(list.getSelectedIndex()); name.setText(address.name); email.setText(address.email); } } @Override public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub if(arg0.getSource()==del){ delete(); } if(arg0.getSource()==add||arg0.getSource()==email){ add(); } } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub EmailListing el =new EmailListing(); } } ``` ![图片说明](https://img-ask.csdn.net/upload/201503/25/1427287490_11286.png) 以下是抛出的异常 ``` Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1 at java.util.Vector.elementData(Unknown Source) at java.util.Vector.elementAt(Unknown Source) at javax.swing.DefaultListModel.get(Unknown Source) at higher.EmailListing.valueChanged(EmailListing.java:81) at javax.swing.JList.fireSelectionValueChanged(Unknown Source) at javax.swing.JList$ListSelectionHandler.valueChanged(Unknown Source) at javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source) at javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source) at javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source) at javax.swing.DefaultListSelectionModel.removeIndexInterval(Unknown Source) at javax.swing.plaf.basic.BasicListUI$Handler.intervalRemoved(Unknown Source) at javax.swing.AbstractListModel.fireIntervalRemoved(Unknown Source) at javax.swing.DefaultListModel.remove(Unknown Source) at higher.EmailListing.delete(EmailListing.java:60) at higher.EmailListing.actionPerformed(EmailListing.java:91) at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.setPressed(Unknown Source) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.awt.EventQueue.access$200(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue$4.run(Unknown Source) at java.awt.EventQueue$4.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) ```
Java swing选项卡中有表格,表格中有按钮,按钮按不到
![成果图](https://oscimg.oschina.net/oscnet/up-f1f985da2b44ac32a58a6e778c7c15e22a1.JPEG) ``` package com.java.gui; import javax.swing.*; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumn; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; import java.awt.image.ImageConsumer; import java.net.URL; public class JTabbedPaneDemo extends JPanel { private JTabbedPane jTabbedPane = new JTabbedPane(); private String[] tabNames = {"选项卡1", "选项卡2", "表格"}; private ImageIcon icon = createImageIcon("middle.png"); public JTabbedPaneDemo() { layoutComponents(); } private void layoutComponents() { int i = 0; JPanel jpanelFirst = new JPanel(); jTabbedPane.addTab(tabNames[i++], icon, jpanelFirst, "fitst"); jTabbedPane.setMnemonicAt(0, KeyEvent.VK_0); JLabel jLabel1 = new JLabel("选项卡1:"); jpanelFirst.add(jLabel1); JTextField jTextField1 = new JTextField(20); jTextField1.setText("测试选项卡1"); jpanelFirst.add(jTextField1); JButton jButton1 = new JButton("提交"); jButton1.addActionListener((ActionEvent e) -> { JFrame jFrame = new JFrame(); JLabel jLabel = new JLabel(); jLabel.setIcon(icon); jFrame.add(jLabel); JOptionPane.showMessageDialog(jFrame, "提交成功!!!", "选项卡1提交", JOptionPane.INFORMATION_MESSAGE); }); jpanelFirst.add(jButton1); JPanel jpanelSecond = new JPanel(); // 加入第2个页面 jTabbedPane.addTab(tabNames[i++], icon, jpanelSecond, "second"); // 设置快捷键为1 jTabbedPane.setMnemonicAt(1, KeyEvent.VK_1); JLabel jLabel2 = new JLabel("选项卡2:"); jpanelSecond.add(jLabel2); JTextField jTextField2 = new JTextField(20); jTextField2.setText("测试选项卡2"); jpanelSecond.add(jTextField2); JButton jButton2 = new JButton("提交"); jButton2.addActionListener((ActionEvent e) -> { JOptionPane.showMessageDialog(null, "提交成功!!!", "选项卡2提交", JOptionPane.INFORMATION_MESSAGE); }); jpanelSecond.add(jButton2); JPanel jpanel3 = new JPanel(); jTabbedPane.addTab(tabNames[i++], icon, jpanel3, "第三个"); jTabbedPane.setMnemonicAt(2, KeyEvent.VK_2); String[] columsNames = {"序号", "姓名", "语文", "数学", "英语", "总分", "操作"}; Object[][] rowData = { {1, "张三", 80, 80, 80, 240, null}, {2, "John", 70, 80, 90, 240, null}, {3, "Sue", 70, 70, 70, 210, null}, {4, "Jane", 80, 70, 60, 210, null}, {5, "Joe_05", 80, 70, 60, 210, null}, {6, "Joe_06", 80, 70, 60, 210, null}, {7, "Joe_07", 80, 70, 60, 210, null}, {8, "Joe_08", 80, 70, 60, 210, null}, {9, "Joe_09", 80, 70, 60, 210, null}, {10, "Joe_10", 80, 70, 60, 210, null}, {11, "Joe_11", 80, 70, 60, 210, null}, {12, "Joe_12", 80, 70, 60, 210, null}, {13, "Joe_13", 80, 70, 60, 210, null}, {14, "Joe_14", 80, 70, 60, 210, null}, {15, "Joe_15", 80, 70, 60, 210, null}, {16, "Joe_16", 80, 70, 60, 210, null}, {17, "Joe_17", 80, 70, 60, 210, null}, {18, "Joe_18", 80, 70, 60, 210, null}, {19, "Joe_19", 80, 70, 60, 210, null}, {20, "Joe_20", 80, 70, 60, 210, null} }; JTable table = new JTable(rowData, columsNames); // 设置表格内容颜色 table.setForeground(Color.BLACK); // 字体颜色 table.setFont(new Font(null, Font.PLAIN, 14)); // 字体样式 table.setSelectionForeground(Color.DARK_GRAY); // 选中后字体颜色 table.setSelectionBackground(Color.LIGHT_GRAY); // 选中后字体背景 table.setGridColor(Color.GRAY); // 设置行高 table.setRowHeight(30); // 第一列列宽设置为40 table.getColumnModel().getColumn(0).setPreferredWidth(40); // 设置滚动面板视口大小(超过该大小的行数据,需要拖动滚动条才能看到) table.setPreferredScrollableViewportSize(new Dimension(800, 300)); table.getColumnModel().getColumn(6).setCellRenderer(new MyButtonRender()); DefaultTableModel defaultTableModel = new DefaultTableModel(); defaultTableModel.addRow(new Object[]{3, "Sue", 70, 70, 70, 210, null}); JScrollPane jsp = new JScrollPane(table); jpanel3.add(jsp); setLayout(new GridLayout(1, 1)); add(jTabbedPane); } private ImageIcon createImageIcon(String path) { URL url = JTabbedPaneDemo.class.getResource(path); if (url == null) { System.out.println("the image " + path + " is not exist!"); return null; } return new ImageIcon(url); // return new ImageIcon("/Users/mt-mac/IdeaProjects/JavaGUI/src/main/java/com/java/gui/middle.png"); } public static void main(String[] args) { SwingUtilities.invokeLater(() -> { JFrame jFrame = new JFrame(); jFrame.setLayout(null); jFrame.setVisible(true); jFrame.setContentPane(new JTabbedPaneDemo()); jFrame.setSize(800, 800); }); } public class MyButtonRender implements TableCellRenderer { private JPanel jPanel; private JButton jButton; public MyButtonRender() { initButton(); initPanel(); jPanel.add(jButton); } private void initPanel() { jPanel = new JPanel(); jPanel.setLayout(null); } private void initButton() { jButton = new JButton(); jButton.setBounds(2, 3, 80, 30); jButton.addActionListener((ActionEvent e) -> { System.out.println("" + e.getActionCommand()); System.out.println(jButton.getText()); }); } @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { jButton.setText("编辑"); return jPanel; } } } ```
java swing gridbaglayout中添加两个竖着的滚动条jscrollpanel
![图片说明](https://img-ask.csdn.net/upload/201611/13/1479044373_202624.jpg) 如图,我需要垂直添加两个JScrollPane。而他们俩分配的大小不一样,所以我用了GridBagLayout布局。但我在实际操作的时候发现,GridBagLayout只能设置相对的大小。而JScrollPane必须超过大小才显示滚动条,所以他们俩矛盾了。最后直接不显示了。求教 代码如图: import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.GridLayout; import java.awt.ScrollPane; import java.awt.Toolkit; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JSplitPane; /** * @author JiaWenRuo * @date 2016-10-18 下午12:42:17 * @version * @TODO */ public class Test1 extends JFrame{ /** * @param args */ JScrollPane jScrollPane; JPanel jPanel; JLabel jLabel; JSplitPane jSplitPane; public Test1(){ setSize(Toolkit.getDefaultToolkit().getScreenSize().width, Toolkit.getDefaultToolkit().getScreenSize().height/6); GridBagLayout gridBagLayout = new GridBagLayout(); setLayout(gridBagLayout); GridBagConstraints c = new GridBagConstraints(); jLabel = new JLabel("ss");//上边随便用标签代替 c.weightx =100; c.weighty =100; c.gridwidth = GridBagConstraints.REMAINDER; c.gridheight = 1; c.gridx= 0; c.gridy = 0; gridBagLayout.setConstraints(jLabel, c); add(jLabel); jPanel = new JPanel(new GridLayout(10,1)); for (int i = 0; i < 10; i++) { jPanel.add(new JButton("ss")); } //下边滚动显示10个按钮,出不来效果 jScrollPane = new JScrollPane(jPanel,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); c.weightx =100; c.weighty =0; c.gridwidth = GridBagConstraints.REMAINDER; c.gridheight = 1; c.gridx= 0; c.gridy = 1; gridBagLayout.setConstraints(jScrollPane, c); add(jScrollPane); } public static void main(String[] args) { // TODO Auto-generated method stub new Test1().setVisible(true); } } 现在直接不显示,是这样的![图片说明](https://img-ask.csdn.net/upload/201611/13/1479044459_898836.png)
关于java swing 为什么界面空白
package com.bbm.view; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.GridLayout; import java.awt.HeadlessException; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.SwingConstants; import javax.swing.border.TitledBorder; public class BookBorrow extends JFrame { private static final long serivaVersionUID = 1L; private JPanel readerborrow_infoJP,bookborrowJP,buttonJP,readerinfoJP,reader_resultJP; private JScrollPane jscrollPane; private JTable jtable; private JLabel readeridJL,readernameJL,readertypeJL,ISBNJL,booktypeJL,booknameJL,authorJL,publishJL,publishdateJL,printtimeJL,unitpriceJL,nowdateJL,operatorJL; private JTextField readeridJTF,readernameJTF,readertypeJTF,ISBNJTF,booktypeJTF,booknameJTF,authorJTF,publishJTF,publishdateJTF,printtimeJTF,unitpriceJTF,nowdateJTF,operatorJTF; private JButton borrowJB,closeJB; public BookBorrow(){ setBounds(200,200,700,700); setTitle("图书借阅"); readerborrow_infoJP = new JPanel(new BorderLayout()); TitledBorder tb1 = new TitledBorder("读者借阅信息"); readerborrow_infoJP.setBorder(tb1); readerinfoJP = new JPanel(); readeridJL = new JLabel("读者编号:"); readeridJL.setHorizontalAlignment(SwingConstants.CENTER); readerinfoJP.add(readeridJL); readeridJTF = new JTextField(); readeridJTF.setColumns(10); readerinfoJP.add(readeridJTF); readernameJL = new JLabel("读者姓名:"); readernameJL.setHorizontalAlignment(SwingConstants.CENTER); readerinfoJP.add(readernameJL); readernameJTF = new JTextField(); readernameJTF.setColumns(10); readerinfoJP.add(readernameJTF); readertypeJL = new JLabel("读者类别:"); readertypeJL.setHorizontalAlignment(SwingConstants.CENTER); readerinfoJP.add(readertypeJL); readertypeJTF = new JTextField(); readertypeJTF.setColumns(10); readerinfoJP.add(readertypeJTF); readerborrow_infoJP.add(readerinfoJP,BorderLayout.NORTH); reader_resultJP = new JPanel(); jscrollPane = new JScrollPane(); jscrollPane.setPreferredSize(new Dimension(400,200)); jtable = new JTable(); jtable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); jscrollPane.setViewportView(jtable); reader_resultJP.add(jscrollPane); readerborrow_infoJP.add(reader_resultJP,BorderLayout.CENTER); this.add(readerborrow_infoJP,BorderLayout.NORTH); bookborrowJP = new JPanel(); TitledBorder tb2 = new TitledBorder("图书借阅"); bookborrowJP.setBorder(tb2); GridLayout gridLayout = new GridLayout(5, 4, 8, 8); bookborrowJP.setLayout(getLayout()); ISBNJL = new JLabel("ISBN:"); ISBNJL.setHorizontalAlignment(SwingConstants.CENTER); bookborrowJP.add(ISBNJL); ISBNJTF = new JTextField(); bookborrowJP.add(ISBNJTF); booktypeJL = new JLabel("类别:"); booktypeJL.setHorizontalAlignment(SwingConstants.CENTER); bookborrowJP.add(booktypeJL); booktypeJTF = new JTextField(); bookborrowJP.add(booktypeJTF); booknameJL = new JLabel("书名:"); booknameJL.setHorizontalAlignment(SwingConstants.CENTER); bookborrowJP.add(booknameJL); booknameJTF = new JTextField(); bookborrowJP.add(booknameJTF); authorJL = new JLabel("作者:"); authorJL.setHorizontalAlignment(SwingConstants.CENTER); bookborrowJP.add(authorJL); authorJTF = new JTextField(); bookborrowJP.add(authorJTF); publishJL = new JLabel("出版社:"); publishJL.setHorizontalAlignment(SwingConstants.CENTER); bookborrowJP.add(publishJL); publishJTF = new JTextField(); bookborrowJP.add(publishJTF); publishdateJL = new JLabel("出版日期:"); publishdateJL.setHorizontalAlignment(SwingConstants.CENTER); bookborrowJP.add(publishdateJL); publishdateJTF = new JTextField(); bookborrowJP.add(publishdateJTF); printtimeJL = new JLabel("印刷次数:"); printtimeJL.setHorizontalAlignment(SwingConstants.CENTER); bookborrowJP.add(printtimeJL); printtimeJTF = new JTextField(); bookborrowJP.add(printtimeJTF); unitpriceJL = new JLabel("单价:"); unitpriceJL.setHorizontalAlignment(SwingConstants.CENTER); unitpriceJTF = new JTextField(); bookborrowJP.add(unitpriceJTF); nowdateJL = new JLabel("当前日期:"); nowdateJL.setHorizontalAlignment(SwingConstants.CENTER); bookborrowJP.add(nowdateJL); nowdateJTF = new JTextField(); bookborrowJP.add(nowdateJTF); operatorJL = new JLabel("操作人员:"); operatorJL.setHorizontalAlignment(SwingConstants.CENTER); bookborrowJP.add(operatorJL); operatorJTF = new JTextField(); bookborrowJP.add(operatorJTF); this.add(bookborrowJP,BorderLayout.CENTER); buttonJP = new JPanel(); borrowJB = new JButton("借阅"); closeJB = new JButton("关闭"); buttonJP.add(borrowJB); buttonJP.add(closeJB); this.add(buttonJP,BorderLayout.SOUTH); this.setVisible(true); this.setResizable(false); } public static void main(String[] args) { new BookBorrow(); } }
java的swing程序设计,为窗体添加多个复选框组件
本人在练习java的swing程序设计,想为窗体添加多个复选框组件,目标是达到下面图片的效果 ![CSDN移动问答][1] 我的源代码是这样的: import java.awt.BorderLayout; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.WindowConstants; public class CheckBoxTest extends JFrame { private static final long serialVersionUID = -5028523145642314067L; public static void main(String[] args) { new CheckBoxTest(); } public CheckBoxTest() { Container c = getContentPane(); JPanel panel1 = new JPanel(); JPanel panel2 = new JPanel(); final JTextArea jt = new JTextArea(20, 50); c.setLayout(new BorderLayout()); c.add(panel1, BorderLayout.NORTH); JScrollPane scrollPane = new JScrollPane(jt); panel1.add(scrollPane); c.add(panel2, BorderLayout.SOUTH); for (int i = 0; i < 3; i++) { final JButton jb = new JButton("button" + i); jb.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // TODO 自动生成的方法存根 if (jb.isSelected()) jt.append("复选框i被选中\n"); } }); panel2.add(jb); } setSize(200, 200); setVisible(true); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } } 可是我运行后的结果却是这样的: ![CSDN移动问答][2] [1]: http://img.my.csdn.net/uploads/201408/07/1407341831_8466.PNG [2]: http://img.my.csdn.net/uploads/201408/07/1407342169_9151.PNG 怎么点击按钮都没有反应。。。 本人自学java,希望有大神能帮帮忙。。。
程序基本组成框架和结构和具体的设计步骤以及程序流程图
程序代码我做好了。import java.awt.BorderLayout; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.io.FilenameFilter; import java.util.regex.Pattern; import javax.swing.DefaultComboBoxModel; import javax.swing.DefaultListModel; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextField; import javax.swing.SwingUtilities; import javax.swing.border.TitledBorder;![![图片说明](https://img-ask.csdn.net/upload/201507/07/1436238914_992738.png)图片说明](https://img-ask.csdn.net/upload/201507/07/1436238910_193805.png)
java Swing JPanel 怎么修改默认布局
<pre name="code" class="java">import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.Container; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.GridLayout; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.io.File; import javax.swing.BorderFactory; import javax.swing.JFrame; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.ScrollPaneConstants; public class test_shu extends JPanel{ private JPanel center = new JPanel(new FlowLayout()); private testPanel[] t = new testPanel[5]; public test_shu() { init(); this.setPreferredSize(new Dimension(210, 500)); this.setLayout(new BorderLayout()); this.add(center,BorderLayout.CENTER); } private void init() { for(int i=0;i&lt;5;i++){ t[i] = new testPanel(); center.add(t[i]); } } public static void main(String[] args) { JFrame f = new JFrame(); f.setSize(210, 500); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.getContentPane().add(new test_shu()); f.setLocation(500, 80); f.pack(); f.setVisible(true); } } class testPanel extends JPanel{ public testPanel() { this.setBorder(BorderFactory.createLineBorder(Color.red)); this.setSize(200, 30); this.setPreferredSize(new Dimension(200, 30)); this.setMaximumSize(new Dimension(200, 30)); } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2d = (Graphics2D) g; g2d.setColor(Color.BLUE); g2d.fillRect(0, 0, this.getWidth(), this.getHeight()); } @Override public Dimension getPreferredSize() { return new Dimension(200, 30); } } </pre> <p> <span style="font-size: x-small;"><strong><span style="color: #ff6600;">上面的代码显示5个testPanel类型的JPanel,结果如下,可是这5个JPnael之间都有空隙,而我的代码中并没有设置这些空隙,这是什么原因?怎么让它消失?小弟刚学还不太明白</span></strong></span></p> <p><img alt="" width="163" height="385"></p> <p> </p> <div> </div>
关于java swing的鼠标事件
package te; import java.awt.BorderLayout; import java.awt.EventQueue; import java.awt.event.MouseAdapter; import java.awt.event.MouseListener; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.JList; import com.sun.glass.events.MouseEvent; public class MainFrame extends JFrame { private JPanel contentPane; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { MainFrame frame = new MainFrame(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public MainFrame() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 450, 300); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); contentPane.setLayout(new BorderLayout(0, 0)); setContentPane(contentPane); JList list = new JList(); contentPane.add(list, BorderLayout.CENTER); list.addMouseListener(new MouseAdapter(){ public void mouseClicked(MouseEvent e){ if(e.getClickCount==2) {} } }); } } 比如如上建立JList,添加鼠标监听后,无法使用getclickcount()方法。而把JList单独拿出去新建个类就可以重写了。是不是因为跟MainFrame在一起所以没法重写mouseClicked方法?有没有办法在mainframe里用的?
刚学Java,不知道为什么有java.lang.NullPointException
``` java import java.awt.*; import javax.swing.*; public class Example1 { public static void main(String[] argv) { var jFrame=new JFrame("Example1"); jFrame.setSize(500,300); JButton[] jButtons=new JButton[5]; jButtons[0].setText("Up"); jButtons[1].setText("Left"); jButtons[2].setText("Center"); jButtons[3].setText("Right"); jButtons[4].setText("Down"); jFrame.add(jButtons[0],BorderLayout.NORTH); jFrame.add(jButtons[1],BorderLayout.WEST); jFrame.add(jButtons[2],BorderLayout.CENTER); jFrame.add(jButtons[3],BorderLayout.EAST); jFrame.add(jButtons[4],BorderLayout.SOUTH); jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jFrame.setVisible(true); } } ``` Exception in thread "main" java.lang.NullPointerException at Example1.main(Example1.java:9) Process finished with exit code 1
Java画图第一次和第二次怎么画的位置不一样?
主类初始化时图片: ![图片说明](https://img-ask.csdn.net/upload/202003/19/1584614120_814515.jpg) 调用new MyPanel().paint(getGraphics());时的图片: ```java package wzq; import java.awt.Color; import java.awt.Container; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.MouseInfo; import java.awt.Point; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.JFrame; import javax.swing.JPanel; public class Wzq extends JFrame //五子棋 { private static final long serialVersionUID = 1L; static final int NONE=0; //空常量 static final int WHITE=1; //表示颜色的常量,白色 static final int BLACK=2; //表示颜色的常量,黑色 static final int PVP=3; //模式常量,两个玩家对下 static final int PVAI=4; //模式常量,玩家和电脑下 static final Color LBROWN=new Color(220,210,134); //黄棕色 static final Color LBLACK=new Color(20,20,20); //灰黑色 static final Color DWHITE=new Color(240,240,240); //灰白色 Mark[][] marks=new Mark[29][29]; //棋子数组(29*29,剩下10格为了方便遍历不出错而空出) Container container=getContentPane(); int player=BLACK; //此时下棋的人(黑白) double mx=0; //鼠标坐标 double my=0; int x1=0; //鼠标在棋盘上的坐标 int y1=0; int mode=PVP; //游戏模式(玩具对下或玩具和电脑下) public class MyPanel extends JPanel { private static final long serialVersionUID = 1L; public void paint(Graphics g1) { super.paint(g1); Graphics2D g=(Graphics2D)g1; g.setColor(LBROWN); //绘制棋版↓ g.fillRect(0,100,400,400); g.setColor(Color.BLACK); for(int i=0;i<19;i++) { g.drawLine(i*20+10,100,i*20+10,500); //画棋盘线 g.drawLine(0,i*20+110,400,i*20+110); } for(int x=0;x<3;x++) //画棋盘上的点 { for(int y=0;y<3;y++) g.fillOval(x*20*7+45,y*20*7+145,10,10); } g.setColor(Color.RED); g.drawRect(0,100,380,380); //绘制棋盘方框 绘制棋盘↑ for(int x=0;x<19;x++) { for(int y=0;y<19;y++) marks[x+5][y+5].draw(g,x,y); } } } public class ListenMouse implements MouseListener //鼠标监听器 { public void mouseClicked(MouseEvent e) { Point p=MouseInfo.getPointerInfo().getLocation(); mx=p.getX()-getX(); my=p.getY()-getY(); if(my<100) return; x1=(int)(mx/20); //把鼠标坐标转换为屏幕上的坐标 y1=(int)((my-100)/20); if(mode==PVP) //玩具对下的时候下棋 { if(!addMark(x1,y1,player)) return; if(player==BLACK) player=WHITE; else if(player==WHITE) player=BLACK; } new MyPanel().paint(getGraphics()); } public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} } class Mark //棋子 { int color; //此棋的颜色 public Mark(int _player) //玩家(白,黑或空) { color=_player; if(player==BLACK) //一方下棋后,将下一次的下棋者设为另一方 player=WHITE; else if(player==WHITE) player=BLACK; } void draw(Graphics2D g,int x,int y) //在棋盘上画上自己 { switch(color) { case BLACK: g.setColor(LBLACK); break; case WHITE: g.setColor(DWHITE); break; case NONE: return; } g.fillOval(x*20+1,y*20+101,18,18); } } boolean addMark(int x,int y,int color) //添加棋子(返回值为是否添加成功,如果位置有棋子就失败) { if(marks[x+5][y+5].color!=NONE) return false; marks[x+5][y+5].color=color; return true; } public Wzq() { for(int x=0;x<29;x++) //给列表初始化,添加空棋子 { for(int y=0;y<29;y++) marks[x][y]=new Mark(NONE); } setTitle("五子棋"); setBounds(200,100,387,509); setResizable(false); setLayout(null); setContentPane(new MyPanel()); setDefaultCloseOperation(EXIT_ON_CLOSE); setVisible(true); addMouseListener(new ListenMouse()); } public static void main(String[] args) { new Wzq(); } } ```
java swing 登陆界面 空指针异常
我这里是一个简单的用户登录的程序,有两个Jpanel(pnlTop和主体部分),主体部分有user的JPanel,PassWord的JPanel。 其中,用户的密码、用户名信息都是存储在"information"路径下的"Customer.txt"文件里面的。 isCorrect()和checkInput()属于自定义的方法,用于检查输入和文件内的信息是否匹配。 ``` package UI; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JTextField; import javax.swing.border.EmptyBorder; import Controller.CustomerController; import Customer.Customer; import myComp.MyPicPanel; public class LoginForm extends BaseDialog{ private JPanel pnlMain = null; private JPanel pnlTop = null; private JPanel pnlUsername = null; private JPanel pnlPassword =null; private JPanel pnlButton = null; private JLabel lblUsername = null; private JLabel lblPassword= null; private JButton btnExit= null; private JButton btnLogin= null; private JTextField txtUsername= null; private JPasswordField txtPassword= null; public LoginForm(){ pnlTop = new MyPicPanel("images/2.jpg",400,90); pnlTop.setPreferredSize(new Dimension(400,90)); this.add(pnlTop, BorderLayout.NORTH); pnlMain = new JPanel(); pnlMain.setLayout(new BorderLayout()); pnlMain.setBorder(new EmptyBorder(5,0,0,0)); pnlMain.setBackground(Color.LIGHT_GRAY); this.add(pnlMain, BorderLayout.CENTER); initUI(); } public void initUI(){ //user name panel pnlUsername = new JPanel(); pnlUsername.setPreferredSize(new Dimension(this.getWidth(),60)); pnlUsername.setBorder(new EmptyBorder(10,0,0,0)); pnlMain.add(pnlUsername,BorderLayout.NORTH); //password panel pnlPassword = new JPanel(); pnlPassword.setPreferredSize(new Dimension(this.getWidth(),60)); pnlMain.add(pnlPassword,BorderLayout.CENTER); //button panel pnlButton = new JPanel(); pnlButton.setPreferredSize(new Dimension(this.getWidth(),60)); pnlMain.add(pnlButton,BorderLayout.SOUTH); addUsername(pnlUsername); addPassword(pnlPassword); addButton(pnlButton); } public ActionListener onclickListener = new ActionListener(){ @Override public void actionPerformed(ActionEvent e){ JButton jb = (JButton)e.getSource(); if(jb.getActionCommand().equals("login")){ if(checkInput()){ if(isCorrect()){ Mainform main = new Mainform(); dispose(); } }else{ JOptionPane.showMessageDialog(null, "登录失败","Gourmet Coffee System", JOptionPane.ERROR_MESSAGE); } }else if(jb.getActionCommand().equals("exit")){ System.exit(0); } } }; private void addPassword(JPanel pnlPassword) { JLabel lblPassword = new JLabel("Password"); lblPassword.setFont(new Font("Microsoft YaHei UI",Font.BOLD,20)); pnlPassword.add(lblPassword); txtPassword = new JPasswordField(10); pnlPassword.add(txtPassword); } private void addUsername(JPanel pnlUsername) { JLabel lblUsername = new JLabel("Account"); lblUsername.setFont(new Font("Microsoft YaHei UI",Font.BOLD,20)); pnlUsername.add(lblUsername); txtUsername = new JTextField(10); pnlUsername.add(txtUsername); } //默认FlowLayout private void addButton(JPanel pnlButton) { btnLogin = new JButton("Login"); btnLogin.setActionCommand("login"); btnLogin.addActionListener(onclickListener); pnlButton.add(btnLogin); btnExit = new JButton("Exit"); btnExit.setActionCommand("exit"); btnExit.addActionListener(onclickListener); pnlButton.add(btnExit); } public boolean isCorrect(){ boolean flag = true; CustomerController userManager = new CustomerController(); ArrayList<Customer> customers = userManager.readObject("information","Customer.txt"); for(Customer customer: customers){ if(customer.getAccount().equals(txtUsername.getText().trim())) { if((String.valueOf(txtPassword.getPassword().equals(customer.getPassword()))) != null){ flag = true; } } } return flag; } public boolean checkInput(){ boolean flag = true; if(txtUsername.getText().trim().isEmpty()){ this.showMessage("账号不许为空!"); txtUsername.requestFocus(); flag = false; } if(String.valueOf(txtPassword.getPassword()).trim().isEmpty()){ this.showMessage("密码不许为空!"); txtPassword.requestFocus(); flag = false; } return flag; } public void showMessage(String msg){ JOptionPane.showMessageDialog(null, msg,this.getTitle(),JOptionPane.ERROR_MESSAGE); } } ``` 输出界面是这样: ![图片说明](https://img-ask.csdn.net/upload/201701/05/1483622006_749594.png) 但是每次输入用户名和密码(只要不是空,无论输入什么)都会报空指针异常。 这是异常片段: ``` Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at UI.Mainform.removeButton(Mainform.java:134) at UI.Mainform.<init>(Mainform.java:71) at UI.LoginForm$1.actionPerformed(LoginForm.java:95) ``` 折磨了我整整一个下午加晚上…明天就要交了 求救啊各位大佬……
Java Swing窗体显示有问题,为什么呢?
![图片说明](https://img-ask.csdn.net/upload/201505/16/1431790514_72339.png) 代码如下: ``` import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import java.awt.GridLayout; public class Display extends JFrame{ private JPanel jp = new JPanel(); private JMenuBar menu = new JMenuBar(); private JMenu m1,m2,m3; public JButton b[]; public Container container = getContentPane(); public Display() { container.setLayout(new GridLayout(4,4,3,3)); addKeyListener(this); m1 = new JMenu("选择"); m2 = new JMenu("帮助"); m3 = new JMenu("开始"); m1.add(m3); menu.add(m1); menu.add(m2); b = new JButton[17]; this.Init(); for(int i=1;i<=16;i++){ b[i] = new JButton(); b[i].setText("0"); b[i].setRolloverEnabled(false); container.add(b[i]); } public static void main(String[] args) { Display d = new Display(); Display.displayOnDesktopCenter(d); } } ``` 不知道为什么显示会变成那个样子,而且一按那些按钮按钮上的文字会消失一部分,就像那个按钮边框消失一半一样。 补充:换了三个jdk版本也无济于事,换了Eclipse版本也是不行,所以我想应该是代码问题。
在中国程序员是青春饭吗?
今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...
【JSON解析】浅谈JSONObject的使用
简介 在程序开发过程中,在参数传递,函数返回值等方面,越来越多的使用JSON。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,同时也易于机器解析和生成、易于理解、阅读和撰写,而且Json采用完全独立于语言的文本格式,这使得Json成为理想的数据交换语言。 JSON建构于两种结构: “名称/值”对的集合(A Collection of name/va...
《MySQL 性能优化》之理解 MySQL 体系结构
本文介绍 MySQL 的体系结构,包括物理结构、逻辑结构以及插件式存储引擎。
程序员请照顾好自己,周末病魔差点一套带走我。
程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。
一名大专同学的四个问题
【前言】   收到一封来信,赶上各种事情拖了几日,利用今天要放下工作的时机,做个回复。   2020年到了,就以这一封信,作为开年标志吧。 【正文】   您好,我是一名现在有很多困惑的大二学生。有一些问题想要向您请教。   先说一下我的基本情况,高考失利,不想复读,来到广州一所大专读计算机应用技术专业。学校是偏艺术类的,计算机专业没有实验室更不用说工作室了。而且学校的学风也不好。但我很想在计算机领...
复习一周,京东+百度一面,不小心都拿了Offer
京东和百度一面都问了啥,面试官百般刁难,可惜我全会。
Java 14 都快来了,为什么还有这么多人固守Java 8?
从Java 9开始,Java版本的发布就让人眼花缭乱了。每隔6个月,都会冒出一个新版本出来,Java 10 , Java 11, Java 12, Java 13, 到2020年3月份,...
达摩院十大科技趋势发布:2020 非同小可!
【CSDN编者按】1月2日,阿里巴巴发布《达摩院2020十大科技趋势》,十大科技趋势分别是:人工智能从感知智能向认知智能演进;计算存储一体化突破AI算力瓶颈;工业互联网的超融合;机器间大规模协作成为可能;模块化降低芯片设计门槛;规模化生产级区块链应用将走入大众;量子计算进入攻坚期;新材料推动半导体器件革新;保护数据隐私的AI技术将加速落地;云成为IT技术创新的中心 。 新的画卷,正在徐徐展开。...
轻松搭建基于 SpringBoot + Vue 的 Web 商城应用
首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API ...
讲真,这两个IDE插件,可以让你写出质量杠杠的代码
周末躺在床上看《拯救大兵瑞恩》 周末在闲逛的时候,发现了两个优秀的 IDE 插件,据说可以提高代码的质量,我就安装了一下,试了试以后发现,确实很不错,就推荐给大家。 01、Alibaba Java 代码规范插件 《阿里巴巴 Java 开发手册》,相信大家都不会感到陌生,其 IDEA 插件的下载次数据说达到了 80 万次,我今天又贡献了一次。嘿嘿。 该项目的插件地址: https://github....
Python+OpenCV实时图像处理
目录 1、导入库文件 2、设计GUI 3、调用摄像头 4、实时图像处理 4.1、阈值二值化 4.2、边缘检测 4.3、轮廓检测 4.4、高斯滤波 4.5、色彩转换 4.6、调节对比度 5、退出系统 初学OpenCV图像处理的小伙伴肯定对什么高斯函数、滤波处理、阈值二值化等特性非常头疼,这里给各位分享一个小项目,可通过摄像头实时动态查看各类图像处理的特点,也可对各位调参、测试...
2020年一线城市程序员工资大调查
人才需求 一线城市共发布岗位38115个,招聘120827人。 其中 beijing 22805 guangzhou 25081 shanghai 39614 shenzhen 33327 工资分布 2020年中国一线城市程序员的平均工资为16285元,工资中位数为14583元,其中95%的人的工资位于5000到20000元之间。 和往年数据比较: yea...
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
害怕面试被问HashMap?这一篇就搞定了!
声明:本文以jdk1.8为主! 搞定HashMap 作为一个Java从业者,面试的时候肯定会被问到过HashMap,因为对于HashMap来说,可以说是Java集合中的精髓了,如果你觉得自己对它掌握的还不够好,我想今天这篇文章会非常适合你,至少,看了今天这篇文章,以后不怕面试被问HashMap了 其实在我学习HashMap的过程中,我个人觉得HashMap还是挺复杂的,如果真的想把它搞得明明白...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
python爬取百部电影数据,我分析出了一个残酷的真相
2019年就这么匆匆过去了,就在前几天国家电影局发布了2019年中国电影市场数据,数据显示去年总票房为642.66亿元,同比增长5.4%;国产电影总票房411.75亿元,同比增长8.65%,市场占比 64.07%;城市院线观影人次17.27亿,同比增长0.64%。 看上去似乎是一片大好对不对?不过作为一名严谨求实的数据分析师,我从官方数据中看出了一点端倪:国产票房增幅都已经高达8.65%了,为什...
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
阿里面试,面试官没想到一个ArrayList,我都能跟他扯半小时
我是真的没想到,面试官会这样问我ArrayList。
曾经优秀的人,怎么就突然不优秀了。
职场上有很多辛酸事,很多合伙人出局的故事,很多技术骨干被裁员的故事。说来模板都类似,曾经是名校毕业,曾经是优秀员工,曾经被领导表扬,曾经业绩突出,然而突然有一天,因为种种原因,被裁员了,...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
良心推荐,我珍藏的一些Chrome插件
上次搬家的时候,发了一个朋友圈,附带的照片中不小心暴露了自己的 Chrome 浏览器插件之多,于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。 我下面就把我日常工作和学习中经常用到的一些 Chrome 浏览器插件分享给大家,随便一个都能提高你的“生活品质”和工作效率。 Markdown Here Markdown Here 可以让你更愉快的写邮件,由于支持 Markdown 直接转电子邮...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
作为一名大学生,如何在B站上快乐的学习?
B站是个宝,谁用谁知道???? 作为一名大学生,你必须掌握的一项能力就是自学能力,很多看起来很牛X的人,你可以了解下,人家私底下一定是花大量的时间自学的,你可能会说,我也想学习啊,可是嘞,该学习啥嘞,不怕告诉你,互联网时代,最不缺的就是学习资源,最宝贵的是啥? 你可能会说是时间,不,不是时间,而是你的注意力,懂了吧! 那么,你说学习资源多,我咋不知道,那今天我就告诉你一个你必须知道的学习的地方,人称...
立即提问